Hadoopは、安価なマシンのクラスターでの非常に大きなデータセットの処理と保存をサポートするJavaベースのプログラミングフレームワークです。これは、Apache Software Foundationが後援する、ビッグデータ競争の分野における最初の主要なオープンソースプロジェクトです。
Hadoopは、次の4つの主要なレイヤーで構成されています。
Hadoopクラスターのセットアップは比較的複雑であるため、プロジェクトには、Hadoopの学習、簡単な操作の実行、およびデバッグに適したスタンドアロンモードが含まれています。
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、それに含まれているサンプルMapReduceプログラムの1つを実行して、インストールを確認します。
このチュートリアルに従うには、次のものが必要です。
この準備が完了したら、Hadoopとその依存関係をインストールできます。
まず、パッケージリストを更新します。
sudo apt update
次に、デフォルトのJava開発キットであるUbuntu18.04にOpenJDKをインストールします。
sudo apt install default-jdk
インストールが完了したら、バージョンを確認しましょう。
java -version
openjdk 10.0.12018-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が正常にインストールされたことを確認します。
Javaでは、[Apache Hadoopリリースページ](http://hadoop.apache.org/releases.html)にアクセスして、最新の安定バージョンを見つけます。
インストールするディストリビューションのバイナリに移動します。このガイドでは、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を使用して簡単に確認します。 [バージョンページ](http://hadoop.apache.org/releases.html)に戻り、右クリックして、ダウンロードしたリリースバイナリファイルのチェックサムファイルへのリンクをコピーします。
ここでも、 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
db96e2c0d0d5352d8984892dfac4e27c0e682d98a497b7e04ee97c3e2019277a hadoop-3.0.3.tar.gz
この値を .mds
ファイルのSHA-256値と比較します。
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
lを使用して解凍し、 -v
を使用して詳細な出力を取得します。 f`は、ファイルから抽出することを指定します。次のコマンドで、tab-completionを使用するか、正しいバージョン番号を置き換えます。
tar -xzvf hadoop-3.0.3.tar.gz
最後に、抽出したファイルを / usr / local
の適切な場所に移動して、ソフトウェアをローカルにインストールします。必要に応じて、ダウンロードしたバージョンと一致するようにバージョン番号を変更してください。
sudo mv hadoop-3.0.3/usr/local/hadoop
このソフトウェアを使用して、その環境を構成できます。
Hadoopでは、Javaへのパスを設定する必要があります。これは、環境変数またはHadoop構成ファイルにすることができます。
Javaパス / usr / bin / java
は、デフォルトのJavaバイナリファイルへのシンボリックリンクである / etc / Alternatives / java
へのシンボリックリンクです。パスの各部分の各シンボリックリンクを再帰的にトレースするには、 readlink
と -f
フラグを使用します。次に、 sed
を使用して、出力から bin / java
を調整し、 JAVA_HOME
の正しい値を提供します。
デフォルトのJavaパスを見つける
readlink -f /usr/bin/java | sed "s:bin/java::"
/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
次に、次のいずれかのオプションを選択します。
...
# export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64/...
...
# export JAVA_HOME=${JAVA_HOME}export JAVA_HOME=$(readlink -f /usr/bin/java | sed "s:bin/java::")...
注: Hadoopの場合、 hadoop-env.sh
の JAVA_HOME
の値は、環境 / etc / profile
またはユーザープロファイルに設定されている値を上書きします。
これで、Hadoopを実行できるようになります。
/usr/local/hadoop/bin/hadoop
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 classfilesfrom 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 forthis 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アーカイブファイルであるMapReducehadoop-mapreduce-examples
プログラムを実行できます。その grep
プログラムを呼び出します。これは hadoop-mapreduce-examples
に含まれる多くの例の1つであり、その後に入力ディレクトリ 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[.]*'
タスクが完了すると、処理された内容と発生したエラーの概要が表示されますが、実際の結果は含まれていません。
...
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
**注:**出力ディレクトリがすでに存在する場合、プログラムは失敗します。要約を表示する代わりに、出力は次のようになります。
...
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/*
19 allowed.1 allowed
MapReduceタスクは、「許可された」19個の単語の後にピリオドが続き、1個は表示されなかったことを検出しました。サンプルプログラムを実行すると、スタンドアロンインストールが正しく機能していること、およびシステム上の特権のないユーザーが探索またはデバッグのためにHadoopを実行できることが確認されました。
このチュートリアルでは、Hadoopをスタンドアロンモードでインストールし、提供されたサンプルプログラムを実行して検証しました。
スタンドアロンモードでのHadoopのインストールに関する関連チュートリアルの詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。
参照:「Ubuntu18.04にスタンドアロンモードでHadoopをインストールする方法」
Recommended Posts