Hadoopセットアップ > 古いバージョン(0.23.10.23.0

note.pngDEPRECATED!: このバージョンのHadoopは古いです。ご利用は非推奨です。Hadoop2.0セットアップをご参照ください。

目次

シングルノード

2.0.x系(YARN、次世代MapReduce?)最新版をセットアップします。 ローカルモードではなく、1機で分散処理環境を起動させます。以下のインスタンスを起動します。

  1. HDFS
    1. プライマリNameNode
    2. セカンダリNameNode
    3. DataNode
  2. YARN
    1. ResourceManager?
    2. NodeManager?
  3. MapReduce?アプリケーション
    1. JobHistoryServer?

設定ディレクトリとしては、${HADOOP_PREFIX}/conf/ を作成せず、デフォルトと思われる ${HADOOP_PREFIX}/etc/hadoop/ を使用します。

共通

  1. 起動ユーザを追加します。
    $ sudo adduser --shell /bin/sh --uid 10001 --disabled-password hadoop
    $ sudo adduser --shell /bin/sh --uid 10002 --disabled-password hdfs
    $ sudo usermod -G hadoop hdfs
    $ sudo adduser --shell /bin/sh --uid 10003 --disabled-password yarn
    $ sudo usermod -G hadoop yarn
    $ sudo adduser --shell /bin/sh --uid 10004 --disabled-password mapred
    $ sudo usermod -G hadoop mapred
  2. アーカイブを適当な場所に展開します。この説明での $HADOOP_PREFIX とは、Hadoopのインストールルートを示します。
    $ ls -la /usr/local
    ...
    lrwxrwxrwx  1 root staff   18 2012-05-24 20:09 hadoop -> hadoop-2.0.0-alpha
    drwxr-xr-x  9 root root  4096 2012-05-16 11:15 hadoop-2.0.0-alpha
  3. 設定ファイル ${HADOOP_PREFIX}/etc/hadoop/core-site.xml を編集します。Hadoopはデフォルト設定状態でも動作するように(これは正しいことです)、hadoop.tmp.dir のデフォルト値である /tmp/hadoop-${user.name} 以下のディレクトリに、一時作業ファイルはもちろんのこと、ある程度永続化が必要なデータ(主にHDFS関連)までも格納します。文字通りテンポラリという意味での hadoop.tmp.dir 設定は必要ですので、デフォルト設定はそのままとし、以下のセットアップでは永続化が必要なデータの格納場所を適切に設定変更していきます。
    1. ...
    2. <configuration>
    3.     <property>
    4.         <name>fs.defaultFS</name>
    5.         <value>hdfs://localhost:9000/</value>
    6.     </property>
    7.     <property>
    8.         <name>hadoop.tmp.dir</name>
    9.         <value>/tmp/hadoop-${user.name}</value>
    10.     </property>
    11. </configuration>
  4. データなどを格納するディレクトリを用意します。
    $ 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 hadoop:hadoop /var/local/hadoop
    $ sudo chmod -R 775 /var/local/hadoop

HDFS

  1. 環境変数を設定します。${HADOOP_PREFIX}/etc/hadoop/hadoop-env.sh は存在しないため、新規に作成します。
    1. #export JAVA_HOME=/usr/lib/jvm/java-6-sun
    2. #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    3. #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
    4. export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
    5. # The directory where pid files are stored. /tmp by default.
    6. export HADOOP_PID_DIR=/var/local/hadoop/run/$USER
    7. # Where log files are stored. $HADOOP_PREFIX/logs by default.
    8. export HADOOP_LOG_DIR=/var/local/hadoop/log/$USER
  2. 設定ファイル(${HADOOP_PREFIX}/etc/hadoop/hdfs-site.xml)を編集します。
    1. <configuration>
    2.     <property>
    3.         <name>dfs.namenode.name.dir</name>
    4.         <value>file:///var/local/hadoop/cache/${user.name}/dfs/name</value>
    5.     </property>
    6.     <property>
    7.         <name>dfs.datanode.data.dir</name>
    8.         <value>file:///var/local/hadoop/cache/${user.name}/dfs/data</value>
    9.     </property>
    10.     <property>
    11.         <name>dfs.namenode.checkpoint.dir</name>
    12.         <value>file:///var/local/hadoop/cache/${user.name}/dfs/namesecondary</value>
    13.     </property>
    14.     <property>
    15.         <name>dfs.replication</name>
    16.         <value>1</value>
    17.     </property>
    18. </configuration>
  3. HDFSをフォーマットします。
    $ sudo -u hdfs ./bin/hdfs namenode -format
  4. 各デーモンを起動します。
    $ sudo -u hdfs ./sbin/hadoop-daemon.sh start namenode
    $ sudo -u hdfs ./sbin/hadoop-daemon.sh start secondarynamenode
    $ sudo -u hdfs ./sbin/hadoop-daemon.sh start datanode
    1. note.pngKerberos認証環境のセットアップを行わない場合、警告が出るようになりました。
      WARN util.KerberosName: Kerberos krb5 configuration not found, setting default realm to empty
  5. HDFS上に必要なディレクトリを作成します。HDFS上のSticky bitは、0.21.0以降で使用できます。
    $ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hadoop /
    $ sudo -u hdfs ./bin/hadoop fs -chmod 755 /
    $ sudo -u hdfs ./bin/hadoop fs -mkdir /user
    $ sudo -u hdfs ./bin/hadoop fs -chown hdfs:hadoop /user
    $ sudo -u hdfs ./bin/hadoop fs -chmod 755 /user
  6. Web UIのアクセスURLは以下の通りです。
    http://localhost:50070/

YARN

  1. 環境変数を設定します(${HADOOP_PREFIX}/etc/hadoop/yarn-env.sh)。以下をファイルの先頭に追加します。将来的には、Hadoop CommonHDFSYARNおよびHadoop MapReduce?の各プロダクトが分離(配布)される予定のようですが、現時点ではオーバーレイ状態で単一アーカイブとして配布されています。したがって、各プロダクトの $*_HOME 環境変数は等しく配布アーカイブのルートを設定します。設定の便宜上、$HADOOP_PREFIX を定義していますが、必須ではありません。この説明では、便宜上 $HADOOP_PREFIX を使用します。
    1. #export JAVA_HOME=/usr/lib/jvm/java-6-sun
    2. #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
    3. #export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-i386
    4. export JAVA_HOME=/usr/lib/jvm/java-6-openjdk-amd64
    5.  
    6. export HADOOP_PREFIX=/usr/local/hadoop
    7. #export HADOOP_CONF_DIR=${HADOOP_PREFIX}/etc/hadoop  # libexec/hadoop-config.sh で設定されるので不要です
    8. export HADOOP_COMMON_HOME=${HADOOP_PREFIX}
    9. export HADOOP_HDFS_HOME=${HADOOP_PREFIX}
    10.  
    11. export YARN_HOME=${HADOOP_PREFIX}
    12. export YARN_PID_DIR=/var/local/hadoop/run/$USER
    13. export YARN_LOG_DIR=/var/local/hadoop/log/$USER
    14.  
    15. export HADOOP_MAPRED_HOME=${HADOOP_PREFIX}
    16.  ...
  2. 設定ファイルを用意します(${HADOOP_PREFIX}/etc/hadoop/yarn-site.xml)。単一サーバでの検証では、あまりにもリソースが少ないとジョブが実行できない場合がありますので、メモリリソースは多めに設定しておきます。
    1. ...
    2. <configuration>
    3.     <property>
    4.         <name>yarn.resourcemanager.scheduler.class</name>
    5.         <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>
    6.         <description>In case you do not want to use the default scheduler</description>
    7.     </property>
    8.     <property>
    9.         <name>yarn.nodemanager.local-dirs</name>
    10.         <value>/var/local/hadoop/cache/${user.name}/nm/local</value>
    11.         <description>the local directories used by the nodemanager
    12.         (default: /tmp/nm-local-dir)</description>
    13.     </property>
    14. <!--
    15.     <property>
    16.         <name>yarn.nodemanager.address</name>
    17.         <value>0.0.0.0:0</value>
    18.         <description>the nodemanagers bind to this port</description>
    19.     </property>
    20. -->
    21.     <property>
    22.         <name>yarn.nodemanager.resource.memory-mb</name>
    23.         <value>8192</value>
    24.         <description>the amount of memory on the NodeManager in GB
    25.         (default: 8192)</description>
    26.     </property>
    27.     <property>
    28.         <name>yarn.nodemanager.remote-app-log-dir</name>
    29.         <value>/var/local/hadoop/log/${user.name}/nm</value>
    30.         <description>directory on hdfs where the application logs are moved to
    31.         (default: /tmp/logs)</description>
    32.     </property>
    33.     <property>
    34.         <name>yarn.nodemanager.log-dirs</name>
    35.         <value>/var/local/hadoop/log/${user.name}/nm</value>
    36.         <description>the directories used by Nodemanagers as log directories
    37.         (default: /tmp/logs)</description>
    38.     </property>
    39.     <property>
    40.         <name>yarn.nodemanager.aux-services</name>
    41.         <value>mapreduce.shuffle</value>
    42.         <description>shuffle service that needs to be set for Map Reduce to run</description>
    43.     </property>
    44.     <property>
    45.         <name>mapreduce.job.hdfs-servers</name>
    46.         <value>${fs.defaultFS}</value>
    47.         <!-- yarn-default.xml でdeprecatedなキー fs.default.name を設定値としているためオーバーライド -->
    48.     </property>
    49. <configuration>
  3. ローカルファイルシステム上に必要なディレクトリを作成します。
    $ sudo mkdir -p /var/local/hadoop/log/yarn/nm    # yarn.nodemanager.log-dirs
    $ sudo chown yarn:hadoop /var/local/hadoop/log/yarn
    $ sudo chown yarn:hadoop /var/local/hadoop/log/yarn/nm
    $ sudo chmod 755 /var/local/hadoop/log/yarn/nm
    $ sudo mkdir -p /var/local/hadoop/log/yarn/nm/local    # yarn.nodemanager.local-dirs
    $ sudo chown yarn:hadoop /var/local/hadoop/log/yarn/nm/local
    $ sudo chmod 755 /var/local/hadoop/log/yarn/nm/local
  4. HDFS上に必要なディレクトリを作成します。
    $ sudo -u hdfs ./bin/hadoop fs -mkdir /var/local/hadoop/log/yarn/nm    # yarn.nodemanager.remote-app-log-dir
    $ sudo -u hdfs ./bin/hadoop fs -chown yarn:hadoop /var/local/hadoop/log/yarn/nm
    $ sudo -u hdfs ./bin/hadoop fs -chmod 1777 /var/local/hadoop/log/yarn/nm
  5. 各デーモンを起動します。
    $ sudo -u yarn ./sbin/yarn-daemon.sh start resourcemanager
    $ sudo -u yarn ./sbin/yarn-daemon.sh start nodemanager
  6. Web UIのアクセスURLは以下の通りです。
    http://localhost:8088/    # ResourceManager
    http://localhost:8042/    # NodeManager

MapReduce?

  1. 設定ファイルを編集します。${HADOOP_PREFIX}/etc/hadoop/mapred-site.xml は存在しないため、新規に作成します。
    1. <configuration>
    2.     <property>
    3.         <name>mapreduce.framework.name</name>
    4.         <value>yarn</value>
    5.         <description>The runtime framework for executing MapReduce jobs.
    6.         Can be one of local, classic or yarn.
    7.         (default: local)
    8.         </description>
    9.     </property>
    10.     <property>
    11.         <name>mapreduce.jobtracker.system.dir</name>
    12.         <value>/var/local/hadoop/cache/mapred/system</value>
    13.         <description>The directory where MapReduce stores control files.
    14.         (default: ${hadoop.tmp.dir}/mapred/system on HDFS)
    15.         </description>
    16.     </property>
    17.     <property>
    18.         <name>yarn.app.mapreduce.am.staging-dir</name>
    19.         <value>/user</value>
    20.     </property>
    21.     <property>
    22.         <name>mapreduce.jobhistory.intermediate-done-dir</name>
    23.         <value>/var/local/hadoop/mapred/history/intermediate_done</value>
    24.     </property> 
    25.     <property>
    26.         <name>mapreduce.jobhistory.done-dir</name>
    27.         <value>/var/local/hadoop/mapred/history/done</value>
    28.     </property> 
    29.  
    30. </configuration>
    1. 【参考】ドキュメントには説明がありませんが、mapreduce.jobtracker.staging.root.dir の設定はすでに有効ではなく、代替は yarn.app.mapreduce.am.staging-dir のようです。なお、他の関連設定のデフォルト値は以下のようです。
      No.設定キーデフォルト値備考
      1yarn.app.mapreduce.am.staging-dir/tmp/hadoop-yarn/staging
      2mapreduce.jobhistory.intermediate-done-dir${yarn.app.mapreduce.am.staging-dir}/history/intermediate_donemapred-default.xml に見えず
      3mapreduce.jobhistory.done-dir${yarn.app.mapreduce.am.staging-dir}/history/donemapred-default.xml に見えず
  2. HDFS上に必要なディレクトリを作成します。
    $ sudo -u hdfs ./bin/hadoop fs -mkdir /var/local/hadoop/mapred/history
    $ sudo -u hdfs ./bin/hadoop fs -chown -R mapred:hadoop /var/local/hadoop/mapred
    $ sudo -u hdfs ./bin/hadoop fs -chmod -R 755 /var/local/hadoop/mapred
  3. 履歴サーバを起動します。
    $ sudo -u mapred ./sbin/mr-jobhistory-daemon.sh start historyserver
  4. 履歴サーバWeb UIのアクセスURLは以下の通りです。
    http://localhost:19888/

テスト

  1. テストユーザを追加し、サンプルジョブを実行してみます。
    $ sudo adduser alice
    $ sudo -u hdfs ./bin/hadoop fs -mkdir /user/alice
    $ sudo -u hdfs ./bin/hadoop fs -chown alice:aclice /user/alice
    $ sudo -u alice ./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.0.0-alpha.jar pi 5 10
    ...

起動プロセスの推移

  1. ジョブ実行前
    $ sudo jps | sort
    2879 NameNode
    2956 SecondaryNameNode
    3006 DataNode
    6952 ResourceManager
    7075 NodeManager
    7367 JobHistoryServer
  2. ジョブ実行中
    $ sudo jps | sort
    2879 NameNode
    2956 SecondaryNameNode
    3006 DataNode
    6952 ResourceManager
    7075 NodeManager
    7367 JobHistoryServer
    8860 RunJar
    8983 MRAppMaster
    9076 YarnChild
    9079 YarnChild
    9081 YarnChild
    9083 YarnChild
    9093 YarnChild
  3. ジョブ終了後
    $ sudo jps | sort
    2879 NameNode
    2956 SecondaryNameNode
    3006 DataNode
    6952 ResourceManager
    7075 NodeManager
    7367 JobHistoryServer

参考リソース

  1. Apache Hadoop 2.0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-08-16 (金) 20:32:49 (2633d)