##はじめに##
機械学習ライブラリであるMADlibを試すために、Pivotal HDP + HAWQの環境を準備します。
Pivotalは、2016/3でPivotal HDの提供を終了し、HortonworksのHDPを提供していくようです。
HAWQ(β)、MADlibともにHDPに対応した新バージョンが提供されています。
今回は下記バージョンを導入します。HDP、HAWQのデプロイには自動デプロイ&管理ツールであるAmbariを使用しました。サポートマトリクスは下記URLにあります。
https://network.pivotal.io/products/pivotal-hdp
OS:CentOS 6.7
Ambari:2.2.2
HDP:2.4
HAWQ:2.0.0
MADlib:1.9
##Ambariインストール##
ntp,hosts,selinux,iptables,ulimit,sshなどの事前準備は
ドキュメントに書いてあるので省略します。
ambariレポジトリを追加した後、yumコマンドでインストールします。
wget -nv http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.2.0/ambari.repo -O /etc/yum.repos.d/ambari.repo
cat /etc/yum.repos.d/ambari.repo
#VERSION_NUMBER=2.2.2.0-460
[Updates-ambari-2.2.2.0]
name=ambari-2.2.2.0 - Updates
baseurl=http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.2.2.0
gpgcheck=1
gpgkey=http://public-repo-1.hortonworks.com/ambari/centos6/RPM-GPG-KEY/RPM-GPG-KEY-Jenkins
enabled=1
priority=1
yum install ambari-server
依存関係でpostgresqlもインストールされます。
postgresql
postgresql-libs
postgresql-server
インストールが終わったらambariサーバのセットアップを行います。
今回は、インターネットに接続できる環境でしたのでJDKはセットアップコマンド内で自動的に選択したバージョンがダウンロード、インストールされます。
インターネットに接続していない場合は、JDKとJCEを事前にダウンロードし、/var/lib/ambari-server/resourcesに保存して、「[3] Custom JDK」を選択するようです。postgresqlもデフォルトのままインストールしました。
ambari-server setup
Customize user account for ambari-server daemon [y/n] (n)?
[1] Oracle JDK 1.8 + Java Cryptography Extension (JCE) Policy Files 8
[2] Oracle JDK 1.7 + Java Cryptography Extension (JCE) Policy Files 7
[3] Custom JDK
Enter choice (1):
Enter advanced database configuration [y/n] (n)?
Ambariのセットアップ後、Ambariを起動します。
ambari-server start
##HDPインストール##
http://≪ambari-server≫:8080にアクセスし、デフォルトの場合はadmin/adminでログインできます。
「Launch Install Wizard」にてCluster名を入力、インストールするバージョン(今回はHDP2.4を選択)とOSに合わせてリポジトリを指定後に下記のようにクラスタを組むTarget Hostを指定し、Private Keyを入力します。
その後、Target Hostのレジストリが開始されます。
今回は、NameServer 2台、DataNode 3台、Ambari 1台という構成です。
Clusterにインストールするサービスを選択します。
Pivotal HDPになったことでHortonworksのサービス名とSparkなどが新たに選択できるサービスとして増えた印象です。
この時点では、まだHAWQはサービス一覧にありません。
サービスの選択後は、各MasterやStandby MasterをどのTarget Hostに配置させるか構成を選択することができます。
Ambari 2.2.2からはGrafanaが追加されていました。
各サービスが指定したTarget Hostに自動インストールされます。
インストールに失敗した場合は、ログも確認できます。
インストールが完了するとClusterのダッシュボードが表示されます。
自動デプロイも簡単ですが、運用も楽ですね。
パラメータ変更、サービス再起動、ホストのローリングリスタートもAmbariから行えます。
##HAWQインストール##
次にHAWQのインストール準備をします。
事前にHAWQ、HAWQ-pluginをダウンロードした上でAmbariサーバ上でHAWQレポジトリの作成を行います。
tar -zxvf /tmp/hdb-2.0.0.0-22126.solitairetheme8 -C /staging/
./setup_repo.sh
tar -zxvf /tmp/hdb-ambari-plugin-2.0.0-448.solitairetheme8 -C /staging/
./setup_repo.sh
ls -l /etc/yum.repos.d/
-rw-r--r-- 1 root root 108 Apr 25 17:11 hawq-plugin-hdp-2.0.0.repo
-rw-r--r-- 1 root root 78 Apr 25 17:11 PIVOTAL-HDB.repo
yum install haqwq-plugin
./var/lib/hawq//add_hdb_repo.py -u admin -p admin
The repo information was updated successfully in the Ambari database.
Please restart ambari-server for the repo settings to take effect.
ambari-server restart
ブラウザでAmbariにログインし、「Action」→「Add Service」を選択すると
サービス一覧で下記のように「HAWQ」と「PXF」が選択できるようになります。
HAWQ MasterとHAWQ Segmentの配置は、Cluster作成時と同様に選択できます。
Ambari上にHAWQ、PXFサービスが表示されます。
HAWQ、PXFインストール後は、HDFS、MapReduce2、YARNを再起動します。
(私の環境ではサービスコンポーネントは、HDFS、MapReduce2、YARN、HAWQ、PXF、Zookeeper、AmbariMetricsのみです)
HAWQ起動時にエラーで起動できなかったのですが、HDFSサービスのconfigを修正する必要があります。修正、追加するパラメータはドキュメントに一覧になっています。
dfs.allow.truncateは、defaultでtrueだったような。。。明示的に追加してあげないとエラーで起動しませんでした。
HAWQ 2.0 Release版からは、「Advanced hdfs-site」にdfs.allow.truncate=trueが自動で入るようになりました。
HAWQ、PXFインストール後にHAWQ Masterにてgpadminで環境変数をセットします。
えらい大量の環境変数がセットされています。
su - gpadmin
source /usr/local/hawq/greenplum_path.sh
printenv
HOSTNAME=namenode-02.inv
SHELL=/bin/bash
TERM=xterm
HISTSIZE=1000
LIBYARN_CONF=/usr/local/hawq/./etc/yarn-client.xml
GPHOME=/usr/local/hawq/.
QTDIR=/usr/lib64/qt-3.3
QTINC=/usr/lib64/qt-3.3/include
USER=gpadmin
LD_LIBRARY_PATH=/usr/local/hawq/./lib:/usr/local/hawq/./ext/python/lib:
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.tbz=01;31:*.tbz2=01;31:*.bz=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
LIBHDFS3_CONF=/usr/local/hawq/./etc/hdfs-client.xml
HAWQSITE_CONF=/usr/local/hawq/./etc/hawq-site.xml
MAIL=/var/spool/mail/gpadmin
PATH=/usr/local/hawq/./bin:/usr/local/hawq/./ext/python/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/gpadmin/bin
PWD=/home/gpadmin
LANG=en_US.UTF-8
PYTHONHOME=/usr/local/hawq/./ext/python
HISTCONTROL=ignoredups
SHLVL=1
HOME=/home/gpadmin
OPENSSL_CONF=/usr/local/hawq/./etc/openssl.cnf
PYTHONPATH=/usr/local/hawq/./lib/python:/usr/local/hawq/./lib/python/pygresql:
LOGNAME=gpadmin
QTLIB=/usr/lib64/qt-3.3/lib
CVS_RSH=ssh
LESSOPEN=||/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/usr/bin/printenv
psql -d postgres
psql (8.2.15)
Type "help" for help.
Ambariは、APIによる設定、情報取得も可能です。
curl -u admin:admin -i -H 'X-Requested-By: ambari' -X GET http://≪ambari-server≫:8080/api/v1/
clusters/test/services/HDFS
HTTP/1.1 200 OK
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
User: admin
Set-Cookie: AMBARISESSIONID=2r2kmwisk3138p2aj32qedsg;Path=/;HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Vary: Accept-Encoding, User-Agent
Content-Length: 10668
Server: Jetty(8.1.17.v20150415)
{
"href" : "http://≪ambari-server≫:8080/api/v1/clusters/test/services/HDFS",
"ServiceInfo" : {
"cluster_name" : "test",
"maintenance_state" : "OFF",
"service_name" : "HDFS",
"state" : "STARTED"
},
"alerts_summary" : {
"CRITICAL" : 0,
"MAINTENANCE" : 0,
"OK" : 25,
"UNKNOWN" : 0,
"WARNING" : 0
},
・・・
curl -u admin:admin -i -H 'X-Requested-By: ambari' -X GET http://≪ambari-server≫:8080/api/v1/clusters/test/services/HAWQ
HTTP/1.1 200 OK
X-Frame-Options: DENY
X-XSS-Protection: 1; mode=block
User: admin
Set-Cookie: AMBARISESSIONID=qtl1iogbmji81utym29vk2lvs;Path=/;HttpOnly
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Content-Type: text/plain
Vary: Accept-Encoding, User-Agent
Content-Length: 1196
Server: Jetty(8.1.17.v20150415)
{
"href" : "http://≪ambari-server≫:8080/api/v1/clusters/test/services/HAWQ",
"ServiceInfo" : {
"cluster_name" : "test",
"maintenance_state" : "OFF",
"service_name" : "HAWQ",
"state" : "STARTED"
},
"alerts_summary" : {
"CRITICAL" : 0,
"MAINTENANCE" : 0,
"OK" : 0,
"UNKNOWN" : 0,
"WARNING" : 0
},
・・・
長くなりましたので、次回MADlibインストールから記述したいと思います。
続きは、Pivotal HDP + HAWQ上で機械学習ライブラリMADlibを試してみる(2)です。