Hadoop の環境設定 †hadoop-2.0.0-alpha の環境設定を行ったのでメモする。 参考サイト: Hadoop2.0セットアップ mass00 に hadoop の設定を行った。hadoop のデータは mass00 の $HOME/share にいれてある。よって、他のクラスタからも $HOME/share よりアクセスできる。 mass00 以外のクラスタに datanode の設定を行いたい場合は以下のページを参照 hadoop 環境設定(datanode)? ソースのダウンロード †hadoopの公式サイトを辿って Release 版をゲット(最初は svn から trunk をとってきたがコンパイルに失敗して断念) hadoop Releaseから hadoop-2.0.0-alpha の binary を取得。 mkdir $HOME/share/hadoop cd $HOME/share/hadoop wget http://www.fightrice.com/mirrors/apache/hadoop/common/hadoop-2.0.0-alpha/hadoop-2.0.0-alpha.tar.gz tar zxvf hadoop-2.0.0-alpha.tar.gz cd hadoop-2.0.0-alpha 次から ${HADOOP_PREFIX} と表記する場合は、 $HOME/share/hadoop/hadoop-2.0.0-alph を指す。 設定 †参考サイトでは hadoop, hdfs, yarn, mapred ごとにユーザを作成していたが今回は全て同じユーザで行う(massユーザ)。 共通 †${HADOOP_PREFIX}/etc/hadoop/core-site.xml の編集 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://localhost:9000/</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/tmp/hadoop-${user.name}</value> </property> </configuration> (上の表記では localhost となっている部分は mass00 の address になっている。) 次に、データの格納を行うディレクトリを用意する。 $ sudo mkdir /var/local/hadoop $ sudo mkdir /var/local/hadoop/cache $ sudo mkdir /var/local/hadoop/log $ sudo mkdir /var/local/hadoop/run $ sudo chown -R mass:mass /var/local/hadoop $ sudo chmod -R 775 /var/local/hadoop HDFS †環境変数の設定。${HADOOP_PREFIX}/etc/hadoop/hadoop-env.sh を作成する。 (./share/hadoop/common/templates/conf/hadoop-env.sh にテンプレっぽいのがあったけど気にしない) cat etc/hadoop/hadoop-env.sh #export JAVA_HOME=/usr/lib/jvm/java-6-sun #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386 export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 # The directory where pid files are stored. /tmp by default. export HADOOP_PID_DIR=/tmp # Where log files are stored. $HADOOP_PREFIX/logs by default. export HADOOP_LOG_DIR=/var/local/hadoop/log JAVA_HOME は以下の様にして求めた。 % ls -la /usr/bin/java lrwxrwxrwx 1 root 22 5月 19 2011 /usr/bin/java -> /etc/alternatives/java % ls -la /etc/alternatives/java lrwxrwxrwx 1 root 46 5月 19 2011 /etc/alternatives/java -> /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java 設定ファイル(${HADOOP_PREFIX}/etc/hadoop/hdfs-site.xml )の<configuration>の編集を行う。 <configuration> <property> <name>dfs.namenode.name.dir</name> <value>file:///var/local/hadoop/cache/${user.name}/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:///var/local/hadoop/cache/${user.name}/dfs/data</value> </property> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file:///var/local/hadoop/cache/${user.name}/dfs/namesecondary</value> </property> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration> HDFS をフォーマットする。 ./bin/hdfs namenode -format 各デーモンの起動を行う。 ./sbin/hadoop-daemon.sh start namenode ./sbin/hadoop-daemon.sh start secondarynamenode ./sbin/hadoop-daemon.sh start datanode HDFS 上に必要なディレクトリの作成を行う。 ./bin/hadoop fs -chown mass:mass / ./bin/hadoop fs -chmod 755 / ./bin/hadoop fs -mkdir /tmp ./bin/hadoop fs -chown mass:mass /tmp ./bin/hadoop fs -chmod 1777 /tmp ./bin/hadoop fs -mkdir /user ./bin/hadoop fs -chown mass:mass /user ./bin/hadoop fs -chmod 755 /user YARN †環境変数を設定する(${HADOOP_PREFIX}/etc/hadoop/yarn-env.sh)。以下の内容を加える。 export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64 export HADOOP_PREFIX=/home/mass/share/hadoop/hadoop-2.0.0-alpha export HADOOP_COMMON_HOME=${HADOOP_PREFIX} export HADOOP_HDFS_HOME=${HADOOP_PREFIX} export YARN_HOME=${HADOOP_PREFIX} export YARN_PID_DIR=/var/local/hadoop/run/$USER export YARN_LOG_DIR=/var/local/hadoop/log/$USER export HADOOP_MAPRED_HOME=${HADOOP_PREFIX} 設定ファイルの用意(${HADOOP_PREFIX/etc/hadoop/yarn-site.xml})。参考サイトの設定そのまま <configuration> <property> <name>yarn.resourcemanager.scheduler.class</name> <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value> <description>In case you do not want to use the default scheduler</description> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>/var/local/hadoop/cache/${user.name}/nm/local</value> <description>the local directories used by the nodemanager (default: /tmp/nm-local-dir)</description> </property> <!-- <property> <name>yarn.nodemanager.address</name> <value>0.0.0.0:0</value> <description>the nodemanagers bind to this port</description> </property> --> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> <description>the amount of memory on the NodeManager in GB (default: 8192)</description> </property> <property> <name>yarn.nodemanager.remote-app-log-dir</name> <value>/var/local/hadoop/log/${user.name}/nm</value> <description>directory on hdfs where the application logs are moved to (default: /tmp/logs)</description> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>/var/local/hadoop/log/${user.name}/nm</value> <description>the directories used by Nodemanagers as log directories (default: /tmp/logs)</description> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce.shuffle</value> <description>shuffle service that needs to be set for Map Reduce to run</description> </property> <property> <name>mapreduce.job.hdfs-servers</name> <value>${fs.defaultFS}</value> </property> <configuration> ローカルファイルシステム上とHDFSに必要なディテクトリの作成。 mkdir -p /var/local/hadoop/log/yarn/nm # yarn.nodemanager.log-dirs chown mass:mass /var/local/hadoop/log/yarn chown mass:mass /var/local/hadoop/log/yarn/nm chmod 755 /var/local/hadoop/log/yarn/nm mkdir -p /var/local/hadoop/log/yarn/nm/local # yarn.nodemanager.local-dirs chown mass:mass /var/local/hadoop/log/yarn/nm/local chmod 755 /var/local/hadoop/log/yarn/nm/local ./bin/hadoop fs -mkdir /var/local/hadoop/log/yarn/nm # yarn.nodemanager.remote-app-log-dir ./bin/hadoop fs -chown mass:mass /var/local/hadoop/log/yarn/nm ./bin/hadoop fs -chmod 1777 /var/local/hadoop/log/yarn/nm デーモンの起動 ./sbin/yarn-daemon.sh start resourcemanager ./sbin/yarn-daemon.sh start nodemanager デーモンが起動したら mass00 のport 8088 と 8042 にアクセスすることで Web UI のアクセスができる。 http://mass00のaddress:8088 http://mass00のaddress:8042 MapReduce? †設定ファイルの編集(${HADOOP_PREFIX}/etc/hadoop/mapred-site.xml) を作成。テンプレが share 以下にあったけど気にしない。
HDFS 上に必要なディテクトリを作成する ./bin/hadoop fs -mkdir /var/local/hadoop/mapred/history ./bin/hadoop fs -chown -R mass:mass /var/local/hadoop/mapred ./bin/hadoop fs -chmod -R 755 /var/local/hadoop/mapred 履歴サーバの起動 ./sbin/mr-jobhistory-daemon.sh start historyserver 履歴サーバのWeb UI は port 19888 でアクセスできる。 http://mass00のaddress:19888 サンプルジョブによるテスト。 ./bin/hadoop fs -mkdir /user/mass ./bin/hadoop fs -chown mass:mass /user/mass ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.0.0-alpha.jar pi 5 10 |