Hadoopセットアップ > HDP >

info.pngこれは、HDP1.3の最新版のセットアップ手順です。検証した内容を記述しておりますが、詳細かつ正確な情報については、Hortonworksのホームページをご参照ください。

目次

他のバージョンのセットアップ

HDP (Hortonworks Data Platform)

  1. HDP2.1? - Apache Hadoop 2.1ベース。YARN、次世代MapReduce?
  2. HDP2.0 - DEPRECATED Apache Hadoop 2.0ベース。YARN、次世代MapReduce?
  3. HDP1.2 - DEPRECATED Apache Hadoop 1.1ベース。

Apache Hadoop

  1. Hadoop2.1 - YARN、次世代MapReduce?
  2. Hadoop2.0 - DEPRECATED YARN、次世代MapReduce?
  3. Hadoop0.23 - DEPRECATED
  4. Hadoop1.0
  5. Hadoop0.20.2xx - DEPRECATED
  6. Hadoop0.20

はじめのはじめに

  • データ解析プラットフォーム Pig は、Hadoopクラスタ環境がなくとも動作します。Pigを使って、簡単にHadoop利用が効果的かどうかを検証することができます。詳しくは、Hadoopのはじめ方をご参照ください。

はじめに

  • Hadoop のインストールおよびセットアップとは、基本となる分散ファイルシステムとそれを利用して稼働するMapReduce実行環境を構築することです。
  • 抽象的記述性の高い(つまりは人間にとって理解しやすい)大規模計算環境としては、MapReduce実行環境上で動作する PigHive の利用がおすすめです。

配布パッケージ

  • HDP1.3は(redhat.pngRPMで配布されています。Red Hat系のシステムでHDPのリポジトリを追加登録し、それらのパッケージをインストールすることができます。
  • 以下では、centos.pngCentOS 6を例にセットアップの詳細を説明しています。

3つの動作モード

  • Hadoopの動作モードには、スタンドアロン疑似分散完全分散という3つがあります。スタンドアロンが最も簡便ですが、動作を理解するためや開発には疑似分散を、もちろん商用には完全分散を使用するとよいでしょう。

ディレクトリ構成

疑似分散モード(シングルノード)

HDP1.3最新版をセットアップします。 ローカルモードではなく、1機で分散処理環境を起動させます。以下のインスタンスを起動します。

  1. プライマリNameNode
  2. セカンダリNameNode
  3. DataNode
  4. JobTracker
  5. TaskTracker
  6. HistoryServer?

HDPの設定ディレクトリは、/etc/hadoop/conf/ です。

Chefレシピ

info.png参考までに、これはここで説明している疑似分散環境を構築するChefレシピ(ロール)です。

  • cake.pnggrid-chef-repo:/roles/hadoop-pseudo-distributed.rb: これはデフォルトでは、Apache版のHadoopクラスタを構築するロールです。
    • cake.pnggrid-chef-repo:/roles/test-hdp-on-localhost.rb: HDPでクラスタ構築する場合には、このロールのように run_list に yum-hdp および hadoop-pseudo-distributed ロールを追加した上で、node['hadoop']['install_flavor'] 属性でディストリビューションを切り替え、必要に応じて他の属性を設定します。なお、実際に構築を行う hadoop::hdp レシピは、RPMパッケージを用いてHDPのインストールを行います。
      1. name 'test-hdp-on-localhost'
      2. description 'Testing Hortonworks Data Platform on local machine'
      3.  
      4. run_list(
      5.   'role[node_commons]',
      6.   'role[chef_utils]',
      7.   #'role[nameservice-client]',
      8.   'role[ganglia-gmond-ucast-localhost]',
      9.   'role[ganglia-gmetad-localhost]',
      10.   'role[ganglia-web]',
      11.   'role[nagios]',
      12.   'role[yum-hdp]',
      13.   'role[hadoop-pseudo-distributed]',
      14.   #'role[hadoop-pseudo-distributed-with-security]',
      15. )
      16.  
      17. # (...)
      18.  
      19. default_attributes(
      20.   'hdp' => {
      21.     'version' => '1.3.2',
      22.     #'version' => '1.2.3.1',
      23.   },
      24.   'hadoop' => {
      25.     'install_flavor' => 'hdp',
      26.     'HADOOP_CLASSPATH' => '',
      27.     'HADOOP_USER_CLASSPATH_FIRST' => 'false',
      28.     # for 1.x only
      29.     'taskcontroller' => {
      30.       'min.user.id' => '500'
      31.     },
      32.   }
      33. )

ホスト名

  1. Hadoopの各デーモンは起動時に自ホストの名前を参照しますので、疑似分散環境(localhost)で検証する場合には、(必須ではありませんが)一時的に hostname に localhost を設定しておくと無難です。
    $ sudo hostname localhost
  2. hosts ファイルも適切に設定してあることを確認します。
    $ cat /etc/hosts
    127.0.0.1       localhost
    192.168.0.10    this.host.example.com
    ...

LDAP認可環境

  1. シングルノードではOSの静的ファイルによる権限解決で十分ですので、特にLDAPなどをセットアップする必要はありません。

共通

アップグレード

  1. HDP1.3.2のリポジトリを追加します。
    $ sudo wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/1.x/GA/hdp.repo -O /etc/yum.repos.d/hdp.repo
    $ sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/1.x/updates/1.2.5.17/ambari.repo -O /etc/yum.repos.d/ambari.repo
    $ yum repolist
    ...
    repo id                 repo name                                                 status
    HDP-1.x                 Hortonworks Data Platform Version - HDP-1.x                  53
    HDP-UTILS-1.1.0.16      Hortonworks Data Platform Utils Version - HDP-UTILS-1.1.0    61
    Updates-HDP-1.x         HDP-1.x - Updates                                           124
    Updates-ambari-1.2.5.17 ambari-1.2.5.17 - Updates                                     5
    ambari-1.x              Ambari 1.x                                                    5
    base                    CentOS-6 - Base                                           6,381
    extras                  CentOS-6 - Extras                                            13
    updates                 CentOS-6 - Updates                                        1,186
    repolist: 7,828
  2. 以下のコマンドでアップグレードします。
    $ sudo yum upgrade hadoop\*

新規インストール

  1. note.pngOracle JDKはインストールされている前提です。
  2. HDP1.3.2のリポジトリを追加します。
    $ sudo wget -nv http://public-repo-1.hortonworks.com/HDP/centos6/1.x/GA/hdp.repo -O /etc/yum.repos.d/hdp.repo
    $ sudo wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/1.x/updates/1.2.5.17/ambari.repo -O /etc/yum.repos.d/ambari.repo
  3. ノード毎に必要なデーモンパッケージ(疑似分散の場合には全て)をインストールします。
    $ sudo yum install hadoop-{namenode,datanode,secondarynamenode,jobtracker,tasktracker,historyserver}
    1. hdfs、mapredユーザおよびhadoopグループが自動で追加されます。
      $ id hdfs
      uid=497(hdfs) gid=498(hdfs) groups=498(hdfs),499(hadoop)
      $ id mapred
      uid=498(mapred) gid=497(mapred) groups=497(mapred),499(hadoop)
    2. インストール時に各デーモンの自動起動が有効になっていますので、もし運用上、支障があれば無効にします。
      $ chkconfig | grep hadoop
      hadoop-datanode	0:off	1:off	2:on	3:on	4:on	5:on	6:off
      hadoop-historyserver	0:off	1:off	2:on	3:on	4:on	5:on	6:off
      hadoop-jobtracker	0:off	1:off	2:on	3:on	4:on	5:on	6:off
      hadoop-namenode	0:off	1:off	2:on	3:on	4:on	5:on	6:off
      hadoop-secondarynamenode	0:off	1:off	2:on	3:on	4:on	5:on	6:off
      hadoop-tasktracker	0:off	1:off	2:on	3:on	4:on	5:on	6:off
  4. パフォーマンスが改善しますので、ネイティブライブラリもインストールしておきます。note.pngi386版は提供されていませんので、ご注意ください。
    $ sudo yum install hadoop-{libhdfs,native,pipes}
    ...
    $ rpm -ql hadoop-libhdfs
    /usr/include/hdfs.h
    /usr/lib64/libhdfs.la
    /usr/lib64/libhdfs.so
    /usr/lib64/libhdfs.so.0
    /usr/lib64/libhdfs.so.0.0.0
    /usr/share/doc/libhdfs-1.2.0.1.3.2.0-111
    /usr/share/doc/libhdfs-1.2.0.1.3.2.0-111/examples
    /usr/share/doc/libhdfs-1.2.0.1.3.2.0-111/examples/hdfs_read.c
    /usr/share/doc/libhdfs-1.2.0.1.3.2.0-111/examples/hdfs_test.c
    /usr/share/doc/libhdfs-1.2.0.1.3.2.0-111/examples/hdfs_write.c
    $ rpm -ql hadoop-native 
    /usr/lib/hadoop/lib/native
    /usr/lib/hadoop/lib/native/Linux-amd64-64
    /usr/lib/hadoop/lib/native/Linux-amd64-64/libhadoop.a
    /usr/lib/hadoop/lib/native/Linux-amd64-64/libhadoop.la
    /usr/lib/hadoop/lib/native/Linux-amd64-64/libhadoop.so
    /usr/lib/hadoop/lib/native/Linux-amd64-64/libhadoop.so.1
    /usr/lib/hadoop/lib/native/Linux-amd64-64/libhadoop.so.1.0.0
    $ rpm -ql hadoop-pipes 
    /usr/include/hadoop/Pipes.hh
    /usr/include/hadoop/SerialUtils.hh
    /usr/include/hadoop/StringUtils.hh
    /usr/include/hadoop/TemplateFactory.hh
    /usr/lib64/libhadooppipes.a
    /usr/lib64/libhadooputils.a
  5. alternativesシステムを利用して設定セットを管理します。以下の例では、conf.localhost 設定セットを作成し、有効にしています。
    $ sudo cp -R /etc/hadoop/conf.empty /etc/hadoop/conf.localhost
    $ sudo alternatives --install /etc/hadoop/conf hadoop-conf /etc/hadoop/conf.localhost 50
    $ sudo alternatives --display hadoop-conf
    hadoop-conf - status is auto.
     link currently points to /etc/hadoop/conf.localhost
    /etc/hadoop/conf.empty - priority 10
    /etc/hadoop/conf.pseudo - priority 30
    /etc/hadoop/conf.localhost - priority 50
    Current `best' version is /etc/hadoop/conf.localhost.
    • 疑似分散の場合には、以下のように既存の hadoop-conf-pseudo パッケージを利用することも可能ですが、カスタマイズの都合上、この説明では一から設定していきます。
      $ sudo yum install hadoop-conf-pseudo
      ...
      $ rpm -ql hadoop-conf-pseudo
      /etc/hadoop/conf.pseudo
      /etc/hadoop/conf.pseudo/README
      /etc/hadoop/conf.pseudo/capacity-scheduler.xml
      /etc/hadoop/conf.pseudo/configuration.xsl
      /etc/hadoop/conf.pseudo/core-site.xml
      /etc/hadoop/conf.pseudo/fair-scheduler.xml
      /etc/hadoop/conf.pseudo/hadoop-env.sh
      /etc/hadoop/conf.pseudo/hadoop-metrics.properties
      /etc/hadoop/conf.pseudo/hadoop-metrics2.properties
      /etc/hadoop/conf.pseudo/hadoop-policy.xml
      /etc/hadoop/conf.pseudo/hdfs-site.xml
      /etc/hadoop/conf.pseudo/log4j.properties
      /etc/hadoop/conf.pseudo/mapred-queue-acls.xml
      /etc/hadoop/conf.pseudo/mapred-site.xml
      /etc/hadoop/conf.pseudo/masters
      /etc/hadoop/conf.pseudo/slaves
      /etc/hadoop/conf.pseudo/ssl-client.xml.example
      /etc/hadoop/conf.pseudo/ssl-server.xml.example
      /etc/hadoop/conf.pseudo/task-log4j.properties
      /etc/hadoop/conf.pseudo/taskcontroller.cfg
      /var/lib/hadoop
      /var/lib/hadoop/cache
  6. /etc/hadoop/conf/hadoop-env.sh に環境にあわせて以下のような内容を追加します。$HADOOP_PID_DIR はデフォルト(/var/run/hadoop)のままで良いでしょう。
    1. export JAVA_HOME=/usr/java/default
    2. # The directory where pid files are stored. /var/run/hadoop by default.
    3. #export HADOOP_PID_DIR=/grid/vol/0/var/run
    4. # Where log files are stored. /var/log/hadoop by default.
    5. export HADOOP_LOG_DIR=/grid/vol/0/var/log/${USER}
    1. info.pngなお、デフォルトの設定は以下の通りです。
      $ cat /etc/default/hadoop 
      ...
      export HADOOP_HOME_WARN_SUPPRESS=true
      export HADOOP_HOME=/usr/lib/hadoop
      export HADOOP_NAMENODE_USER=hdfs
      export HADOOP_SECONDARYNAMENODE_USER=hdfs
      export HADOOP_DATANODE_USER=hdfs
      export HADOOP_JOBTRACKER_USER=mapred
      export HADOOP_TASKTRACKER_USER=mapred
      export HADOOP_IDENT_STRING=hadoop
      export HADOOP_PID_DIR=/var/run/hadoop
      export HADOOP_LOG_DIR=/var/log/hadoop
  7. 設定ファイル /etc/hadoop/conf/core-site.xml を編集します。文字通りテンポラリという意味での hadoop.tmp.dir 設定は必要ですので、デフォルト設定はそのままとし、以下のセットアップでは永続化が必要なデータの格納場所を明示的に設定変更していきます。
    1. ...
    2. <configuration>
    3.     <property>
    4.         <name>fs.default.name</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.     <property>
    12.         <name>fs.checkpoint.dir</name>
    13.         <value>/grid/vol/0/var/lib/${user.name}/checkpoint</value>
    14.     </property>
    15. </configuration>
    1. note.pngポート9000番は、環境によっては php5-fpm でデフォルトで利用されるようです。ご注意ください。
  8. データなどを格納するディレクトリを用意します。
    $ sudo mkdir -p /grid/vol/0/var/{lib,log,run}
    $ sudo chown -R root:hadoop /grid/vol/0/var
    $ sudo chmod -R 775 /grid/vol/0/var
    1. info.png参考までに複数のHDDを搭載している場合には以下の通りです。
      $ sudo mkdir -p /grid/vol/{0,1,...}/var/lib
      $ sudo mkdir -p /grid/vol/0/var/run
      $ sudo chown -R root:hadoop /grid/vol/{0,1,...}/var
      $ sudo chmod -R 775 /grid/vol/{0,1,...}/var

HDFS

  1. 設定ファイル(/etc/hadoop/conf/hdfs-site.xml)を編集します。
    1. <configuration>
    2.     <property>
    3.         <name>dfs.name.dir</name>
    4.         <value>/grid/vol/0/var/lib/${user.name}/name</value>
    5.     </property>
    6.     <property>
    7.         <name>dfs.data.dir</name>
    8.         <value>/grid/vol/0/var/lib/${user.name}/data</value>
    9.     </property>
    10.     <property>
    11.         <name>dfs.replication</name>
    12.         <value>1</value>
    13.     </property>
    14. </configuration>
  2. HDFSをフォーマットします。
    $ sudo -u hdfs hadoop namenode -format
  3. 各デーモンを起動します。
    $ sudo service hadoop-namenode start
    $ sudo service hadoop-secondarynamenode start
    $ sudo service hadoop-datanamenode start
  4. HDFS上に必要なディレクトリを作成します。クォータ管理できないため、/tmp は作成しません。note.pngなお、HDP1.3のHDFSではまだsticky bitを設定できないため、/tmp ディレクトリを作成した場合、通常のフルアクセスディレクトリとなってしまいます。
    $ sudo -u hdfs hadoop fs -chown hdfs:hdfs /
    $ sudo -u hdfs hadoop fs -chmod 755 /
    $ sudo -u hdfs hadoop fs -mkdir /user
  5. Web UIのアクセスURLは以下の通りです。
    http://localhost:50070/

MapReduce?

  1. 設定ファイル(/etc/hadoop/conf/mapred-site.xml)を編集します。
    1. <configuration>
    2.     <property>
    3.         <name>mapred.job.tracker</name>
    4.         <value>localhost:9001</value>
    5.     </property>
    6.     <property>
    7.         <name>mapred.system.dir</name>
    8.         <value>/grid/vol/0/var/lib/${user.name}/system</value>
    9.     </property>
    10.     <property>
    11.         <name>mapreduce.jobtracker.staging.root.dir</name>
    12.         <value>/user</value>
    13.     </property>
    14. </configuration>
  2. HDFS上に必要なディレクトリを作成します。
    $ sudo -u hdfs hadoop fs -mkdir /grid/vol/0/var/lib/mapred
    $ sudo -u hdfs hadoop fs -chown mapred:mapred /grid/vol/0/var/lib/mapred
  3. 各デーモンを起動します。
    $ sudo service hadoop-jobtracker start
    $ sudo service hadoop-tasktracker start
  4. Web UIのアクセスURLは以下の通りです。
    http://localhost:50030/

テスト

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

完全分散モード

  • 完全分散とは、動作モードというよりはむしろ疑似分散ではただ一つのノードで起動させていた各デーモンを、それぞれ適切な複数の別のノード(群)で運用する環境のことです。もちろん、これが本格的な実運用環境となります。
  • 構築方法は基本的に疑似分散の場合と変わりませんが、以下のような勘所があります。

Chefレシピ

info.png参考までに、これはここで説明している完全分散環境を構築するChefレシピ(ロール)の作成についての解説です。

  • cake.pnggrid-chef-repo:/roles/hadoop-pleiades.rb: まず、これはデフォルトでは、Apache版のHadoopクラスタを構築するロールです。
  • HDPでクラスタ構築する場合には新規のロールを定義し、以下の要領で run_list に yum-hdp およびこの hadoop-pleiades ロールを追加した上で、node['hadoop']['install_flavor'] 属性でディストリビューションを切り替え、必要に応じて他の属性を設定します。なお、実際に構築を行う hadoop::hdp レシピは、RPMパッケージを用いてHDPのインストールを行います。HDPでは、alternativesシステムで設定ファイルセットを切り替えますので、node['hadoop']['hdp']['alternatives']['hadoop-conf'] も適切に設定します。
    1. name 'test-hdp'
    2. description 'Testing Hortonworks Data Platform.'
    3.  
    4. run_list(
    5.   'role[node_commons]',
    6.   'role[chef_utils]',
    7.   #'role[nameservice-client]',
    8.   'role[ganglia-gmond-ucast-localhost]',
    9.   'role[ganglia-gmetad-localhost]',
    10.   'role[ganglia-web]',
    11.   'role[nagios]',
    12.   'role[yum-hdp]',
    13.   'role[hadoop-pleiades]',
    14.   #'role[hadoop-pleiades-with-security]',
    15. )
    16.  
    17. # (...)
    18.  
    19. default_attributes(
    20.   'hdp' => {
    21.     'version' => '1.3.2',
    22.   },
    23.   'hadoop' => {
    24.     'install_flavor' => 'hdp',
    25.     'hdp' => {
    26.       'alternatives' => {
    27.         'hadoop-conf' => {
    28.           'path' => '/etc/hadoop/conf.pleiades',
    29.           'priority' => '40'
    30.         }
    31.       }
    32.     },
    33.     'HADOOP_CLASSPATH' => '',
    34.     'HADOOP_USER_CLASSPATH_FIRST' => 'false',
    35.     # for 1.x only
    36.     'taskcontroller' => {
    37.       'min.user.id' => '500'
    38.     },
    39.   }
    40. )

LDAP認可環境

  1. Hadoopでは協調動作する全ノードで統一的に権限認可(主にグループ解決)を管理する必要がありますので、Name Service Switch (NSS) のバックエンドデータベースとして一般的なLDAPを構築するとよいでしょう。
  2. 基本的なLDAP環境の構築方法については、LDAPセットアップforHadoopをご参照ください。
  3. Hadoop起動ユーザのためのldifファイル(例: hadoop_users.ldif)を作成し、それらのユーザを追加します。note.pngもしLDAPをすでにKerberos化している場合には、以下、認証に関するコマンドパラメータを適切に変更して実行してください。
    $ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f hadoop_users.ldif
    Enter LDAP Password:
    adding new entry "cn=hadoop,ou=groups,dc=grid,dc=example,dc=com"
    
    adding new entry "uid=hadoop,ou=people,dc=grid,dc=example,dc=com"
    
    adding new entry "cn=hdfs,ou=groups,dc=grid,dc=example,dc=com"
    
    adding new entry "uid=hdfs,ou=people,dc=grid,dc=example,dc=com"
    
    adding new entry "cn=mapred,ou=groups,dc=grid,dc=example,dc=com"
    
    adding new entry "uid=mapred,ou=people,dc=grid,dc=example,dc=com"
    
  4. テストユーザのためのldifファイル(例: test_users.ldif)を作成し、そのユーザを追加します。
    $ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f test_users.ldif
    Enter LDAP Password:
    adding new entry "cn=alice,ou=groups,dc=grid,dc=example,dc=com"
    
    adding new entry "uid=alice,ou=people,dc=grid,dc=example,dc=com"

分散監視環境

  1. Ganglia
  2. Nagios

基本設定

  1. 当然ながら、ホスト名はすべて完全修飾名(FQDN)で設定します。
  2. 冗長化のためVIPを付与しているサービス(NameNodeSecondaryNameNodeJobTrackerなど)についてはそのVIPに対するDNS名を設定します。

チェックポイントデータの冗長保存

  1. /etc/hadoop/conf/core-site.xml: fs.checkpoint.dir に複数の格納先を指定することにより、チェックポイントデータを冗長に保存することが可能になります。
    1.     <property>
    2.         <name>fs.checkpoint.dir</name>
    3.         <value>/grid/vol/0/var/lib/${user.name}/checkpoint,/export/home/${user.name}/var/lib/checkpoint</value>
    4.     </property>

HDFSメタデータの冗長保存

  1. /etc/hadoop/conf/hdfs-site.xml: dfs.name.dir に複数の格納先を指定することにより、メタデータを冗長に保存することが可能になります。この場合、指定したディレクトリはあらかじめ作成しておく必要があるようです。
    1.     <property>
    2.         <name>dfs.name.dir</name>
    3.         <value>/grid/vol/0/var/lib/${user.name}/name,/export/home/${user.name}/var/lib/name</value>
    4.     </property>

ジョブ状態情報の永続化

  1. /etc/hadoop/conf/mapred-site.xml: 比較的最近実行されたジョブの実行結果状態をHDFS上に永続化します。保存時間を時単位で設定しますので、(JobTracker障害時等の)ジョブ実行状態の確認が用途のようです。ここに永続化された状態情報は、JobTrackerのWeb UIの表示とは連動せず、hadoop job -status <job_id> コマンドで参照できます*1
    1.     <property>
    2.         <name>mapred.job.tracker.persist.jobstatus.active</name>
    3.         <value>true</value>
    4.         <description>Indicates if persistency of job status information is
    5.           active or not. (default: false)
    6.         </description>
    7.     </property>
    8.     <property>
    9.         <name>mapred.job.tracker.persist.jobstatus.hours</name>
    10.         <value>3</value>
    11.         <description>The number of hours job status information is persisted in DFS.
    12.           The job status information will be available after it drops of the memory
    13.           queue and between jobtracker restarts. With a zero value the job status
    14.           information is not persisted at all in DFS. (default: 0)
    15.         </description>
    16.     </property>
    17.     <property>
    18.         <name>mapred.job.tracker.persist.jobstatus.dir</name>
    19.         <value>/grid/vol/0/var/lib/mapred/jobstatus</value>
    20.         <description>The directory where the job status information is persisted
    21.           in a file system to be available after it drops of the memory queue and
    22.           between jobtracker restarts. (default: /jobtracker/jobsInfo)
    23.         </description>
    24.     </property>

ジョブ実行履歴の永続化

  1. /etc/hadoop/conf/mapred-site.xml: ジョブの実行履歴の保存先をデフォルトのローカルファイルシステムからHDFSに切り替えます。なお、hadoop.job.history.location は履歴の中間ファイルが書き出されるディレクトリで、ローカルファイルシステムのみが設定可能です。
    1.     <property>
    2.         <name>hadoop.job.history.location</name>
    3.         <value>file:///grid/vol/0/var/lib/mapred/history</value>
    4.         <description>hdfs:// is UNusable.</description>
    5.     </property>
    6.     <property>
    7.         <name>mapred.job.tracker.history.completed.location</name>
    8.         <value>hdfs:///grid/vol/0/var/lib/mapred/history/done</value>
    9.     </property>

並列化の徹底

  1. 以下の例では、/grid/vol/{0,1} にそれぞれのディスクをマウントしています。
    $ sudo mkdir -p /grid/vol/{0,1}/var/lib
    $ sudo chown -R root:hadoop /grid/vol/{0,1}/var
    $ sudo chmod -R 775 /grid/vol/{0,1}/var
    $ sudo mkdir -p /grid/vol/{0,1}/tmp
    $ sudo chmod 1777 /grid/vol/{0,1}/tmp
  2. /etc/hadoop/conf/hdfs-site.xml: 当然ながら、レプリカ数も推奨値の3にします。
    1.     <property>
    2.         <name>dfs.data.dir</name>
    3.         <value>/grid/vol/0/var/lib/${user.name}/data,/grid/vol/1/var/lib/${user.name}/data</value>
    4.     </property>
    5.     <property>
    6.         <name>dfs.replication</name>
    7.         <value>3</value>
    8.     </property>
  3. /etc/hadoop/conf/mapred-site.xml
    1.     <property>
    2.         <name>mapred.local.dir</name>
    3.         <value>/grid/vol/0/var/lib/mapred/local,/grid/vol/1/var/lib/mapred/local</value>
    4.         <description>
    5.           The local directory where MapReduce stores intermediate data files.
    6.           May be a comma-separated list of directories on different devices in order to spread disk i/o.
    7.           Directories that do not exist are ignored.
    8.         </description>
    9.     </property>
    10.     <property>
    11.         <name>mapred.temp.dir</name>
    12.         <value>/grid/vol/0/tmp/${user.name}/mapred,/grid/vol/1/tmp/${user.name}/mapred</value>
    13.         <description>
    14.           A shared directory for temporary files.
    15.         </description>
    16.     </property>

ノード管理の徹底

  1. /etc/hadoop/conf/hdfs-site.xml
    1.     <property>
    2.         <name>dfs.hosts</name>
    3.         <value>/grid/usr/hadoop/conf/hosts.include</value>
    4.         <description>
    5.           Names a file that contains a list of hosts that are permitted to connect to the namenode.
    6.           The full pathname of the file must be specified. If the value is empty, all hosts are permitted.
    7.         </description>
    8.     </property>
    9.     <property>
    10.         <name>dfs.hosts.exclude</name>
    11.         <value>/grid/usr/hadoop/conf/hosts.exclude</value>
    12.         <description>
    13.           Names a file that contains a list of hosts that are not permitted to connect to the namenode.
    14.           The full pathname of the file must be specified. If the value is empty, no hosts are excluded.
    15.         </description>
    16.     </property>
  2. /etc/hadoop/conf/mapred-site.xml
    1.     <property>
    2.         <name>mapred.hosts</name>
    3.         <value>/grid/usr/hadoop/conf/hosts.include</value>
    4.         <description>
    5.           Names a file that contains the list of nodes that may connect to the jobtracker.
    6.           If the value is empty, all hosts are permitted.
    7.         </description>
    8.     </property>
    9.     <property>
    10.         <name>mapred.hosts.exclude</name>
    11.         <value>/grid/usr/hadoop/conf/hosts.exclude</value>
    12.         <description>
    13.           Names a file that contains the list of hosts that should be excluded by the jobtracker.
    14.           If the value is empty, no hosts are excluded.
    15.         </description>
    16.     </property>

セキュア設定の有効化

HadoopTips

参考リソース

  1. http://docs.hortonworks.com/
  2. 設定ファイル一式

*1 この情報は、ジョブ完了時に書き出されます。ジョブ実行時にJobTrackerを再起動した場合には、そのジョブの状態情報は失われます。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2013-10-24 (木) 18:36:49 (1639d)