🐙

Hadoop環境できた -2回目の挑戦- ラズパイ4で

5 min read

前提は特にないです.ラズパイのシェルに入れてsudoが使えれば,Hadoopをスタンドアロン形式ではありますが動かせます

失敗記事はこちら

https://zenn.dev/yassh_i/articles/6c5cab552c3b49

ハード・ソフトウェア環境

ハード

  • マシン:Raspberry Pi 4 Model B Rev 1.4
    • debian version:10.4
    • カーネル:Linux raspberrypi 4.19.118-v7l+ #1311 SMP Mon Apr 27 14:26:42 BST 2020 armv7l GNU/Linux
    • memory:8GB

ソフト

  • Java:openjdk version "1.8.0_212"
  • Hadoop:3.2.2

失敗パターン

AWS EC2に作ろうとしたときもこれに気付いてなかった.Hadoopページのリンクアドレスをコピーすると,末尾がtar.gzになっているから,これをwgetすればtar.gzファイルが手に入ると思っていた.実際これはtar形式でもgz形式でもない.それはなぜかというと,リンクの飛ぶ先にまだページがある.つまりHTMLをwgetしていたのです.

↓ここのbinaryはwgetしてもできない
https://hadoop.apache.org/releases.html

失敗パターン検証

hadoop@raspberrypi:~ $ wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
--2021-01-25 19:51:13--  https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
www.apache.org (www.apache.org) をDNSに問いあわせています... 2a01:4f9:2a:185f::2, 2a01:4f9:2a:1a61::2, 95.216.24.32, ...
www.apache.org (www.apache.org)|2a01:4f9:2a:185f::2|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`hadoop-3.2.2.tar.gz' に保存中

hadoop-3.2.2.tar.gz               [  <=>                                             ]  29.76K   102KB/s 時間 0.3s

2021-01-25 19:51:15 (102 KB/s) - `hadoop-3.2.2.tar.gz' へ保存終了 [30474]

tarダメ

hadoop@raspberrypi:~ $ tar -xzvf hadoop-3.2.2.tar.gz
gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error is not recoverable: exiting now

ダウンロードしたファイルの形式はというと(fileコマンドで確認できます)

hadoop@raspberrypi:~ $ file hadoop-3.2.2.tar.gz
hadoop-3.2.2.tar.gz: HTML document, ASCII text, with very long lines

どうして,,,(自分のせい)

参考サイト

tomcat関連の記事でしたが,見つかりました

https://note.com/hallohallo_memo/n/n9ed2010870ed

成功パターン

ここの,downloads~からダウンロードできます

https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
hadoop@raspberrypi:~ $ wget https://downloads.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
--2021-01-25 20:01:57--  https://downloads.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
downloads.apache.org (downloads.apache.org) をDNSに問いあわせています... 2a01:4f8:10a:201a::2, 88.99.95.219
downloads.apache.org (downloads.apache.org)|2a01:4f8:10a:201a::2|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 395448622 (377M) [application/x-gzip]
`hadoop-3.2.2.tar.gz' に保存中

hadoop-3.2.2.tar.gz           100%[=================================================>] 377.13M  3.97MB/s 時間 65s

2021-01-25 20:03:04 (5.79 MB/s) - `hadoop-3.2.2.tar.gz' へ保存完了 [395448622/395448622]

ダウンロード量が段違い,,,

念のためfileコマンドで確認すると,

hadoop@raspberrypi:~ $ file hadoop-3.2.2.tar.gz
hadoop-3.2.2.tar.gz: gzip compressed data, last modified: Sun Jan  3 10:46:06 2021, from Unix, original size 957777920

解凍

下記コマンドで解凍できます

hadoop@raspberrypi:~ $ tar -xzvf hadoop-3.2.2.tar.gz

めっちゃログ出ます(Javaって感じっすね)

javaのインストール

JDKです.Java製のアプリを動かすだけで,javac(Javaのコンパイルコマンド)が使えないJREではないほうをいれます

hadoop@raspberrypi:~ $ sudo apt-get install openjdk-8-jdk

いろいろでます

次にjavaの場所を確認します

hadoop@raspberrypi:~ $ sudo update-alternatives --config java
リンクグループ java に 1 つの alternative のみがあります (/usr/bin/java が提供): /usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java
設定は行いません。

JAVA_HOMEの設定

hadoop@raspberrypi:~ $ sudo vi ~/.bashrc
hadoop@raspberrypi:~ $ sudo vi ~/.bashrc

下記を追記します.
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-armhf/jre/                             
export PATH=$PATH:$JAVA_HOME/bin

前述のsudo update-alternatives --config javaで出たパスそのままコピペではないので注意です

また,viエディタについて,操作方法がわからないときは下記を参考にしてください
https://prev.net-newbie.com/linux/commands/vi.html
一応,「Ctrl + End」でファイルの最後列の最後尾に行き
「O(オー)キー」で改行してインサートモード
書くもの書いたら,「:」→「w」→「q」→「Enter」でいけます

~/.bashrcは起動時に読み込まれるファイルなので,手動で読み込むかrebootをしましょう
ここでは手動で読み込みました

hadoop@raspberrypi:~ $ source ~/.bashrc

疑似分散モード

下記方法は疑似分散モードという,デバッグ用の方法らしいです.Javaプロセスはひとつしか立たないそうです

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SingleCluster.html

準備

hadoop@raspberrypi:~ $ mkdir input
hadoop@raspberrypi:~ $ cp hadoop-3.2.2/etc/hadoop/*.xml input
hadoop@raspberrypi:~ $ cd hadoop-3.2.2/

シングルノード実行

inputの中のxml全部に対して,grepコマンドを処理するコマンド

bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input output 'dfs[a-z.]+'

実行結果

inputの中のxml全部に対して,grepコマンドを処理するコマンド
hadoop@raspberrypi:~/hadoop-3.2.2 cat output/*
1 dfsadmin
hadoop@raspberrypi:~/hadoop-3.2.2 $ ls output/*
output/_SUCCESS output/part-r-00000

次回は

疑似分散モードと,完全分散モードに触れていこうと思います.おわり