Hadoop-enviornment-setup
Hadoop-環境設定
Hadoopは、GNU/Linuxプラットフォームとそのフレーバーによってサポートされています。 したがって、Hadoop環境をセットアップするにはLinuxオペレーティングシステムをインストールする必要があります。 Linux以外のOSを使用している場合は、Virtualboxソフトウェアをインストールして、Virtualbox内にLinuxをインストールできます。
インストール前のセットアップ
Linux環境にHadoopをインストールする前に、 ssh (Secure Shell)を使用してLinuxをセットアップする必要があります。 Linux環境を設定するには、以下の手順に従ってください。
ユーザーを作成する
最初は、Hadoopの別のユーザーを作成して、HadoopファイルシステムをUnixファイルシステムから分離することをお勧めします。 ユーザーを作成するには、以下の手順に従ってください-
- コマンド「su」を使用してルートを開きます。
- コマンド「useradd username」を使用して、rootアカウントからユーザーを作成します。
- これで、コマンド「su username」を使用して既存のユーザーアカウントを開くことができます。
Linuxターミナルを開き、次のコマンドを入力してユーザーを作成します。
$ su
password:
# useradd hadoop
# passwd hadoop
New passwd:
Retype new passwd
SSHセットアップとキー生成
起動、停止、分散デーモンシェル操作など、クラスターでさまざまな操作を行うには、SSHセットアップが必要です。 Hadoopのさまざまなユーザーを認証するには、Hadoopユーザーに公開/秘密キーペアを提供し、それをさまざまなユーザーと共有する必要があります。
SSHを使用してキーと値のペアを生成するには、次のコマンドを使用します。 id_rsa.pubから公開鍵をauthorized_keysにコピーし、所有者にそれぞれauthorized_keysファイルへの読み取りおよび書き込み権限を付与します。
$ ssh-keygen -t rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
Javaのインストール
JavaはHadoopの主要な前提条件です。 まず、コマンド「java -version」を使用して、システムにjavaが存在することを確認する必要があります。 java versionコマンドの構文は次のとおりです。
$ java -version
すべてが正常な場合、次の出力が表示されます。
java version "1.7.0_71"
Java(TM) SE Runtime Environment (build 1.7.0_71-b13)
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)
システムにjavaがインストールされていない場合は、javaをインストールするための以下の手順に従ってください。
ステップ1
次のリンクhttps://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260l[www.oracle.com]にアクセスして、java(JDK <最新バージョン>-X64.tar.gz)をダウンロード
その後、 jdk-7u71-linux-x64.tar.gz がシステムにダウンロードされます。
ステップ2
通常、ダウンロードしたjavaファイルは、ダウンロードフォルダーにあります。 それを確認し、次のコマンドを使用して jdk-7u71-linux-x64.gz ファイルを抽出します。
$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz
ステップ3
すべてのユーザーがJavaを使用できるようにするには、「/usr/local/」の場所に移動する必要があります。 ルートを開き、次のコマンドを入力します。
$ su
password:
# mv jdk1.7.0_71/usr/local/
# exit
ステップ4
*PATH* および *JAVA_HOME* 変数を設定するには、*〜/.bashrc *ファイルに次のコマンドを追加します。
export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
すべての変更を現在実行中のシステムに適用します。
$ source ~/.bashrc
ステップ5
次のコマンドを使用して、Javaの代替を構成します-
# alternatives --install/usr/bin/java java usr/local/java/bin/java 2
# alternatives --install/usr/bin/javac javac usr/local/java/bin/javac 2
# alternatives --install/usr/bin/jar jar usr/local/java/bin/jar 2
# alternatives --set java usr/local/java/bin/java
# alternatives --set javac usr/local/java/bin/javac
# alternatives --set jar usr/local/java/bin/jar
次に、上記で説明したように、端末からjava -versionコマンドを確認します。
Hadoopをダウンロードする
次のコマンドを使用して、Apacheソフトウェア基盤からHadoop 2.4.1をダウンロードして抽出します。
$ su
password:
# cd/usr/local
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit
Hadoop操作モード
Hadoopをダウンロードしたら、サポートされている3つのモードのいずれかでHadoopクラスターを操作できます-
- ローカル/スタンドアロンモード-システムにHadoopをダウンロードした後、デフォルトでは、スタンドアロンモードで構成され、単一のJavaプロセスとして実行できます。
- 擬似分散モード-単一のマシンでの分散シミュレーションです。 hdfs、yarn、MapReduceなどの各Hadoopデーモンは、個別のjavaプロセスとして実行されます。 このモードは開発に役立ちます。
- 完全分散モード-このモードは、クラスターとして少なくとも2台以上のマシンで完全に分散されます。 このモードについては、今後の章で詳しく説明します。
スタンドアロンモードでのHadoopのインストール
ここでは、スタンドアロンモードでの Hadoop 2.4.1 のインストールについて説明します。
実行中のデーモンはなく、すべてが単一のJVMで実行されます。 スタンドアロンモードは、開発中にMapReduceプログラムを実行するのに適しています。MapReduceプログラムはテストとデバッグが簡単であるためです。
Hadoopのセットアップ
次のコマンドを*〜/.bashrc *ファイルに追加することにより、Hadoop環境変数を設定できます。
export HADOOP_HOME=/usr/local/hadoop
さらに先に進む前に、Hadoopが正常に機能していることを確認する必要があります。 次のコマンドを発行するだけです-
$ hadoop version
すべてがあなたのセットアップでうまくいけば、次の結果が表示されるはずです-
Hadoop 2.4.1
Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768
Compiled by hortonmu on 2013-10-07T06:28Z
Compiled with protoc 2.5.0
From source with checksum 79e53ce7994d1628b240f09af91e1af4
これは、Hadoopのスタンドアロンモードのセットアップが正常に機能していることを意味します。 デフォルトでは、Hadoopは単一のマシン上で非分散モードで実行されるように構成されています。
例
Hadoopの簡単な例を確認しましょう。 Hadoopのインストールでは、MapReduceの基本機能を提供する次のサンプルMapReduce jarファイルが提供されます。これは、Pi値、特定のファイルリスト内の単語数などの計算に使用できます。
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar
入力ディレクトリを作成して、いくつかのファイルをプッシュします。要件は、それらのファイル内の単語の総数を数えることです。 単語の総数を計算するために、.jarファイルに単語カウントの実装が含まれていれば、MapReduceを記述する必要はありません。 同じ.jarファイルを使用して他の例を試すことができます。次のコマンドを発行して、サポートされているMapReduce機能プログラムをhadoop-mapreduce-examples-2.2.0.jarファイルで確認します。
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar
ステップ1
入力ディレクトリに一時的なコンテンツファイルを作成します。 この入力ディレクトリは、作業したいところならどこでも作成できます。
$ mkdir input
$ cp $HADOOP_HOME/*.txt input
$ ls -l input
入力ディレクトリに次のファイルが表示されます-
total 24
-rw-r--r-- 1 root root 15164 Feb 21 10:14 LICENSE.txt
-rw-r--r-- 1 root root 101 Feb 21 10:14 NOTICE.txt
-rw-r--r-- 1 root root 1366 Feb 21 10:14 README.txt
これらのファイルは、Hadoopインストールホームディレクトリからコピーされています。 実験のために、異なる大規模なファイルセットを作成できます。
ステップ2
次のように、入力ディレクトリで使用可能なすべてのファイル内の単語の総数をカウントするためにHadoopプロセスを開始しましょう-
$ hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduceexamples-2.2.0.jar wordcount input output
ステップ3
ステップ2は必要な処理を行い、output/part-r00000ファイルに出力を保存します。
$cat output/*
入力ディレクトリで使用可能なすべてのファイルで使用可能な合計数とともにすべての単語がリストされます。
"AS 4
"Contribution" 1
"Contributor" 1
"Derivative 1
"Legal 1
"License" 1
"License"); 1
"Licensor" 1
"NOTICE” 1
"Not 1
"Object" 1
"Source” 1
"Work” 1
"You" 1
"Your") 1
"[]" 1
"control" 1
"printed 1
"submitted" 1
(50%) 1
(BIS), 1
(C) 1
(Don't) 1
(ECCN) 1
(INCLUDING 2
(INCLUDING, 2
.............
擬似分散モードでのHadoopのインストール
以下の手順に従って、Hadoop 2.4.1を擬似分散モードでインストールします。
ステップ1-Hadoopのセットアップ
次のコマンドを*〜/.bashrc *ファイルに追加することにより、Hadoop環境変数を設定できます。
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL=$HADOOP_HOME
すべての変更を現在実行中のシステムに適用します。
$ source ~/.bashrc
ステップ2-Hadoopの構成
すべてのHadoop設定ファイルは、「$ HADOOP_HOME/etc/hadoop」の場所にあります。 Hadoopインフラストラクチャに応じて、これらの構成ファイルを変更する必要があります。
$ cd $HADOOP_HOME/etc/hadoop
JavaでHadoopプログラムを開発するには、 JAVA_HOME の値をシステム内のjavaの場所に置き換えて、 hadoop-env.sh ファイルのjava環境変数をリセットする必要があります。
export JAVA_HOME=/usr/local/jdk1.7.0_71
以下は、Hadoopを構成するために編集する必要があるファイルのリストです。
*core-site.xml*
*core-site.xml* ファイルには、Hadoopインスタンスに使用されるポート番号、ファイルシステムに割り当てられたメモリ、データを保存するためのメモリ制限、読み取り/書き込みバッファのサイズなどの情報が含まれています。
core-site.xmlを開き、<configuration>タグと</configuration>タグの間に次のプロパティを追加します。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
*hdfs-site.xml*
*hdfs-site.xml* ファイルには、ローカルファイルシステムのレプリケーションデータ、ネームノードパス、データノードパスの値などの情報が含まれています。 これは、Hadoopインフラストラクチャを保存する場所を意味します。
次のデータを想定します。
dfs.replication (data replication value) = 1
(In the below given path/hadoop/is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path =//home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path =//home/hadoop/hadoopinfra/hdfs/datanode
このファイルを開き、このファイルの<configuration>&lt/configuration>タグの間に次のプロパティを追加します。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value>
</property>
</configuration>
注-上記のファイルでは、すべてのプロパティ値はユーザー定義であり、Hadoopインフラストラクチャに応じて変更できます。
*yarn-site.xml*
このファイルは、Hadoopに糸を設定するために使用されます。 yarn-site.xmlファイルを開き、このファイルの<configuration>タグと</configuration>タグの間に次のプロパティを追加します。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
*mapred-site.xml*
このファイルは、使用しているMapReduceフレームワークを指定するために使用されます。 デフォルトでは、Hadoopにはyarn-site.xmlのテンプレートが含まれています。 まず、次のコマンドを使用して、 mapred-site.xml.template から mapred-site.xml ファイルにファイルをコピーする必要があります。
$ cp mapred-site.xml.template mapred-site.xml
*mapred-site.xml* ファイルを開き、このファイルの<configuration>タグと</configuration>タグの間に次のプロパティを追加します。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
Hadoopインストールの検証
次の手順を使用して、Hadoopのインストールを確認します。
ステップ1-ノードのセットアップに名前を付ける
次のようにコマンド「hdfs namenode -format」を使用して、namenodeをセットアップします。
$ cd ~
$ hdfs namenode -format
期待される結果は次のとおりです。
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 2.4.1
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to
retain 1 images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
ステップ2-Hadoop dfの検証
次のコマンドは、dfsを開始するために使用されます。 このコマンドを実行すると、Hadoopファイルシステムが起動します。
$ start-dfs.sh
予想される出力は次のとおりです-
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to/home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-namenode-localhost.out
localhost: starting datanode, logging to/home/hadoop/hadoop
2.4.1/logs/hadoop-hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
ステップ3-糸スクリプトの検証
次のコマンドを使用して、糸スクリプトを開始します。 このコマンドを実行すると、糸デーモンが起動します。
$ start-yarn.sh
次のような予想される出力-
starting yarn daemons
starting resourcemanager, logging to/home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to/home/hadoop/hadoop
2.4.1/logs/yarn-hadoop-nodemanager-localhost.out
ステップ4-ブラウザーでHadoopにアクセスする
Hadoopにアクセスするためのデフォルトのポート番号は50070です。 次のURLを使用して、ブラウザーでHadoopサービスを取得します。
http://localhost:50070/
ステップ5-クラスタのすべてのアプリケーションを確認する
クラスターのすべてのアプリケーションにアクセスするためのデフォルトのポート番号は8088です。 このサービスにアクセスするには、次のURLを使用してください。
http://localhost:8088/