Apache Hadoop のインストール(Ubuntu 上)
Apache Hadoop のインストールを行う.
インストール前に,あらかじめ決めておく事項
Apache Hadoop インストールディレクトリを決めておくこと. このページでは,次のように書く.
- Apache Hadoop インストールディレクトリ: /usr/local
前準備 (Linux の場合)
Oracle Java JDK のインストール
* 要点は 「Oracle の JDK」を使うということ.
- Ubuntu のインストール: 別ページ »で説明
- Java SE のインストール(Windows 上)
◆ Ubuntu の場合の操作手順例
sudo apt -y update sudo apt -y install openjdk-7-jdk
- JDK のインストールの Web ページの記述に従って,
「Oracle JDK の方を優先して使用するような設定」が終わっていること.
java -version
- JDK のインストールディレクトリを確認しておくこと.
* 以下,このページでは,次のように書く.確認してください。
- Oracel JDK インストールディレクトリ: /usr/lib/jvm/java-7-openjdk-amd64
OpenSSH サーバのインストールと設定
- OpenSSH サーバのインストール
◆ Ubuntu の場合の実行手順例
sudo apt -y update sudo apt -y install openssh-server
- /etc/hosts.allow で,限られた IP アドレスからのみ SSH 接続できるように設定
◆ /etc/hosts.allow の設定例
- SSH サーバ の Web ページの記述に従って,次の設定を終えていること.セキュリティ上,重要
- IPアドレスでの制限により,リモートサイトからの SSH ログインの抑止
- ユーザ名での制限: ユーザ名「hadoop」など、最低限のユーザのみ SSH ログインを許可していること.
hadoop 実行用ユーザ(ユーザ名「hadoop」)の作成と設定
- hadoop 実行用ユーザ(ユーザ名「hadoop」)の作成
◆ Ubuntu の場合の実行手順例
sudo adduser hadoop パスワード入力(2回)
- hadoop でログインしなおして
その後,以下の操作を行う
- 確認パスワードなしでssh接続できるように設定
ssh-keygen -t rsa -P "" cat .ssh/id_rsa.pub >> .ssh/authorized_keys chmod 600 .ssh/authorized_keys
hadoopユーザで SSH ログインできることの確認
ssh hadoop@localhost
* 次のようにログインできない場合には対処
Apache Hadoop のインストール手順
ダウンロード
- Apache Hadoop のダウンロード用 Web ページを開く
- 「Download a release now!」をクリック
- ミラーサイトの一覧が表示されるので「おすすめ」のサイトをクリック
- 「stable」をクリック
- 「hadoop-2.2.0-src.tar.gz」をクリック
ダウンロードが始まる
- ダウンロードしたファイルは,分かりやすいディレクトリ(例えば/tmp)に置く
インストール
- Apache Hadoop インストールディレクトリ: /usr/local に移動
* Apache Hadoop インストールディレクトリは自由に決めてよいが,分かりやすい名前にしておくこと.
cd /usr/local
- 先ほどダウンロードしたファイルを展開
sudo tar -xvzof /tmp/hadoop-2.2.0-src.tar.gz
- シンボリックリンク
cd /usr/local sudo rm -f hadoop sudo ln -s /usr/local/hadoop-2.2.0-src hadoop
- 権限の設定
sudo chown -R hadoop:hadoop hadoop-2.2.0-src sudo chown -R hadoop:hadoop hadoop
- データストアの作成と権限の設定
sudo mkdir /usr/local/hadoop-datastore sudo chown -R hadoop:hadoop hadoop-datastore
- 依存パッケージのインストール
sudo apt -y update sudo apt -y install maven2
- JDK のディレクトリを探す
cd /usr find . -name "*jdk*" -print
- /usr/local/hadoop/conf/hadoop-env.sh 内の JAVA_HOME の設定
* 下記の例は JAVA_HOME を /usr/lib/jvm/java-7-openjdk-amd64 に設定する場合
cd /usr/local cd hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf sudo -u hadoop vi hadoop-env.sh
* 下記の例は JAVA_HOME を /usr/lib/jvm/java-6-sun-1.6.0.24 に設定する場合
cd /usr/local cd hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf sudo -u hadoop vi hadoop-env.sh
- /home/hadoop/.bashrc の設定
/home/hadoop/.bashrc に4行を追加
export HADOOP_COMMON_HOME=/usr/local/hadoop-2.2.0-src export HADOOP_CONF_DIR=/usr/local/hadoop-2.2.0-src/hadoop-common-project/hadoop-common/src/main/conf export HADOOP_HDFS_HOME=/usr/local/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs export HADOOP_MAPRED_HOME=/usr/local/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-hdfs export HADOOP_YARN_HOME=/usr/local/hadoop-2.2.0-src/hadoop-mapreduce-project/hadoop-hdfs
- ここ以降の設定や操作は,hadoop 実行用ユーザ(ユーザ名「hadoop」)で行うと楽である.
sudo -u hadoop -i source .bashrc
- ビルド操作
https://hadoop.apache.org/docs/r2.2.0/hadoop-project-dist/hadoop-common/SingleCluster.html に記載の手順通りに行う
sudo apt -y update sudo apt -y install maven2 cd /usr/local/hadoop-2.2.0-src mvn clean install -DskipTests cd hadoop-common-project mvn clean install assembly:assembly -Pnative cd hadoop-hdfs-project mvn clean install assembly:assembly -Pnative cd hadoop-mapreduce-project mvn clean install assembly:assembly -Pnative
- ビルドの終了確認
エラーメッセージが出ていないことを確認する.
- ${HADOOP_CONF_DIR}/mapred-site.xml の設定
mapreduce.cluster.temp.dir No description true mapreduce.cluster.local.dir No description true - ${HADOOP_CONF_DIR}/yarn-site.xml の設定
yarn.resourcemanager.resource-tracker.address host:port host is the hostname of the resource manager and port is the port on which the NodeManagers contact the Resource Manager. yarn.resourcemanager.scheduler.address host:port host is the hostname of the resourcemanager and port is the port on which the Applications in the cluster talk to the Resource Manager. yarn.resourcemanager.scheduler.class org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler In case you do not want to use the default scheduler yarn.resourcemanager.address host:port the host is the hostname of the ResourceManager and the port is the port on which the clients can talk to the Resource Manager. yarn.nodemanager.local-dirs the local directories used by the nodemanager yarn.nodemanager.address 0.0.0.0:port the nodemanagers bind to this port yarn.nodemanager.resource.memory-mb 10240 the amount of memory on the NodeManager in GB yarn.nodemanager.remote-app-log-dir /app-logs directory on hdfs where the application logs are moved to yarn.nodemanager.log-dirs the directories used by Nodemanagers as log directories yarn.nodemanager.aux-services mapreduce_shuffle shuffle service that needs to be set for Map Reduce to run - ${HADOOP_CONF_DIR}/capacity-scheduler.xml の設定
<property> <name>yarn.scheduler.capacity.root.queues</name> <value>unfunded,default</value> </property> <property> <name>yarn.scheduler.capacity.root.capacity</name> <value>100</value> </property> <property> <name>yarn.scheduler.capacity.root.unfunded.capacity</name> <value>50</value> </property> <property> <name>yarn.scheduler.capacity.root.default.capacity</name> <value>50</value> </property>
- /usr/local/hadoop/conf/core-site.xml, /usr/local/hadoop/conf/hdfs-site.xml, /usr/local/hadoop/conf/mapred-site.xml の設定
◆ /usr/local/hadoop/conf/core-site.xml の設定例
◆ /usr/local/hadoop/conf/hdfs-site.xml の設定例
◆ /usr/local/hadoop/conf/mapred-site.xml の設定例
* 詳しくは, https://hadoop.apache.org/core/docs/r2.2.0/ を開き,「Single Node Setup」をクリック
- フォーマット
cd /usr/local/hadoop ./bin/hadoop namenode -format
Apache Hadoop をスタンドアローン (standalone) モードで動かしてみる(書きかけ)
Hadoop Quick Startに記載されている 「例」を動かしてみる
cd /usr/local/hadoop
mkdir input
cp conf/*.xml input
./bin/hadoop jar hadoop-*-examples.jar grep input output 'dfs[a-z.]+'
cat output/*
Apache Hadoop を擬似分散 (pseudo distributed) モードで動かしてみる
Apache Hadoop デーモンの起動と終了の方法
以下の操作は,hadoop 実行用ユーザ(ユーザ名「hadoop」)で行うこと.
- Apache Hadoop デーモンの起動
cd /usr/local/hadoop ,/bin/start-all.sh
* 起動時に「JAVA_HOME が設定されていない」というエラーメッセージが出たときは /etc/bashrc に「export JAVA_HOME=/usr/java/jdk1.6.0_17」の行を加えるなどで対処する
- Apache Hadoop デーモンの終了
cd /usr/local/hadoop ,/bin/stop-all.sh
Mapper を Ruby 言語で記述する例(標準入力を介してデータが Mapper に渡る)



サンプルプログラム wordcount を実行してみる
- テスト用データ /tmp/data/file の作成と,HDFS への転送
mkdir /tmp/data cat > /tmp/data/file orange orange1 apple apple orange1 orange # ctrl + D キー cat /tmp/data/file ./bin/hadoop dfs -copyFromLocal /tmp/data data
- スタンドアローン (standalone) での実行
Java の単一のプロセスとして実行します。 これは、Hadoop デーモンを起動していない状態での実行です。 デバッグするのに役に立ちます。
cd /usr/local/hadoop ./bin/hadoop jar hadoop-2.2.0-examples.jar wordcount /tmp/data /tmp/output cat /tmp/output/part-00000
- 擬似分散 (pseudo distributed)
Apache Hadoop は、単一ノードで動かすことができる。言い換えると、 Apache Hadoop デーモンが1つのプロセス(プログラムとは別のプロセス))として動いているモードです。 DFS 配下のファイルを扱うことになる.
cd /usr/local/hadoop ./bin/hadoop jar hadoop-2.2.0-examples.jar wordcount /tmp/data output ./bin/hadoop dfs -cat output/part-00000
参考 HDFS (Hadoop Distributed File System) の操作コマンド
- hadoop dfs -copyFromLocal HDFS への転送
- hadoop dfs -copyToLocal HDFS からの転送
- hadoop dfs -ls # ls
- hadoop dfs -rm # rm
- hadoop dfs -cat # cat
- hadoop dfs -rmr # rm -f
- hadoop dfs -mkdir # mkdir
- hadoop dfs -put HDFS へ転送