Ubuntu18.04にスタンドアロンモードでHadoopをインストールする方法
序章
Hadoopは、Javaベースのプログラミングフレームワークであり、安価なマシンのクラスター上での非常に大きなデータセットの処理と保存をサポートします。 これはビッグデータの分野で最初の主要なオープンソースプロジェクトであり、ApacheSoftwareFoundationによって後援されています。
Hadoopは、次の4つの主要なレイヤーで構成されています。
- Hadoop Common は、他のHadoopモジュールをサポートするユーティリティとライブラリのコレクションです。
- HDFS は、Hadoop分散ファイルシステムの略で、データをディスクに永続化する役割を果たします。
- YARN は、Yet Another Resource Negotiatorの略で、HDFSの「オペレーティングシステム」です。
- MapReduce は、Hadoopクラスターの元の処理モデルです。 作業をクラスターまたはマップ内に分散し、ノードからの結果を整理して、クエリへの応答に減らします。 Hadoopの3.xバージョンでは、他の多くの処理モデルを利用できます。
Hadoopクラスターのセットアップは比較的複雑であるため、プロジェクトには、Hadoopの学習、簡単な操作の実行、およびデバッグに適したスタンドアロンモードが含まれています。
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、インストールを確認するために含まれているMapReduceプログラムの例の1つを実行します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- sudo権限を持つroot以外のユーザーがいるUbuntu18.04サーバー:これらの権限を持つユーザーを設定する方法について詳しくは、 Ubuntu18.04を使用したサーバーの初期設定ガイドをご覧ください。
この前提条件を完了すると、Hadoopとその依存関係をインストールする準備が整います。
始める前に、ビッグデータの概念と用語の概要またはHadoopの概要もご覧ください。
ステップ1—Javaのインストール
まず、パッケージリストを更新します。
- sudo apt update
次に、Ubuntu18.04にデフォルトのJavaDevelopmentKitであるOpenJDKをインストールします。
- sudo apt install default-jdk
インストールが完了したら、バージョンを確認しましょう。
- java -version
Outputopenjdk 10.0.1 2018-04-17
OpenJDK Runtime Environment (build 10.0.1+10-Ubuntu-3ubuntu1)
OpenJDK 64-Bit Server VM (build 10.0.1+10-Ubuntu-3ubuntu1, mixed mode)
この出力は、OpenJDKが正常にインストールされたことを確認します。
ステップ2—Hadoopをインストールする
Javaを導入したら、 Apache Hadoopリリースページにアクセスして、最新の安定したリリースを見つけます。
インストールするリリースのbinaryに移動します。 このガイドでは、Hadoop3.0.3をインストールします。
次のページで、右クリックしてリリースバイナリへのリンクをコピーします。
サーバーでは、 wget
それをフェッチするには:
- wget http://www-us.apache.org/dist/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz
注: Apache Webサイトは動的に最適なミラーに誘導するため、URLが上記のURLと一致しない場合があります。
ダウンロードしたファイルが変更されていないことを確認するために、SHA-256を使用して簡単なチェックを行います。 リリースページに戻り、右クリックして、ダウンロードしたリリースバイナリのチェックサムファイルへのリンクをコピーします。
繰り返しますが、 wget
私たちのサーバーでファイルをダウンロードするには:
- wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-3.0.3/hadoop-3.0.3.tar.gz.mds
次に、検証を実行します。
- shasum -a 256 hadoop-3.0.3.tar.gz
Outputdb96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz
この値を、のSHA-256値と比較します。 .mds
ファイル:
- cat hadoop-3.0.3.tar.gz.mds
...
/build/source/target/artifacts/hadoop-3.0.3.tar.gz:
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A
...
大文字と小文字の違いとスペースは無視してかまいません。 ミラーからダウンロードしたファイルに対して実行したコマンドの出力は、apache.orgからダウンロードしたファイルの値と一致する必要があります。
ファイルが破損または変更されていないことを確認したので、 tar
とのコマンド -x
抽出するフラグ、 -z
解凍するには、 -v
詳細な出力の場合、および -f
ファイルから抽出することを指定します。 以下のコマンドでタブ補完を使用するか、正しいバージョン番号に置き換えてください。
- tar -xzvf hadoop-3.0.3.tar.gz
最後に、抽出したファイルをに移動します /usr/local
、ローカルにインストールされたソフトウェアの適切な場所。 必要に応じて、ダウンロードしたバージョンと一致するようにバージョン番号を変更します。
- sudo mv hadoop-3.0.3 /usr/local/hadoop
ソフトウェアを配置したら、環境を構成する準備が整います。
ステップ3—HadoopのJavaホームを構成する
Hadoopでは、環境変数として、またはHadoop構成ファイルでJavaへのパスを設定する必要があります。
Javaへの道、 /usr/bin/java
へのシンボリックリンクです /etc/alternatives/java
、これはデフォルトのJavaバイナリへのシンボリックリンクです。 我々は使用するだろう readlink
とともに -f
パスのすべての部分のすべてのシンボリックリンクを再帰的にたどるフラグ。 次に、 sed
トリミングする bin/java
出力から正しい値を取得します JAVA_HOME
.
デフォルトのJavaパスを見つけるには
- readlink -f /usr/bin/java | sed "s:bin/java::"
Output/usr/lib/jvm/java-11-openjdk-amd64/
この出力をコピーして、HadoopのJavaホームをこの特定のバージョンに設定できます。これにより、デフォルトのJavaが変更されても、この値は変更されません。 または、 readlink
ファイル内で動的にコマンドを実行して、Hadoopがシステムのデフォルトとして設定されているJavaバージョンを自動的に使用するようにします。
開始するには、 hadoop-env.sh
:
- sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh
次に、次のいずれかのオプションを選択します。
オプション1:静的な値を設定する
. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/
. . .
オプション2:Readlinkを使用して値を動的に設定する
. . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
. . .
注: Hadoopに関して、 JAVA_HOME
の hadoop-env.sh
環境に設定されている値を /etc/profile
またはユーザーのプロファイル。
ステップ4—Hadoopを実行する
これで、Hadoopを実行できるようになります。
- /usr/local/hadoop/bin/hadoop
OutputUsage: hadoop [OPTIONS] SUBCOMMAND [SUBCOMMAND OPTIONS]
or hadoop [OPTIONS] CLASSNAME [CLASSNAME OPTIONS]
where CLASSNAME is a user-provided Java class
OPTIONS is none or any of:
--config dir Hadoop config directory
--debug turn on shell script debug mode
--help usage information
buildpaths attempt to add class files from build tree
hostnames list[,of,host,names] hosts to use in slave mode
hosts filename list of hosts to use in slave mode
loglevel level set the log4j level for this command
workers turn on worker mode
SUBCOMMAND is one of:
. . .
ヘルプは、スタンドアロンモードで実行するようにHadoopを正常に構成したことを意味します。 付属のMapReduceプログラムの例を実行して、正しく機能していることを確認します。 これを行うには、というディレクトリを作成します input
ホームディレクトリにあり、Hadoopの構成ファイルをそのディレクトリにコピーして、それらのファイルをデータとして使用します。
- mkdir ~/input
- cp /usr/local/hadoop/etc/hadoop/*.xml ~/input
次に、次のコマンドを使用してMapReduceを実行できます hadoop-mapreduce-examples
プログラム、いくつかのオプションを備えたJavaアーカイブ。 そのを呼び出します grep
プログラム、に含まれる多くの例の1つ hadoop-mapreduce-examples
、続いて入力ディレクトリ、 input
および出力ディレクトリ grep_example
. MapReduce grepプログラムは、リテラル単語または正規表現の一致をカウントします。 最後に、正規表現を提供します allowed[.]*
単語の出現を見つけるために allowed
宣言文の中または最後。 式では大文字と小文字が区別されるため、文の先頭で大文字になっている場合、その単語は見つかりません。
- /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.0.3.jar grep ~/input ~/grep_example 'allowed[.]*'
タスクが完了すると、処理された内容と発生したエラーの概要が表示されますが、実際の結果は含まれていません。
Output . . .
File System Counters
FILE: Number of bytes read=1330690
FILE: Number of bytes written=3128841
FILE: Number of read operations=0
FILE: Number of large read operations=0
FILE: Number of write operations=0
Map-Reduce Framework
Map input records=2
Map output records=2
Map output bytes=33
Map output materialized bytes=43
Input split bytes=115
Combine input records=0
Combine output records=0
Reduce input groups=2
Reduce shuffle bytes=43
Reduce input records=2
Reduce output records=2
Spilled Records=4
Shuffled Maps =1
Failed Shuffles=0
Merged Map outputs=1
GC time elapsed (ms)=3
Total committed heap usage (bytes)=478150656
Shuffle Errors
BAD_ID=0
CONNECTION=0
IO_ERROR=0
WRONG_LENGTH=0
WRONG_MAP=0
WRONG_REDUCE=0
File Input Format Counters
Bytes Read=147
File Output Format Counters
Bytes Written=34
注:出力ディレクトリがすでに存在する場合、プログラムは失敗し、要約が表示されるのではなく、次のように出力されます。
Output . . .
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.apache.hadoop.util.RunJar.run(RunJar.java:244)
at org.apache.hadoop.util.RunJar.main(RunJar.java:158)
結果は出力ディレクトリに保存され、実行して確認できます。 cat
出力ディレクトリ:
- cat ~/grep_example/*
Output19 allowed.
1 allowed
MapReduceタスクは、19回の単語の出現を検出しました allowed
ピリオドが続き、そうでない場合は1回発生します。 サンプルプログラムを実行すると、スタンドアロンインストールが正しく機能し、システム上の非特権ユーザーが探索またはデバッグのためにHadoopを実行できることが確認されました。
結論
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、提供されているサンプルプログラムを実行して検証しました。 独自のMapReduceプログラムを作成する方法を学ぶには、例の背後にあるコードをウォークスルーするApacheHadoopのMapReduceチュートリアルにアクセスすることをお勧めします。 クラスターをセットアップする準備ができたら、Apache Foundation Hadoop ClusterSetupガイドを参照してください。