CDH3(Cloudera's Distribution including Apache Hadoop v3)のインストールについて。
|
|
|
CDH(Cloudera's Distribution including Apache Hadoop)は、Hadoopのディストリビューション。[2011-09-25]
HadoopとCDHの関係は、例えばLinuxとRedHatの関係と同じ。
つまり元のApache Hadoopをカスタマイズし(パッチを当て)て配布している。
CDHの中にはHadoop関連プロダクト(Hive・PigやHBase・Sqoop等)も含まれ、それらは個別にインストールする。
したがって本来は「CDHをインストールする」と言うのは正しくなくて、「CDH版のHadoopをインストールする」「CDH版のHiveをインストールする」と言うのが正しい。
CDH3のアーカイブをダウンロードしてくれば、普通のHadoopのWindowsへのインストールと同様にインストールできる。[2011-11-16]
$ cd /usr/local $ tar xf $(cygpath -u "C:\Users\hishidama\Downloads\hadoop-0.20.2-cdh3u2.tar.gz")
$ ln -s "/cygdrive/c/Program Files (x86)/Java/jdk1.6.0_27" /usr/local/jdk1.6
HADOOP_HOME | D:/cygwin/usr/local/hadoop-0.20.2-cdh3u2 |
|
Path | 〜;%HADOOP_HOME%\bin |
既存のPATHの設定の末尾に追加。 |
# the root of the Hadoop installation
if [ -z "$HADOOP_HOME" ]; then
export HADOOP_HOME=`dirname "$this"`/..
else
export HADOOP_HOME=$(cygpath -u "$HADOOP_HOME")
fi
# export JAVA_HOME=/usr/lib/j2sdk1.6-sun
export JAVA_HOME=/usr/local/jdk1.6
$ hadoop $ hadoop classpath …Windowsとしてのパスが表示されればOK $ hadoop version …CDH3のバージョンが表示されればOK
CentOSへは、yumコマンドを使用してインストールすることが出来る。[2011-09-25]
CentOS5 | http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo |
CentOS6 | http://archive.cloudera.com/redhat/6/x86_64/cdh/cloudera-cdh3.repo |
# cd /etc/yum.repos.d/ # wget http://archive.cloudera.com/redhat/cdh/cloudera-cdh3.repo # yum update yum
# yum install -y hadoop-0.20これが正常終了すると、自動的にhdfsとmapredというユーザーが作られる。
$ hadoop
$ hadoop fs -ls
$ hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar pi 4 2000 ←円周率を計算するサンプル
ちなみに、「yum search hadoop」でHadoop関連アプリケーションの一覧が表示される。
「yum list installed | grep hadoop」でHadoop関連のインストール済みアプリケーション一覧が表示される。
環境変数HADOOP_HOMEを定義するときは、「/usr/lib/hadoop」を指定する。(ただし実体は/usr/lib/hadoop-0.20にある)
コンフィグファイルは「/etc/hadoop/conf」を指定する。(ただし実体は/etc/hadoop-0.20にあり、デフォルトではその下のconf.emptyを指している。別のconfへの切り替えにはalternativesコマンドを使用する)
CDH3のアーカイブの中のsrcディレクトリー内にCDH3のソースが入っている。[2011-11-16]
yumコマンドを使ってソースをダウンロードすることも出来る。[2012-01-21]
# yum -y install hadoop-0.20-source
この場合、「/usr/src/hadoop-0.20」にソースがインストールされる。
CDH3のcore-site.xmlやhdfs-site.xml・mapred-site.xmlのデフォルト値は、以下のページで公開されている。[2012-03-16]
CentOSにCDH3の擬似分散環境を作る方法。[2012-03-16]
以下のコマンドを実行して擬似分散環境の設定ファイルをインストールする。
# yum -y install hadoop-0.20-conf-pseudo
インストールされると、/etc/hadoop-0.20/conf.pseudo
が作成される。
(また、HDFSのフォーマットも行われる)
CDHではconfの実体(confが指す場所)はalternativesによって制御されているので、以下のコマンドで確認できる。
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - ステータスは手動です。
リンクは現在 /etc/hadoop-0.20/conf.empty を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
現在の「最適」バージョンは /etc/hadoop-0.20/conf.pseudo です。
conf.emptyはスタンドアローンモード用の定義なので、擬似分散環境の定義に切り替えてやる。
# alternatives --config hadoop-0.20-conf
2 プログラムがあり 'hadoop-0.20-conf' を提供します。
選択 コマンド
-----------------------------------------------
+ 1 /etc/hadoop-0.20/conf.empty
* 2 /etc/hadoop-0.20/conf.pseudo
Enter を押して現在の選択 [+] を保持するか、選択番号を入力します:2
# alternatives --display hadoop-0.20-conf
hadoop-0.20-conf - ステータスは手動です。
リンクは現在 /etc/hadoop-0.20/conf.pseudo を指しています。
/etc/hadoop-0.20/conf.empty - 優先項目 10
/etc/hadoop-0.20/conf.pseudo - 優先項目 30
現在の「最適」バージョンは /etc/hadoop-0.20/conf.pseudo です。
これで、/etc/hadoop/conf
(シンボリックリンク)が/etc/hadoop-0.20/conf.pseudo
を指すようになる。
hadoop-0.20-conf-pseudoをインストールすると、Hadoopを起動する為のシェルスクリプト(CDH用)も一緒にインストールされる。
つまり、以下のインストールを個別に行う必要は無い。
yum install hadoop-0.20-namenode yum install hadoop-0.20-secondarynamenode yum install hadoop-0.20-jobtracker yum install hadoop-0.20-datanode yum install hadoop-0.20-tasktracker
したがって、以下のコマンドでHadoopの各デーモンを起動できる。
(擬似分散環境なので、1つのマシン上でNameNode・JobTracker・DataNode・TaskTrackerを起動する。
SecondaryNameNodeはHadoopを試用するだけなら有っても無くても関係ない)
# /etc/init.d/hadoop-0.20-namenode start # /etc/init.d/hadoop-0.20-jobtracker start # /etc/init.d/hadoop-0.20-datanode start # /etc/init.d/hadoop-0.20-tasktracker start
※startの代わりにstopにすると、停止
各デーモンの起動で「[OK]
」と出ても、設定がおかしい場合は直後に落ちている事もあるので(苦笑)、起動しているかどうかを確認する。
# /etc/init.d/hadoop-0.20-namenode status # /etc/init.d/hadoop-0.20-jobtracker status # /etc/init.d/hadoop-0.20-datanode status # /etc/init.d/hadoop-0.20-tasktracker status
# jps 20849 Jps 20564 DataNode 20701 TaskTracker 20380 NameNode 20491 JobTracker
また、OSの起動時に各デーモンが自動的に起動するよう設定される。
# chkconfig --list | grep hadoop hadoop-0.20-datanode 0:off 1:off 2:off 3:on 4:off 5:on 6:off hadoop-0.20-jobtracker 0:off 1:off 2:off 3:on 4:off 5:on 6:off hadoop-0.20-namenode 0:off 1:off 2:off 3:on 4:off 5:on 6:off hadoop-0.20-secondarynamenode 0:off 1:off 2:off 3:on 4:off 5:on 6:off hadoop-0.20-tasktracker 0:off 1:off 2:off 3:on 4:off 5:on 6:off
(数字はrunレベルで、3はGUIありでOSを起動する場合、5がGUI無しで起動する場合の設定らしい)
(onだとOSの起動時にそのデーモンが起動される)
OSの起動時にデーモンを起動しないようにするには、設定をoffにしてやればいい。
# chkconfig hadoop-0.20-namenode off # chkconfig hadoop-0.20-secondarynamenode off # chkconfig hadoop-0.20-jobtracker off # chkconfig hadoop-0.20-datanode off # chkconfig hadoop-0.20-tasktracker off # chkconfig --list | grep hadoop hadoop-0.20-datanode 0:off 1:off 2:off 3:off 4:off 5:off 6:off hadoop-0.20-jobtracker 0:off 1:off 2:off 3:off 4:off 5:off 6:off hadoop-0.20-namenode 0:off 1:off 2:off 3:off 4:off 5:off 6:off hadoop-0.20-secondarynamenode 0:off 1:off 2:off 3:off 4:off 5:off 6:off hadoop-0.20-tasktracker 0:off 1:off 2:off 3:off 4:off 5:off 6:off
上記の方法(デフォルト)では、CDHの最新版がインストールされることになる。[2012-03-31]
また、CentOS(yum)の自動アップデートでCDHが最新版に更新されることになる。
特定のバージョンをインストールしたい(それ以上アップデートもしたくない)場合は、repoファイル内にバージョンを指定する。
mirrorlist=http://archive.cloudera.com/redhat/cdh/3/mirrors ↓ mirrorlist=http://archive.cloudera.com/redhat/cdh/3u2/mirrors
後は普通にyum installを行うだけ!
参考: 杵渕さんのWEB+DB Press vol.67 補足 (追記)
一旦最新版でインストールした後に古いバージョンにしたい場合、cloudera-cdh3.repoを書き換えてから再インストールする。[2012-03-31]
ただし、再インストールコマンド「yum reinstall」を実行してもエラーになってしまう。
# vi /etc/yum.repos.d/cloudera-cdh3.repo ←中を3u1に書き換え # yum reinstall hadoop-0.20 〜 ================================================================================ Package Arch Version Repository Size ================================================================================ Reinstalling: hadoop-0.20 noarch 0.20.2+923.197-1 cloudera-cdh3 30 M Transaction Summary ================================================================================ Remove 0 Package(s) Reinstall 1 Package(s) Downgrade 0 Package(s) Total download size: 30 M Is this ok [y/N]: y Downloading Packages: http://archive.cloudera.com/redhat/cdh/3u1/RPMS/noarch/hadoop-0.20-0.20.2%2B923.197-1.noarch.rpm: [Errno 14] HTTP Error 404: Not Found Trying other mirror. Error Downloading Packages: hadoop-0.20-0.20.2+923.197-1.noarch: failure: RPMS/noarch/hadoop-0.20-0.20.2+923.197-1.noarch.rpm from cloudera-cdh3: [Errno 256] No more mirrors to try.
“インストール対象バージョンが「0.20.2+923.197-1」だが、「hadoop-0.20-0.20.2%2B923.197-1.noarch.rpm
」(%2Bは「+」のこと)が見つからない”というエラーらしい。
そもそも0.20.2+923.197-1は3u3のバージョンなので、3u1のディレクトリー内に無いのは当然ですな^^;
バージョン情報に関してはyumのキャッシュに残っているらしく、キャッシュをクリアしてやる必要がある。
# yum clean metadata # yum reinstall hadoop-0.20 〜 Installed package hadoop-0.20-0.20.2+923.197-1.noarch not available.
どうもreinstallでは出来ないようだ(苦笑)
素直に削除してインストールし直すと出来る。
# vi /etc/yum.repos.d/cloudera-cdh3.repo ←中のバージョンを書き換え
# yum clean metadata
# yum remove hadoop-0.20 # yum install -y hadoop-0.20
逆に、新しいバージョンへの切り替えは特に問題なく出来る。[2012-03-31]
# vi /etc/yum.repos.d/cloudera-cdh3.repo ←中を3u1から3u2に書き換え
# yum upgrade hadoop-0.20