powered by Namazu
HDP1.2セットアップ
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[Hadoopセットアップ]] > [[HDP]] >
&ref(images/note.png,nolink);&color(red){''DEPRECATED!: ...
&ref(images/info.png,nolink);これは、HDP1.2 (Hortonworks ...
* 目次 [#h4b67780]
#contents
* 他のバージョンのセットアップ [#a66c2f8b]
** HDP (Hortonworks Data Platform) [#b1a9f109]
+ [[HDP2.0>HDP2.0セットアップ]] - Apache Hadoop 2.0ベース...
+ HDP1.2 - Apache Hadoop 1.1ベース。
** Apache Hadoop [#gf9b643e]
+ [[Hadoop2.0>Hadoop2.0セットアップ]] - YARN、次世代MapRe...
+ [[Hadoop0.23>Hadoop0.23セットアップ]] - &color(red){''D...
+ [[Hadoop1.0>Hadoop1.0セットアップ]]
+ [[Hadoop0.20.2xx>Hadoop0.20.2xxWithSecurityセットアップ...
+ [[Hadoop0.20>Hadoop0.20セットアップ]]
* はじめのはじめに [#d02d538e]
- データ解析プラットフォーム [[Pig]] は、Hadoopクラスタ環...
* はじめに [#geb634df]
- Hadoop のインストールおよびセットアップとは、基本となる...
- 抽象的記述性の高い(つまりは人間にとって理解しやすい)...
* 配布パッケージ [#w23ed7e4]
- HDP1.2は(&ref(images/redhat.png,nolink);''RPM''で配布...
- 以下では、&ref(images/centos.png,nolink);CentOS 6を例に...
* 3つの動作モード [#k3c87e53]
- Hadoopの動作モードには、''スタンドアロン''、''疑似分散'...
* ディレクトリ構成 [#uead84e2]
- こちらの[[推奨構成例>推奨ディレクトリ構成forHadoop]]で...
* 疑似分散モード(シングルノード) [#vbe8426d]
HDP1.2最新版をセットアップします。
ローカルモードではなく、1機で分散処理環境を起動させます。...
+プライマリNameNode
+セカンダリNameNode
+DataNode
+JobTracker
+TaskTracker
&color(red){HDPの設定ディレクトリは、''/etc/hadoop/conf/'...
** Chefレシピ [#ge906962]
&ref(images/info.png,nolink);参考までに、これはここで説明...
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/...
-- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]...
#geshi(ruby,number){{
name 'test-hdp-on-localhost'
description 'Testing Hortonworks Data Platform on local m...
run_list(
'role[node_commons]',
'role[chef_utils]',
#'role[nameservice-client]',
'role[ganglia-gmond-ucast-localhost]',
'role[ganglia-gmetad-localhost]',
'role[ganglia-web]',
'role[nagios]',
'role[yum-hdp]',
'role[hadoop-pseudo-distributed]',
#'role[hadoop-pseudo-distributed-with-security]',
)
# (...)
default_attributes(
'hdp' => {
#'version' => '2.0.0.2',
'version' => '1.2.3.1',
},
'hadoop' => {
'install_flavor' => 'hdp',
'HADOOP_CLASSPATH' => '',
'HADOOP_USER_CLASSPATH_FIRST' => 'false',
# for 1.x only
'taskcontroller' => {
'min.user.id' => '500'
},
}
)
}}
** ホスト名 [#m9c8b962]
+ Hadoopの各デーモンは起動時に自ホストの名前を参照します...
$ sudo hostname localhost
+ hosts ファイルも適切に設定してあることを確認します。
#geshi{{
$ cat /etc/hosts
127.0.0.1 localhost
192.168.0.10 this.host.example.com
...
}}
** LDAP認可環境 [#g56b7dde]
+ シングルノードではOSの静的ファイルによる権限解決で十分...
** 共通 [#y047bfeb]
*** アップグレード [#v8fc05f4]
+ HDP1.2.3.1のリポジトリを追加します。
#geshi{{
$ sudo wget http://public-repo-1.hortonworks.com/HDP/cen...
$ yum repolist
...
repo id repo name ...
HDP-1.x Hortonworks Data Platform Version - H...
HDP-UTILS-1.1.0.15 Hortonworks Data Platform Utils Versi...
Updates-HDP-1.x HDP-1.x - Updates ...
Updates-ambari-1.x ambari-1.x - Updates ...
ambari-1.x Ambari 1.x ...
base CentOS-6 - Base ...
extras CentOS-6 - Extras ...
updates CentOS-6 - Updates ...
repolist: 7,058
}}
+ 以下のコマンドでアップグレードします。
#geshi{{
$ sudo yum upgrade hadoop\*
}}
*** 新規インストール [#d3612f8e]
+ &ref(images/note.png,nolink);Oracle JDKはインストールさ...
+ HDP1.2.3.1のリポジトリを追加します。
#geshi{{
$ sudo wget -nv http://public-repo-1.hortonworks.com/HDP/...
$ sudo wget -nv http://public-repo-1.hortonworks.com/amba...
}}
+ ノード毎に必要なデーモンパッケージ(疑似分散の場合には...
$ sudo yum install hadoop-{namenode,datanode,secondaryna...
++ hdfs、mapredユーザおよびhadoopグループが自動で追加され...
#geshi{{
$ 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(ha...
}}
++ インストール時に各デーモンの自動起動が有効になっていま...
#geshi{{
$ chkconfig | grep hadoop
hadoop-datanode 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 ...
hadoop-tasktracker 0:off 1:off 2:on 3:on 4:on 5:on 6:off
}}
+ パフォーマンスが改善しますので、ネイティブライブラリも...
#geshi{{
$ 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.1.2.21
/usr/share/doc/libhdfs-1.1.2.21/examples
/usr/share/doc/libhdfs-1.1.2.21/examples/hdfs_read.c
/usr/share/doc/libhdfs-1.1.2.21/examples/hdfs_test.c
/usr/share/doc/libhdfs-1.1.2.21/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....
$ 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
}}
+ ''alternatives''システムを利用して設定セットを管理しま...
#geshi{{
$ sudo cp -R /etc/hadoop/conf.empty /etc/hadoop/conf.loca...
$ sudo alternatives --install /etc/hadoop/conf hadoop-con...
$ 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-p...
#geshi{{
$ 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/taskcontroller.cfg
/var/lib/hadoop
/var/lib/hadoop/cache
}}
+ /etc/hadoop/conf/''hadoop-env.sh'' に環境にあわせて以下...
#geshi(bash,number){{
export JAVA_HOME=/usr/java/default
# The directory where pid files are stored. /var/run/hado...
#export HADOOP_PID_DIR=/grid/vol/0/var/run
# Where log files are stored. /var/log/hadoop by default.
export HADOOP_LOG_DIR=/grid/vol/0/var/log/${USER}
}}
++ &ref(images/info.png,nolink);なお、デフォルトの設定は...
#geshi{{
$ 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
}}
+ 設定ファイル /etc/hadoop/conf/''core-site.xml'' を編集...
#geshi(xml,number){{
...
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/checkpoin...
</property>
</configuration>
}}
++ &ref(images/note.png,nolink);ポート''9000''番は、環境...
+ データなどを格納するディレクトリを用意します。
$ 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
++ &ref(images/info.png,nolink);参考までに複数の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 [#aad90b68]
+ 設定ファイル(/etc/hadoop/conf/''hdfs-site.xml'')を編...
#geshi(xml,number){{
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/name</val...
</property>
<property>
<name>dfs.data.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/data</val...
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
}}
+ HDFSをフォーマットします。
$ sudo -u hdfs hadoop namenode -format
+ 各デーモンを起動します。
$ sudo service hadoop-namenode start
$ sudo service hadoop-secondarynamenode start
$ sudo service hadoop-datanamenode start
+ HDFS上に必要なディレクトリを作成します。クォータ管理で...
$ sudo -u hdfs hadoop fs -chown hdfs:hdfs /
$ sudo -u hdfs hadoop fs -chmod 755 /
$ sudo -u hdfs hadoop fs -mkdir /user
+ Web UIのアクセスURLは以下の通りです。
http://localhost:50070/
** MapReduce [#vb3abe83]
+ 設定ファイル(/etc/hadoop/conf/''mapred-site.xml'')を...
#geshi(xml,number){{
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/system</v...
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
</configuration>
}}
+ HDFS上に必要なディレクトリを作成します。
$ sudo -u hdfs hadoop fs -mkdir /grid/vol/0/var/lib/mapred
$ sudo -u hdfs hadoop fs -chown mapred:mapred /grid/vol/...
+ 各デーモンを起動します。
$ sudo service hadoop-jobtracker start
$ sudo service hadoop-tasktracker start
+ Web UIのアクセスURLは以下の通りです。
http://localhost:50030/
** テスト [#vd908eb6]
+ テストユーザを追加し、サンプルジョブを実行してみます。
#geshi{{
$ 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-example...
}}
* 完全分散モード [#k106fd16]
- 完全分散とは、動作モードというよりはむしろ疑似分散では...
- 構築方法は基本的に疑似分散の場合と変わりませんが、以下...
** Chefレシピ [#u9b38577]
&ref(images/info.png,nolink);参考までに、これはここで説明...
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/...
- HDPでクラスタ構築する場合には新規のロールを定義し、以下...
#geshi(ruby,number){{
name 'test-hdp'
description 'Testing Hortonworks Data Platform.'
run_list(
'role[node_commons]',
'role[chef_utils]',
#'role[nameservice-client]',
'role[ganglia-gmond-ucast-localhost]',
'role[ganglia-gmetad-localhost]',
'role[ganglia-web]',
'role[nagios]',
'role[yum-hdp]',
'role[hadoop-pleiades]',
#'role[hadoop-pleiades-with-security]',
)
# (...)
default_attributes(
'hdp' => {
#'version' => '2.0.0.2',
'version' => '1.2.3.1',
},
'hadoop' => {
'install_flavor' => 'hdp',
'hdp' => {
'alternatives' => {
'hadoop-conf' => {
'path' => '/etc/hadoop/conf.pleiades',
'priority' => '40'
}
}
},
'HADOOP_CLASSPATH' => '',
'HADOOP_USER_CLASSPATH_FIRST' => 'false',
# for 1.x only
'taskcontroller' => {
'min.user.id' => '500'
},
}
)
}}
** LDAP認可環境 [#occaa31d]
+ Hadoopでは協調動作する全ノードで統一的に権限認可(主に...
//+ CDH3には ''hadoop.security.group.mapping'' に設定する...
+ 基本的なLDAP環境の構築方法については、[[LDAPセットアッ...
+ Hadoop起動ユーザのためのldifファイル(例: [[hadoop_user...
$ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f ha...
Enter LDAP Password:
adding new entry "cn=hadoop,ou=groups,dc=grid,dc=example...
adding new entry "uid=hadoop,ou=people,dc=grid,dc=exampl...
adding new entry "cn=hdfs,ou=groups,dc=grid,dc=example,d...
adding new entry "uid=hdfs,ou=people,dc=grid,dc=example,...
adding new entry "cn=mapred,ou=groups,dc=grid,dc=example...
adding new entry "uid=mapred,ou=people,dc=grid,dc=exampl...
+ テストユーザのためのldifファイル(例: [[test_users.ldif...
$ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f te...
Enter LDAP Password:
adding new entry "cn=alice,ou=groups,dc=grid,dc=example,...
adding new entry "uid=alice,ou=people,dc=grid,dc=example...
** 分散監視環境 [#hf7697a3]
+ [[Ganglia>GangliaセットアップforHadoop]]
+ [[Nagios>NagiosセットアップforHadoop]]
** 基本設定 [#c202608b]
+ 当然ながら、ホスト名はすべて完全修飾名(FQDN)で設定し...
+ 冗長化のためVIPを付与しているサービス(NameNode、Second...
** チェックポイントデータの冗長保存 [#hba6cc9c]
+ /etc/hadoop/conf/''core-site.xml'': fs.checkpoint.dir ...
#geshi(xml,number){{
<property>
<name>fs.checkpoint.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/checkpoin...
</property>
}}
** HDFSメタデータの冗長保存 [#wd46e14c]
+ /etc/hadoop/conf/''hdfs-site.xml'': dfs.name.dir に複数...
#geshi(xml,number){{
<property>
<name>dfs.name.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/name,/exp...
</property>
}}
** ジョブ状態情報の永続化 [#u93ea5e3]
+ /etc/hadoop/conf/''mapred-site.xml'': 比較的最近実行さ...
#geshi(xml,number){{
<property>
<name>mapred.job.tracker.persist.jobstatus.active...
<value>true</value>
<description>Indicates if persistency of job stat...
active or not. (default: false)
</description>
</property>
<property>
<name>mapred.job.tracker.persist.jobstatus.hours<...
<value>3</value>
<description>The number of hours job status infor...
The job status information will be available af...
queue and between jobtracker restarts. With a z...
information is not persisted at all in DFS. (de...
</description>
</property>
<property>
<name>mapred.job.tracker.persist.jobstatus.dir</n...
<value>/grid/vol/0/var/lib/mapred/jobstatus</value>
<description>The directory where the job status i...
in a file system to be available after it drops...
between jobtracker restarts. (default: /jobtrac...
</description>
</property>
}}
** ジョブ実行履歴の永続化 [#k5b6f6c0]
+ /etc/hadoop/conf/''mapred-site.xml'': ジョブの実行履歴...
#geshi(xml,number){{
<property>
<name>hadoop.job.history.location</name>
<value>file:///grid/vol/0/var/lib/mapred/history<...
<description>hdfs:// is UNusable.</description>
</property>
<property>
<name>mapred.job.tracker.history.completed.locati...
<value>hdfs:///grid/vol/0/var/lib/mapred/history/...
</property>
}}
** 並列化の徹底 [#a2a3a10b]
+ 以下の例では、/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
+ /etc/hadoop/conf/''hdfs-site.xml'': 当然ながら、レプリ...
#geshi(xml,number){{
<property>
<name>dfs.data.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/data,/gri...
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
}}
+ /etc/hadoop/conf/''mapred-site.xml''
#geshi(xml,number){{
<property>
<name>mapred.local.dir</name>
<value>/grid/vol/0/var/lib/mapred/local,/grid/vol...
<description>
The local directory where MapReduce stores inte...
May be a comma-separated list of directories on...
Directories that do not exist are ignored.
</description>
</property>
<property>
<name>mapred.temp.dir</name>
<value>/grid/vol/0/tmp/${user.name}/mapred,/grid/...
<description>
A shared directory for temporary files.
</description>
</property>
}}
** ノード管理の徹底 [#qb783683]
+ /etc/hadoop/conf/''hdfs-site.xml''
#geshi(xml,number){{
<property>
<name>dfs.hosts</name>
<value>/grid/usr/hadoop/conf/hosts.include</value>
<description>
Names a file that contains a list of hosts that...
The full pathname of the file must be specified...
</description>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/grid/usr/hadoop/conf/hosts.exclude</value>
<description>
Names a file that contains a list of hosts that...
The full pathname of the file must be specified...
</description>
</property>
}}
+ /etc/hadoop/conf/''mapred-site.xml''
#geshi(xml,number){{
<property>
<name>mapred.hosts</name>
<value>/grid/usr/hadoop/conf/hosts.include</value>
<description>
Names a file that contains the list of nodes th...
If the value is empty, all hosts are permitted.
</description>
</property>
<property>
<name>mapred.hosts.exclude</name>
<value>/grid/usr/hadoop/conf/hosts.exclude</value>
<description>
Names a file that contains the list of hosts th...
If the value is empty, no hosts are excluded.
</description>
</property>
}}
** セキュア設定の有効化 [#bd1495d8]
- [[HDP1.2withSecurityセットアップ]]
* HadoopTips [#rb7c6d54]
-[[こちら>HadoopTips]]
- 運用については、[[こちら>Hadoop運用]]を参照してください。
* 参考リソース [#c4233d00]
+ http://docs.hortonworks.com/
//+ [[設定ファイル一式>metasearchSvn:/hadoop_conf/branche...
終了行:
[[Hadoopセットアップ]] > [[HDP]] >
&ref(images/note.png,nolink);&color(red){''DEPRECATED!: ...
&ref(images/info.png,nolink);これは、HDP1.2 (Hortonworks ...
* 目次 [#h4b67780]
#contents
* 他のバージョンのセットアップ [#a66c2f8b]
** HDP (Hortonworks Data Platform) [#b1a9f109]
+ [[HDP2.0>HDP2.0セットアップ]] - Apache Hadoop 2.0ベース...
+ HDP1.2 - Apache Hadoop 1.1ベース。
** Apache Hadoop [#gf9b643e]
+ [[Hadoop2.0>Hadoop2.0セットアップ]] - YARN、次世代MapRe...
+ [[Hadoop0.23>Hadoop0.23セットアップ]] - &color(red){''D...
+ [[Hadoop1.0>Hadoop1.0セットアップ]]
+ [[Hadoop0.20.2xx>Hadoop0.20.2xxWithSecurityセットアップ...
+ [[Hadoop0.20>Hadoop0.20セットアップ]]
* はじめのはじめに [#d02d538e]
- データ解析プラットフォーム [[Pig]] は、Hadoopクラスタ環...
* はじめに [#geb634df]
- Hadoop のインストールおよびセットアップとは、基本となる...
- 抽象的記述性の高い(つまりは人間にとって理解しやすい)...
* 配布パッケージ [#w23ed7e4]
- HDP1.2は(&ref(images/redhat.png,nolink);''RPM''で配布...
- 以下では、&ref(images/centos.png,nolink);CentOS 6を例に...
* 3つの動作モード [#k3c87e53]
- Hadoopの動作モードには、''スタンドアロン''、''疑似分散'...
* ディレクトリ構成 [#uead84e2]
- こちらの[[推奨構成例>推奨ディレクトリ構成forHadoop]]で...
* 疑似分散モード(シングルノード) [#vbe8426d]
HDP1.2最新版をセットアップします。
ローカルモードではなく、1機で分散処理環境を起動させます。...
+プライマリNameNode
+セカンダリNameNode
+DataNode
+JobTracker
+TaskTracker
&color(red){HDPの設定ディレクトリは、''/etc/hadoop/conf/'...
** Chefレシピ [#ge906962]
&ref(images/info.png,nolink);参考までに、これはここで説明...
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/...
-- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]...
#geshi(ruby,number){{
name 'test-hdp-on-localhost'
description 'Testing Hortonworks Data Platform on local m...
run_list(
'role[node_commons]',
'role[chef_utils]',
#'role[nameservice-client]',
'role[ganglia-gmond-ucast-localhost]',
'role[ganglia-gmetad-localhost]',
'role[ganglia-web]',
'role[nagios]',
'role[yum-hdp]',
'role[hadoop-pseudo-distributed]',
#'role[hadoop-pseudo-distributed-with-security]',
)
# (...)
default_attributes(
'hdp' => {
#'version' => '2.0.0.2',
'version' => '1.2.3.1',
},
'hadoop' => {
'install_flavor' => 'hdp',
'HADOOP_CLASSPATH' => '',
'HADOOP_USER_CLASSPATH_FIRST' => 'false',
# for 1.x only
'taskcontroller' => {
'min.user.id' => '500'
},
}
)
}}
** ホスト名 [#m9c8b962]
+ Hadoopの各デーモンは起動時に自ホストの名前を参照します...
$ sudo hostname localhost
+ hosts ファイルも適切に設定してあることを確認します。
#geshi{{
$ cat /etc/hosts
127.0.0.1 localhost
192.168.0.10 this.host.example.com
...
}}
** LDAP認可環境 [#g56b7dde]
+ シングルノードではOSの静的ファイルによる権限解決で十分...
** 共通 [#y047bfeb]
*** アップグレード [#v8fc05f4]
+ HDP1.2.3.1のリポジトリを追加します。
#geshi{{
$ sudo wget http://public-repo-1.hortonworks.com/HDP/cen...
$ yum repolist
...
repo id repo name ...
HDP-1.x Hortonworks Data Platform Version - H...
HDP-UTILS-1.1.0.15 Hortonworks Data Platform Utils Versi...
Updates-HDP-1.x HDP-1.x - Updates ...
Updates-ambari-1.x ambari-1.x - Updates ...
ambari-1.x Ambari 1.x ...
base CentOS-6 - Base ...
extras CentOS-6 - Extras ...
updates CentOS-6 - Updates ...
repolist: 7,058
}}
+ 以下のコマンドでアップグレードします。
#geshi{{
$ sudo yum upgrade hadoop\*
}}
*** 新規インストール [#d3612f8e]
+ &ref(images/note.png,nolink);Oracle JDKはインストールさ...
+ HDP1.2.3.1のリポジトリを追加します。
#geshi{{
$ sudo wget -nv http://public-repo-1.hortonworks.com/HDP/...
$ sudo wget -nv http://public-repo-1.hortonworks.com/amba...
}}
+ ノード毎に必要なデーモンパッケージ(疑似分散の場合には...
$ sudo yum install hadoop-{namenode,datanode,secondaryna...
++ hdfs、mapredユーザおよびhadoopグループが自動で追加され...
#geshi{{
$ 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(ha...
}}
++ インストール時に各デーモンの自動起動が有効になっていま...
#geshi{{
$ chkconfig | grep hadoop
hadoop-datanode 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 ...
hadoop-tasktracker 0:off 1:off 2:on 3:on 4:on 5:on 6:off
}}
+ パフォーマンスが改善しますので、ネイティブライブラリも...
#geshi{{
$ 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.1.2.21
/usr/share/doc/libhdfs-1.1.2.21/examples
/usr/share/doc/libhdfs-1.1.2.21/examples/hdfs_read.c
/usr/share/doc/libhdfs-1.1.2.21/examples/hdfs_test.c
/usr/share/doc/libhdfs-1.1.2.21/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....
$ 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
}}
+ ''alternatives''システムを利用して設定セットを管理しま...
#geshi{{
$ sudo cp -R /etc/hadoop/conf.empty /etc/hadoop/conf.loca...
$ sudo alternatives --install /etc/hadoop/conf hadoop-con...
$ 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-p...
#geshi{{
$ 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/taskcontroller.cfg
/var/lib/hadoop
/var/lib/hadoop/cache
}}
+ /etc/hadoop/conf/''hadoop-env.sh'' に環境にあわせて以下...
#geshi(bash,number){{
export JAVA_HOME=/usr/java/default
# The directory where pid files are stored. /var/run/hado...
#export HADOOP_PID_DIR=/grid/vol/0/var/run
# Where log files are stored. /var/log/hadoop by default.
export HADOOP_LOG_DIR=/grid/vol/0/var/log/${USER}
}}
++ &ref(images/info.png,nolink);なお、デフォルトの設定は...
#geshi{{
$ 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
}}
+ 設定ファイル /etc/hadoop/conf/''core-site.xml'' を編集...
#geshi(xml,number){{
...
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
</property>
<property>
<name>fs.checkpoint.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/checkpoin...
</property>
</configuration>
}}
++ &ref(images/note.png,nolink);ポート''9000''番は、環境...
+ データなどを格納するディレクトリを用意します。
$ 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
++ &ref(images/info.png,nolink);参考までに複数の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 [#aad90b68]
+ 設定ファイル(/etc/hadoop/conf/''hdfs-site.xml'')を編...
#geshi(xml,number){{
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/name</val...
</property>
<property>
<name>dfs.data.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/data</val...
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
}}
+ HDFSをフォーマットします。
$ sudo -u hdfs hadoop namenode -format
+ 各デーモンを起動します。
$ sudo service hadoop-namenode start
$ sudo service hadoop-secondarynamenode start
$ sudo service hadoop-datanamenode start
+ HDFS上に必要なディレクトリを作成します。クォータ管理で...
$ sudo -u hdfs hadoop fs -chown hdfs:hdfs /
$ sudo -u hdfs hadoop fs -chmod 755 /
$ sudo -u hdfs hadoop fs -mkdir /user
+ Web UIのアクセスURLは以下の通りです。
http://localhost:50070/
** MapReduce [#vb3abe83]
+ 設定ファイル(/etc/hadoop/conf/''mapred-site.xml'')を...
#geshi(xml,number){{
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/system</v...
</property>
<property>
<name>mapreduce.jobtracker.staging.root.dir</name>
<value>/user</value>
</property>
</configuration>
}}
+ HDFS上に必要なディレクトリを作成します。
$ sudo -u hdfs hadoop fs -mkdir /grid/vol/0/var/lib/mapred
$ sudo -u hdfs hadoop fs -chown mapred:mapred /grid/vol/...
+ 各デーモンを起動します。
$ sudo service hadoop-jobtracker start
$ sudo service hadoop-tasktracker start
+ Web UIのアクセスURLは以下の通りです。
http://localhost:50030/
** テスト [#vd908eb6]
+ テストユーザを追加し、サンプルジョブを実行してみます。
#geshi{{
$ 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-example...
}}
* 完全分散モード [#k106fd16]
- 完全分散とは、動作モードというよりはむしろ疑似分散では...
- 構築方法は基本的に疑似分散の場合と変わりませんが、以下...
** Chefレシピ [#u9b38577]
&ref(images/info.png,nolink);参考までに、これはここで説明...
- &ref(images/cake.png,nolink);[[grid-chef-repo:/roles]]/...
- HDPでクラスタ構築する場合には新規のロールを定義し、以下...
#geshi(ruby,number){{
name 'test-hdp'
description 'Testing Hortonworks Data Platform.'
run_list(
'role[node_commons]',
'role[chef_utils]',
#'role[nameservice-client]',
'role[ganglia-gmond-ucast-localhost]',
'role[ganglia-gmetad-localhost]',
'role[ganglia-web]',
'role[nagios]',
'role[yum-hdp]',
'role[hadoop-pleiades]',
#'role[hadoop-pleiades-with-security]',
)
# (...)
default_attributes(
'hdp' => {
#'version' => '2.0.0.2',
'version' => '1.2.3.1',
},
'hadoop' => {
'install_flavor' => 'hdp',
'hdp' => {
'alternatives' => {
'hadoop-conf' => {
'path' => '/etc/hadoop/conf.pleiades',
'priority' => '40'
}
}
},
'HADOOP_CLASSPATH' => '',
'HADOOP_USER_CLASSPATH_FIRST' => 'false',
# for 1.x only
'taskcontroller' => {
'min.user.id' => '500'
},
}
)
}}
** LDAP認可環境 [#occaa31d]
+ Hadoopでは協調動作する全ノードで統一的に権限認可(主に...
//+ CDH3には ''hadoop.security.group.mapping'' に設定する...
+ 基本的なLDAP環境の構築方法については、[[LDAPセットアッ...
+ Hadoop起動ユーザのためのldifファイル(例: [[hadoop_user...
$ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f ha...
Enter LDAP Password:
adding new entry "cn=hadoop,ou=groups,dc=grid,dc=example...
adding new entry "uid=hadoop,ou=people,dc=grid,dc=exampl...
adding new entry "cn=hdfs,ou=groups,dc=grid,dc=example,d...
adding new entry "uid=hdfs,ou=people,dc=grid,dc=example,...
adding new entry "cn=mapred,ou=groups,dc=grid,dc=example...
adding new entry "uid=mapred,ou=people,dc=grid,dc=exampl...
+ テストユーザのためのldifファイル(例: [[test_users.ldif...
$ ldapadd -cxWD cn=admin,dc=grid,dc=example,dc=com -f te...
Enter LDAP Password:
adding new entry "cn=alice,ou=groups,dc=grid,dc=example,...
adding new entry "uid=alice,ou=people,dc=grid,dc=example...
** 分散監視環境 [#hf7697a3]
+ [[Ganglia>GangliaセットアップforHadoop]]
+ [[Nagios>NagiosセットアップforHadoop]]
** 基本設定 [#c202608b]
+ 当然ながら、ホスト名はすべて完全修飾名(FQDN)で設定し...
+ 冗長化のためVIPを付与しているサービス(NameNode、Second...
** チェックポイントデータの冗長保存 [#hba6cc9c]
+ /etc/hadoop/conf/''core-site.xml'': fs.checkpoint.dir ...
#geshi(xml,number){{
<property>
<name>fs.checkpoint.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/checkpoin...
</property>
}}
** HDFSメタデータの冗長保存 [#wd46e14c]
+ /etc/hadoop/conf/''hdfs-site.xml'': dfs.name.dir に複数...
#geshi(xml,number){{
<property>
<name>dfs.name.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/name,/exp...
</property>
}}
** ジョブ状態情報の永続化 [#u93ea5e3]
+ /etc/hadoop/conf/''mapred-site.xml'': 比較的最近実行さ...
#geshi(xml,number){{
<property>
<name>mapred.job.tracker.persist.jobstatus.active...
<value>true</value>
<description>Indicates if persistency of job stat...
active or not. (default: false)
</description>
</property>
<property>
<name>mapred.job.tracker.persist.jobstatus.hours<...
<value>3</value>
<description>The number of hours job status infor...
The job status information will be available af...
queue and between jobtracker restarts. With a z...
information is not persisted at all in DFS. (de...
</description>
</property>
<property>
<name>mapred.job.tracker.persist.jobstatus.dir</n...
<value>/grid/vol/0/var/lib/mapred/jobstatus</value>
<description>The directory where the job status i...
in a file system to be available after it drops...
between jobtracker restarts. (default: /jobtrac...
</description>
</property>
}}
** ジョブ実行履歴の永続化 [#k5b6f6c0]
+ /etc/hadoop/conf/''mapred-site.xml'': ジョブの実行履歴...
#geshi(xml,number){{
<property>
<name>hadoop.job.history.location</name>
<value>file:///grid/vol/0/var/lib/mapred/history<...
<description>hdfs:// is UNusable.</description>
</property>
<property>
<name>mapred.job.tracker.history.completed.locati...
<value>hdfs:///grid/vol/0/var/lib/mapred/history/...
</property>
}}
** 並列化の徹底 [#a2a3a10b]
+ 以下の例では、/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
+ /etc/hadoop/conf/''hdfs-site.xml'': 当然ながら、レプリ...
#geshi(xml,number){{
<property>
<name>dfs.data.dir</name>
<value>/grid/vol/0/var/lib/${user.name}/data,/gri...
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
}}
+ /etc/hadoop/conf/''mapred-site.xml''
#geshi(xml,number){{
<property>
<name>mapred.local.dir</name>
<value>/grid/vol/0/var/lib/mapred/local,/grid/vol...
<description>
The local directory where MapReduce stores inte...
May be a comma-separated list of directories on...
Directories that do not exist are ignored.
</description>
</property>
<property>
<name>mapred.temp.dir</name>
<value>/grid/vol/0/tmp/${user.name}/mapred,/grid/...
<description>
A shared directory for temporary files.
</description>
</property>
}}
** ノード管理の徹底 [#qb783683]
+ /etc/hadoop/conf/''hdfs-site.xml''
#geshi(xml,number){{
<property>
<name>dfs.hosts</name>
<value>/grid/usr/hadoop/conf/hosts.include</value>
<description>
Names a file that contains a list of hosts that...
The full pathname of the file must be specified...
</description>
</property>
<property>
<name>dfs.hosts.exclude</name>
<value>/grid/usr/hadoop/conf/hosts.exclude</value>
<description>
Names a file that contains a list of hosts that...
The full pathname of the file must be specified...
</description>
</property>
}}
+ /etc/hadoop/conf/''mapred-site.xml''
#geshi(xml,number){{
<property>
<name>mapred.hosts</name>
<value>/grid/usr/hadoop/conf/hosts.include</value>
<description>
Names a file that contains the list of nodes th...
If the value is empty, all hosts are permitted.
</description>
</property>
<property>
<name>mapred.hosts.exclude</name>
<value>/grid/usr/hadoop/conf/hosts.exclude</value>
<description>
Names a file that contains the list of hosts th...
If the value is empty, no hosts are excluded.
</description>
</property>
}}
** セキュア設定の有効化 [#bd1495d8]
- [[HDP1.2withSecurityセットアップ]]
* HadoopTips [#rb7c6d54]
-[[こちら>HadoopTips]]
- 運用については、[[こちら>Hadoop運用]]を参照してください。
* 参考リソース [#c4233d00]
+ http://docs.hortonworks.com/
//+ [[設定ファイル一式>metasearchSvn:/hadoop_conf/branche...
ページ名: