LoginSignup
6
5

More than 5 years have passed since last update.

Pivotal HDP + HAWQ上で機械学習ライブラリMADlibを試してみる(1)

Last updated at Posted at 2016-04-28

はじめに

機械学習ライブラリである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でログインできます。
WS000000.png

「Launch Install Wizard」にてCluster名を入力、インストールするバージョン(今回はHDP2.4を選択)とOSに合わせてリポジトリを指定後に下記のようにクラスタを組むTarget Hostを指定し、Private Keyを入力します。
その後、Target Hostのレジストリが開始されます。
今回は、NameServer 2台、DataNode 3台、Ambari 1台という構成です。
WS000006.png

Clusterにインストールするサービスを選択します。
Pivotal HDPになったことでHortonworksのサービス名とSparkなどが新たに選択できるサービスとして増えた印象です。
この時点では、まだHAWQはサービス一覧にありません。

WS000010.png

サービスの選択後は、各MasterやStandby MasterをどのTarget Hostに配置させるか構成を選択することができます。
Ambari 2.2.2からはGrafanaが追加されていました。
WS000012.png

Clientの選択は、次の設定画面で選択できます。
WS000015.png

各サービスが指定したTarget Hostに自動インストールされます。
インストールに失敗した場合は、ログも確認できます。
WS000020.png

インストールが完了するとClusterのダッシュボードが表示されます。
自動デプロイも簡単ですが、運用も楽ですね。
パラメータ変更、サービス再起動、ホストのローリングリスタートもAmbariから行えます。
WS000021.png

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」が選択できるようになります。
WS000023.png

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が自動で入るようになりました。

WS000031.png

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)です。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5