序章

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のインストール

まず、パッケージリストを更新します。

  1. sudo apt-get update

次に、Ubuntu16.04にデフォルトのJavaDevelopmentKitであるOpenJDKをインストールします。

  1. sudo apt-get install default-jdk

インストールが完了したら、バージョンを確認しましょう。

  1. java -version
Output
openjdk 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 それをフェッチするには:

  1. 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 ファイルを転送するには:

  1. wget https://dist.apache.org/repos/dist/release/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz.mds

次に、検証を実行します。

  1. shasum -a 256 hadoop-2.7.3.tar.gz
Output
d489df3808244b906eb38f4d081ba49e50c4603db03efd5e594a1e98b09259c2 hadoop-2.7.3.tar.gz

この値を、のSHA-256値と比較します。 .mds ファイル:

  1. cat hadoop-2.7.3.tar.gz.mds
〜/ 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 ファイルから抽出することを指定します。 以下のコマンドでタブ補完を使用するか、正しいバージョン番号に置き換えてください。

  1. tar -xzvf hadoop-2.7.3.tar.gz

最後に、抽出したファイルをに移動します /usr/local、ローカルにインストールされたソフトウェアの適切な場所。 必要に応じて、ダウンロードしたバージョンと一致するようにバージョン番号を変更します。

  1. 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パスを見つけるには

  1. 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:

  1. sudo nano /usr/local/hadoop/etc/hadoop/hadoop-env.sh

次に、次のいずれかのオプションを選択します。

オプション1:静的な値を設定する

/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
 . . . 
/usr/local/hadoop/etc/hadoop/hadoop-env.sh
 . . .
#export JAVA_HOME=${JAVA_HOME}
export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")
 . . . 

注: Hadoopに関して、 JAVA_HOMEhadoop-env.sh 環境に設定されている値を /etc/profile またはユーザーのプロファイル。

ステップ4—Hadoopを実行する

これで、Hadoopを実行できるようになります。

  1. /usr/local/hadoop/bin/hadoop
Output
Usage: 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の構成ファイルをそのディレクトリにコピーして、それらのファイルをデータとして使用します。

  1. mkdir ~/input
  2. cp /usr/local/hadoop/etc/hadoop/*.xml ~/input

次に、次のコマンドを使用してMapReduceを実行できます hadoop-mapreduce-examples プログラム、いくつかのオプションを備えたJavaアーカイブ。 そのを呼び出します grep プログラム、に含まれる多くの例の1つ hadoop-mapreduce-examples、続いて入力ディレクトリ、 input および出力ディレクトリ grep_example. MapReduce grepプログラムは、リテラル単語または正規表現の一致をカウントします。 最後に、単語の出現を見つけるための正規表現を提供します principal 宣言文の中または最後。 式では大文字と小文字が区別されるため、文の先頭で大文字になっている場合、その単語は見つかりません。

  1. /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 出力ディレクトリ:

  1. cat ~/grep_example/*
Output
6 principal 1 principal.

MapReduceタスクは、単語の1つの出現を検出しました principal ピリオドとそうでなかった6つのオカレンスが続きます。 サンプルプログラムを実行すると、スタンドアロンインストールが正しく機能し、システム上の非特権ユーザーが探索またはデバッグのためにHadoopを実行できることが確認されました。

結論

このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、提供されているサンプルプログラムを実行して検証しました。 独自のMapReduceプログラムを作成する方法については、ApacheHadoopのMapReduceチュートリアルにアクセスして、例の背後にあるコードを確認することをお勧めします。 クラスターをセットアップする準備ができたら、Apache Foundation Hadoop ClusterSetupガイドを参照してください。