HortonworksのWindows用Hadoopのインストールおよび動作確認。
|
Windows用のHadoopであるHortonworksの『Hortonworks Data Platform』(HDP)のHDP1.1.0が2013-05-21にGAになったので、インストールしてみた。
インストールの方法はベータ版の頃から変わっていない。
すなわち、インストーラー(msiファイル)をコマンドラインから(引数を付けて)実行する必要がある。
OSはWindows Serverにしか対応していないようだが、Windows7でもスタンドアローンモードで動かす事は出来そう。
(たぶんクラスターとして実行する為のコマンド・サービス類がWindows Serverでないと駄目なのだと思う)
HDP1.1.0をWindows7にインストールしてみる。
JAVA_HOME=D:\java\jdk1.6.0_37
」)PATH=〜;C:\Python27
」)> cd /d D:\tmp\hdp-1.1.0-GA > msiexec /i hdp-1.1.0-GA.winpkg.msi /lv hdp.log HDP_LAYOUT="D:\tmp\hdp\clusterproperties.txt" HDP_DIR="D:\hdp\hadoop" DESTROY_DATA="no"
/i | インストーラー。 |
/lv | インストールログの出力先ファイル。 |
HDP_LAYOUT | clusterproperties.txtの場所。絶対パスで指定する必要がある。 |
HDP_DIR | インストール先のディレクトリー。 |
DESTROY_DATA | 既存のデータを削除するかどうか。初めてインストールする時には関係ないだろう。 |
ログに出ているエラーメッセージは以下のような感じ。
HADOOP: Install of Hadoop Core, HDFS, MapRed completed successfully Write-Log : HADOOP FAILURE: 引数が空の文字列であるため、パラメーター 'services' に バインドできません。 発生場所 D:\HadoopInstallFiles\HadoopPackages\hdp-1.1.0-winpkg\resources\hadoop-1.1.0-SNAPSHOT.winpkg\scripts\install.ps1:192 文字:11
よく分からないけど、直前に「Hadoop Core/HDFS/MapRedのインストールが成功した」って出てるし、
D:\hdp\hadoopの下にhadoop-1.1.0-SNAPSHOTというディレクトリーも出来ているので、とりあえずは大丈夫。
(Hadoopサービスを起動するのに使うと思われるstart_local_hdp_services.cmdはインストールされない)
また、環境変数HADOOP_HOMEが「D:\hdp\hadoop\\hadoop-1.1.0-SNAPSHOT」として自動的に定義される。
HADOOP_LOG_DIRやHADOOP_NODE_INSTALL_ROOT・HDFS_DATA_DIRといった環境変数も定義される。
事前準備として、設定内容を書いたファイルを用意しておく必要がある。「Quick Start Guide for Single Node HDP Installation」を参照。
内容としては以下の様になる。
# Log directory HDP_LOG_DIR=D:\hdp\hadoop\logs # Data directory HDP_DATA_DIR=D:\hdp\data # Hosts NAMENODE_HOST=localhost SECONDARY_NAMENODE_HOST=localhost JOBTRACKER_HOST=localhost HIVE_SERVER_HOST=localhost OOZIE_SERVER_HOST=localhost TEMPLETON_HOST=localhost SLAVE_HOSTS=localhost #Database host DB_FLAVOR=derby DB_HOSTNAME=localhost #Hive properties HIVE_DB_NAME=hive HIVE_DB_USERNAME=hive HIVE_DB_PASSWORD=hive #Oozie properties OOZIE_DB_NAME=oozie OOZIE_DB_USERNAME=oozie OOZIE_DB_PASSWORD=oozie
HiveやOozieを使いたくない場合でも、指定は必須のようだ。
なお、HDPのインストールが成功すると、このclusterproperties.txtはインストール先ディレクトリーの下にcluster.propertiesとして置かれる。
HDPがベータ版から正式版になったので大丈夫かと思ったらハマりまくったので、エラーについてメモ。
(インストールのログは「/lv」で指定したファイルに出力される)
clusterproperties.txtでHIVE_SERVER_HOST等の指定は必須らしく、無いとエラーになる。
Write-Log : WINPKG FAILURE: HDP: Reading HDP layout from D:\tmp\hdp\clusterproperties.txt
Write-Log : HDP FAILURE: Required property 'HIVE_SERVER_HOST' not found in D:\tmp\hdp\clusterproperties.txt
データディレクトリーをHDPのインストール場所の下に作ることは出来ないらしい。
Write-Log : HDP FAILURE: HDP_DATA_DIR (D:\hdp\data) cannot be in the HDP instal l directory (D:\hdp\\)
HDPを「D:\hdp」にインストールし、データを「D:\hdp\data」にしようとしたら、エラーになった。
msiexecを実行する為のコマンドプロンプトを管理者権限で起動する必要がある。
管理者権限で起動しないと以下の様なエラーになる。
Write-Log : HDP FAILURE: install script must be run elevated
発生場所 D:\HadoopInstallFiles\HadoopPackages\hdp-1.1.0-winpkg\scripts\install.ps1:383 文字:11
+ Write-Log <<<< $_.Exception.Message "Failure" $_
+ CategoryInfo : NotSpecified: (:) 、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Log
発生場所 D:\HadoopInstallFiles\HadoopSetupTools\winpkg.ps1:458 文字:12
+ Write-Log <<<< $_.Exception.Message "Failure" $_
+ CategoryInfo : NotSpecified: (:) 、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException,Write-Log
WINPKG: rd /s /q D:\HadoopInstallFiles\HadoopPackages\hdp-1.1.0-winpkg
Write-Log : WINPKG FAILURE: D:\HadoopInstallFiles\HadoopPackages\hdp-1.1.0-winpkg\scripts\install.ps1 failed.
発生場所 D:\HadoopInstallFiles\HadoopSetupTools\winpkg.ps1:476 文字:22
+ Write-Log <<<< "$cmd failed." "Failure"
+ CategoryInfo : NotSpecified: (:) 、WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorExceptio n,Write-Log
Error 0x80070001: Command line returned an error.
Error 0x80070001: CAQuietExec Failed
コマンドプロンプトからHadoop(スタンドアローン環境)を実行してみる。
set JAVA_HOME=D:\java\jdk1.6.0_37 cd /d D:\hdp\hadoop\hadoop-1.1.0-SNAPSHOT
D:\hdp\hadoop\hadoop-1.1.0-SNAPSHOT> bin\hadoop version Subversion git@github.com:hortonworks/hadoop-monarch.git on branch (no branch) -r e41afe29080e2e99e27d8b37e8c8d16b5c18fae5 Compiled by jenkins on Fri May 17 11:06:02 Coordinated Universal Time 2013 From source with checksum 7d5740b2081e8a3cdf2bd772951ac9a8
D:\hdp\hadoop\hadoop-1.1.0-SNAPSHOT> bin\hadoop --config conf.empty jar hadoop-examples.jar pi 4 1000 〜 Job Finished in 1.296 seconds Estimated value of Pi is 3.14000000000000000000
binの下にhadoop.cmdがあるので、(.cmdファイル
は拡張子を省略できるから)hadoopコマンドがUNIX版Hadoopと同様に使える。
同じく、%HADOOP_HOME%\conf\hadoop-env.cmdというファイルもあるので、各種環境変数はここで指定することが出来る。
デフォルトではconfが分散環境用の設定になっているようなので、スタンドアローンで動かす場合には別のconfを指定する必要がある。
とりあえず「--config conf.empty
」とか指定しておけば(conf.emptyというディレクトリーは無くても)スタンドアローンモードになる。
インストーラー(install.ps1とか)を使わずに手動でインストールする方法。
参考: @ITの.MSIファイルを解凍して内部のファイルを取り出す(msiexec編)
> cd hdp-1.1.0-GA > msiexec /a hdp-1.1.0-GA.winpkg.msi targetdir="D:\tmp\hdp"targetdirは解凍先のディレクトリー。
こちらのconfはインストーラーによって作られたconfと違って特に何も設定されていない。(スタンドアローンモードで動作する)