Ubuntu16.04でスタンドアロンモードでHadoopをインストールする方法
序章
Hadoopは、Javaベースのプログラミングフレームワークであり、安価なマシンのクラスター上での非常に大きなデータセットの処理と保存をサポートします。 これはビッグデータの分野で最初の主要なオープンソースプロジェクトであり、ApacheSoftwareFoundationによって後援されています。
Hadoop 2.7は、次の4つの主要なレイヤーで構成されています。
- Hadoop Common は、他のHadoopモジュールをサポートするユーティリティとライブラリのコレクションです。
- HDFS は、Hadoop分散ファイルシステムの略で、データをディスクに永続化する役割を果たします。
- YARN は、Yet Another Resource Negotiatorの略で、HDFSの「オペレーティングシステム」です。
- MapReduce は、Hadoopクラスターの元の処理モデルです。 作業をクラスターまたはマップ内に分散し、ノードからの結果を整理して、クエリへの応答に減らします。 Hadoopの2.xバージョンでは、他の多くの処理モデルを利用できます。
Hadoopクラスターのセットアップは比較的複雑であるため、プロジェクトには、Hadoopの学習、簡単な操作の実行、およびデバッグに適したスタンドアロンモードが含まれています。
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、インストールを確認するために含まれているMapReduceプログラムの例の1つを実行します。
前提条件
このチュートリアルに従うには、次のものが必要です。
- sudo権限を持つroot以外のユーザーがいるUbuntu16.04サーバー:これらの権限を持つユーザーを設定する方法について詳しくは、 Ubuntu16.04を使用したサーバーの初期設定ガイドをご覧ください。
この前提条件を完了すると、Hadoopとその依存関係をインストールする準備が整います。
始める前に、ビッグデータの概念と用語の概要またはHadoopの概要もご覧ください。
ステップ1—Javaのインストール
まず、パッケージリストを更新します。
- sudo apt-get update
次に、Ubuntu16.04にデフォルトのJavaDevelopmentKitであるOpenJDKをインストールします。
- sudo apt-get install default-jdk
インストールが完了したら、バージョンを確認しましょう。
- java -version
Outputopenjdk version "1.8.0_91"
OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~16.04.1-b14)
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
この出力は、OpenJDKが正常にインストールされたことを確認します。
ステップ2—Hadoopをインストールする
Javaを導入したら、 Apache Hadoopリリースページにアクセスして、最新の安定したリリースを見つけます。 現在のリリースのバイナリに従ってください:
次のページで、右クリックして最新の安定版リリースバイナリのリンクをコピーします。
サーバーでは、 wget
それをフェッチするには:
- wget http://apache.mirrors.tds.net/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz
注: Apache Webサイトは動的に最適なミラーに誘導するため、URLが上記のURLと一致しない場合があります。
ダウンロードしたファイルが変更されていないことを確認するために、SHA-256を使用して簡単なチェックを行います。 リリースページに戻り、Apacheリンクをたどります。
ダウンロードしたバージョンのディレクトリを入力します。
最後に、 .mds
ダウンロードしたリリースのファイルを作成し、対応するファイルのリンクをコピーします。
ここでも、右クリックしてファイルの場所をコピーしてから、 wget
ファイルを転送するには:
- wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz.mds
次に、検証を実行します。
- shasum -a 256 hadoop-2.7.3.tar.gz
Outputd489df3808244b906eb38f4d081ba49e50c4603db03efd5e594a1e98b09259c2 hadoop-2.7.3.tar.gz
この値を、のSHA-256値と比較します。 .mds
ファイル:
- cat hadoop-2.7.3.tar.gz.mds
...
hadoop-2.7.3.tar.gz: SHA256 = D489DF38 08244B90 6EB38F4D 081BA49E 50C4603D B03EFD5E 594A1E98 B09259C2
...
大文字と小文字の違いとスペースは無視してかまいません。 ミラーからダウンロードしたファイルに対して実行したコマンドの出力は、apache.orgからダウンロードしたファイルの値と一致する必要があります。
ファイルが破損または変更されていないことを確認したので、 tar
とのコマンド -x
抽出するフラグ、 -z
解凍するには、 -v
詳細な出力の場合、および -f
ファイルから抽出することを指定します。 以下のコマンドでタブ補完を使用するか、正しいバージョン番号に置き換えてください。
- tar -xzvf hadoop-2.7.3.tar.gz
最後に、抽出したファイルをに移動します /usr/local
、ローカルにインストールされたソフトウェアの適切な場所。 必要に応じて、ダウンロードしたバージョンと一致するようにバージョン番号を変更します。
- sudo mv hadoop-2.7.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-8-openjdk-amd64/jre/
この出力をコピーして、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-8-openjdk-amd64/jre/
. . .
オプション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 [--config confdir] [COMMAND | CLASSNAME]
CLASSNAME run the class named CLASSNAME
or
where COMMAND is one of:
fs run a generic filesystem user client
version print the version
jar <jar> run a jar file
note: please use "yarn jar" to launch
YARN applications, not this command.
checknative [-a|-h] check native hadoop and compression libraries availability
distcp <srcurl> <desturl> copy file or directories recursively
archive -archiveName NAME -p <parent path> <src>* <dest> create a hadoop archive
classpath prints the class path needed to get the
credential interact with credential providers
Hadoop jar and the required libraries
daemonlog get/set the log level for each daemon
ヘルプは、スタンドアロンモードで実行するように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プログラムは、リテラル単語または正規表現の一致をカウントします。 最後に、単語の出現を見つけるための正規表現を提供します principal
宣言文の中または最後。 式では大文字と小文字が区別されるため、文の先頭で大文字になっている場合、その単語は見つかりません。
- /usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep ~/input ~/grep_example 'principal[.]*'
タスクが完了すると、処理された内容と発生したエラーの概要が表示されますが、実際の結果は含まれていません。
Output . . .
File System Counters
FILE: Number of bytes read=1247674
FILE: Number of bytes written=2324248
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=37
Map output materialized bytes=47
Input split bytes=114
Combine input records=0
Combine output records=0
Reduce input groups=2
Reduce shuffle bytes=47
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)=61
Total committed heap usage (bytes)=263520256
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=151
File Output Format Counters
Bytes Written=37
注:出力ディレクトリがすでに存在する場合、プログラムは失敗し、要約を表示するのではなく、出力は次のようになります。
Output . . .
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
結果は出力ディレクトリに保存され、実行して確認できます。 cat
出力ディレクトリ:
- cat ~/grep_example/*
Output6 principal
1 principal.
MapReduceタスクは、単語の1つの出現を検出しました principal
ピリオドとそうでなかった6つのオカレンスが続きます。 サンプルプログラムを実行すると、スタンドアロンインストールが正しく機能し、システム上の非特権ユーザーが探索またはデバッグのためにHadoopを実行できることが確認されました。
結論
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、提供されているサンプルプログラムを実行して検証しました。 独自のMapReduceプログラムを作成する方法については、ApacheHadoopのMapReduceチュートリアルにアクセスして、例の背後にあるコードを確認することをお勧めします。 クラスターをセットアップする準備ができたら、Apache Foundation Hadoop ClusterSetupガイドを参照してください。