前書き

Hadoopは、安価なマシンのクラスターでの非常に大きなデータセットの処理と保存をサポートするJavaベースのプログラミングフレームワークです。 これはビッグデータの分野で最初の主要なオープンソースプロジェクトであり、Apache Software Foundationが後援しています。

Hadoopは、4つの主要なレイヤーで構成されています。

  • * Hadoop Common *は、他のHadoopモジュールをサポートするユーティリティとライブラリのコレクションです。

  • Hadoop Distributed File Systemの略である* HDFS *は、データをディスクに永続化する役割を果たします。

  • * YARN *(Yet Another Resource Negotiatorの略)は、HDFSの「オペレーティングシステム」です。

  • * MapReduce *は、Hadoopクラスターの元の処理モデルです。 クラスターまたはマップ内で作業を分散し、ノードからの結果を整理してクエリへの応答にまとめます。 Hadoopの3.xバージョンでは、他の多くの処理モデルが利用できます。

Hadoopクラスターのセットアップは比較的複雑であるため、プロジェクトには、Hadoopの学習、簡単な操作の実行、およびデバッグに適したスタンドアロンモードが含まれています。

このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、含まれているMapReduceプログラムの例のいずれかを実行してインストールを確認します。

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • * `+ sudo +`特権を持つ非ルートユーザーを持つUbuntu 18.04サーバー*:これらの特権を持つユーザーを設定する方法の詳細については、https://www.digitalocean.com/community/tutorials/initialをご覧ください。 -server-setup-with-ubuntu-18-04 [Ubuntu 18.04での初期サーバーセットアップ]ガイド。

この前提条件を完了すると、Hadoopとその依存関係をインストールする準備が整います。

始める前に、https://www.digitalocean.com/community/tutorials/an-introduction-to-big-data-concepts-and-terminology [ビッグデータの概念の紹介と用語]またはhttps://www.digitalocean.com/community/tutorials/an-introduction-to-hadoop[Hadoopの概要]

ステップ1-Javaのインストール

開始するには、パッケージリストを更新します。

sudo apt update

次に、Ubuntu 18.04にデフォルトのJava開発キットである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を配置したら、http://hadoop.apache.org/releases.html [Apache Hadoopリリースページ]にアクセスして、最新の安定版リリースを見つけます。

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

image:https://assets.digitalocean.com/articles/hadoop-standalone-1804/hadoop-download-link.png [最新の安定したバイナリへのリンクを強調するHadoopリリースのスクリーンショット]

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

image:https://assets.digitalocean.com/articles/hadoop-standalone-1804/hadoop-binary-link.png [Hadoopミラーページのスクリーンショット]

サーバーでは、 `+ wget +`を使用してそれを取得します。

wget http:///dist/hadoop/common/hadoop-/hadoop-.tar.gz

ダウンロードしたファイルが変更されていないことを確認するために、SHA-256を使用して簡単なチェックを行います。 http://hadoop.apache.org/releases.html [リリースページ]に戻り、ダウンロードしたリリースバイナリのチェックサムファイルへのリンクを右クリックしてコピーします。

image:https://assets.digitalocean.com/articles/hadoop-standalone-1804/hadoop-checksum-link.png [.mdsファイルを強調表示するスクリーンショット]

繰り返しますが、サーバーで「+ wget +」を使用してファイルをダウンロードします。

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

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

shasum -a 256 hadoop-.tar.gz
Outputdb96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a  hadoop-.tar.gz

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

cat hadoop-.tar.gz.mds

〜/ 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-.tar.gz

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

sudo mv hadoop- /usr/local/hadoop

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

ステップ3-HadoopのJavaホームの構成

Hadoopでは、環境変数またはHadoop構成ファイルのいずれかで、Javaへのパスを設定する必要があります。

Javaへのパスである `+ / usr / bin / java `は ` / etc / alternatives / java `へのシンボリックリンクであり、これはデフォルトのJavaバイナリへのシンボリックリンクです。 パスのすべての部分にあるすべてのシンボリックリンクを再帰的にたどるために、「-f 」フラグとともに「 readlink 」を使用します。 次に、「 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:静的な値を設定する

/usr/local/hadoop/etc/hadoop/hadoop-env.sh

. . .
export JAVA_HOME=${JAVA_HOME}

. . .

オプション2:読み取りリンクを使用して値を動的に設定する

/usr/local/hadoop/etc/hadoop/hadoop-env.sh

. . .
export JAVA_HOME=${JAVA_HOME}

. . .

ステップ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

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

/usr/local/hadoop/bin/hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-.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

結果は出力ディレクトリに保存され、出力ディレクトリで `+ cat +`を実行することで確認できます:

cat ~/grep_example/*
Output19  allowed.
1   allowed

MapReduceタスクは、「+ allowed +」という単語が19回出現し、その後にピリオドが1つ出現し、出現しなかった箇所が1つ出現しました。 サンプルプログラムを実行すると、スタンドアロンインストールが正常に動作し、システム上の非特権ユーザーが調査またはデバッグのためにHadoopを実行できることが確認されました。

結論

このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、提供されているサンプルプログラムを実行して検証しました。 独自のMapReduceプログラムの作成方法を学ぶには、Apache Hadoopのhttps://hadoop.apache.org/docs/stable/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html[MapReduceにアクセスしてください。チュートリアル]:例の背後にあるコードを詳しく説明します。 クラスターをセットアップする準備ができたら、Apache Foundation Hadoopクラスターセットアップガイドをご覧ください。