S-JIS[2013-05-26] 変更履歴

HDP

HortonworksのWindows用Hadoopのインストールおよび動作確認。


概要

Windows用のHadoopであるHortonworksの『Hortonworks Data Platform』(HDP)のHDP1.1.0が2013-05-21にGAになったので、インストールしてみた。

インストールの方法はベータ版の頃から変わっていない。
すなわち、インストーラー(msiファイル)をコマンドラインから(引数を付けて)実行する必要がある。

OSはWindows Serverにしか対応していないようだが、Windows7でもスタンドアローンモードで動かす事は出来そう。
(たぶんクラスターとして実行する為のコマンド・サービス類がWindows Serverでないと駄目なのだと思う)


Windows7へのインストール

HDP1.1.0をWindows7にインストールしてみる。

  1. 前提ソフトウェアをインストールする。
  2. アーカイブをダウンロードする。
    1. Hortonworksのダウンロードページを開く。
    2. 「Hortonworks Data Platform 1.1 for Windows」欄の一番下にある「Download + Install」をクリックして、「HDP 1.1 for Windows」ページを開く。
    3. 「Download the MSI」をクリックするとhdp-1.1.0-GA.zipがダウンロードされる。
    4. hdp-1.1.0-GA.zipを適当な場所に解凍する。(hdp-1.1.0-GAというディレクトリーが出来る)
  3. 事前準備
  4. インストール作業を行う。(「Quick Start Guide for Single Node HDP Installation」を参照)
    1. コマンドプロンプト管理者権限で起動する。
    2. インストーラーを実行する。
      > 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 既存のデータを削除するかどうか。初めてインストールする時には関係ないだろう。
    3. しばらく待って、インストールに失敗する(爆)

ログに出ているエラーメッセージは以下のような感じ。

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といった環境変数も定義される。


clusterproperties.txt

事前準備として、設定内容を書いたファイルを用意しておく必要がある。「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内の指定が無い

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というディレクトリーは無くても)スタンドアローンモードになる。


Windows7へのインストール(手動版)

インストーラー(install.ps1とか)を使わずに手動でインストールする方法。

参考: @ITの.MSIファイルを解凍して内部のファイルを取り出す(msiexec編)

  1. アーカイブ(hdp-1.1.0-GA.zip)をダウンロードし、適当な場所に解凍する。
  2. コマンドプロンプト上でmsiファイルを解凍する。(コマンドプロンプトを管理者権限で起動する必要は無い)
    > cd hdp-1.1.0-GA
    > msiexec /a hdp-1.1.0-GA.winpkg.msi targetdir="D:\tmp\hdp"
    targetdirは解凍先のディレクトリー。
    これで「D:\tmp\hdp\HadoopInstallFiles」というディレクトリーが出来る。
  3. D:\tmp\hdp\HadoopInstallFiles\HadoopPackages\hdp-1.1.0-winpkg.zipを適当な場所に解凍する。
  4. その中のresourcesディレクトリーのhadoop-1.1.0-SNAPSHOT.zip を解凍し、適当な場所に置く。
    環境変数HADOOP_HOMEを定義する場合はここを指定する。(最近のバージョンのHadoopでは環境変数HADOOP_HOMEを使用しないので、定義しなくても動く)

こちらのconfはインストーラーによって作られたconfと違って特に何も設定されていない。(スタンドアローンモードで動作する)


Hadoop目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま