序章

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つを実行します。

始める前に、ビッグデータの概念と用語の概要またはHadoopの概要もご覧ください。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • sudo権限を持つroot以外のユーザーがいるDebian9サーバーとファイアウォール。Debian9での初期サーバーセットアップチュートリアルに従ってセットアップできます。
  • Debian9にAptを使用してJavaをインストールする方法に従ってインストールされたJava。 このチュートリアルではOpenJDKを使用できます。
  • Debian9にAptを使用してJavaをインストールする方法に示されている/etc/environmentで設定されたJAVA_HOME環境変数。 Hadoopでは、この変数を設定する必要があります。

ステップ1—Hadoopをインストールする

Hadoopをインストールするには、最初に Apache Hadoopリリースページにアクセスして、最新の安定したリリースを見つけます。

インストールするリリースのbinaryに移動します。 このガイドでは、Hadoop3.0.3をインストールします。

Screenshot of the Hadoop releases page highlighting the link to the latest stable binary

次のページで、右クリックしてリリースバイナリへのリンクをコピーします。

Screenshot of the Hadoop mirror page

サーバーで、wgetを使用して取得します。

  1. 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を使用して簡単なチェックを行います。 リリースページに戻り、右クリックして、ダウンロードしたリリースバイナリのチェックサムファイルへのリンクをコピーします。

Screenshot highlighting the .mds file

ここでも、サーバーでwgetを使用して、ファイルをダウンロードします。

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

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

  1. sha256sum hadoop-3.0.3.tar.gz
Output
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz

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

  1. cat hadoop-3.0.3.tar.gz.mds | grep SHA256
〜/ hadoop-3.0.3.tar.gz.mds
...
SHA256 = DB96E2C0 D0D5352D 8984892D FAC4E27C 0E682D98 A497B7E0 4EE97C3E 2019277A

大文字と小文字の違いとスペースは無視してかまいません。 ミラーからダウンロードしたファイルに対して実行したコマンドの出力は、apache.orgからダウンロードしたファイルの値と一致する必要があります。

ファイルが破損または変更されていないことを確認したので、tarコマンドと-xフラグを使用して抽出し、-zを使用して解凍します。-v、ファイルからアーカイブを抽出することを指定する場合は-f。 以下のコマンドでタブ補完を使用するか、正しいバージョン番号に置き換えてください。

  1. tar -xzvf hadoop-3.0.3.tar.gz

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

  1. sudo mv hadoop-3.0.3 /usr/local/hadoop

ソフトウェアを配置したら、環境を構成する準備が整います。

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

Hadoopが実行されていることを確認しましょう。 次のコマンドを実行してHadoopを起動し、そのヘルプオプションを表示します。

  1. /usr/local/hadoop/bin/hadoop

次の出力が表示されます。これは、スタンドアロンモードで実行するようにHadoopが正常に構成されたことを示しています。

Output
Usage: 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: . . .

付属のMapReduceプログラムの例を実行して、正しく機能していることを確認します。 これを行うには、ホームディレクトリにinputというディレクトリを作成し、Hadoopの構成ファイルをそのディレクトリにコピーして、それらのファイルをデータとして使用します。

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

次に、いくつかのオプションを備えたJavaアーカイブであるMapReducehadoop-mapreduce-examplesプログラムを実行します。 grepプログラムを呼び出します。これは、hadoop-mapreduce-examplesに含まれる多くの例の1つであり、入力ディレクトリinputと出力ディレクトリgrep_exampleが続きます。 MapReduce grepプログラムは、リテラル単語または正規表現の一致をカウントします。 最後に、正規表現allowed[.]*を指定して、宣言文内または宣言文の最後にある単語allowedの出現箇所を検索します。 式では大文字と小文字が区別されるため、文の先頭で大文字になっている単語は見つかりません。

次のコマンドを実行します。

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

結果は~/grep_exampleディレクトリに保存されます。

この出力ディレクトリがすでに存在する場合、プログラムは失敗し、要約が表示されるのではなく、次のように表示されます。

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を実行して、結果を確認します。

  1. cat ~/grep_example/*

次の出力が表示されます。

Output
19 allowed. 1 allowed

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

結論

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