LoginSignup
6
7

More than 5 years have passed since last update.

VagrantでCDH擬似分散環境構築

Last updated at Posted at 2015-09-06

VagrantでCDHの擬似分散環境を構築するメモ

事前準備

vagrant box add <BOX_NAME> <URL>  # boxの追加
vagrant box remove <BOX_NAME>     # boxの削除
vagrant box list                  # boxのリスト
vagrant init <BOX_NAME>           # boxから仮想マシンを初期化(VagrantFile作成)
vagrant up                        # 仮想マシンの起動
vagrant status                    # 仮想マシンの状態確認
vagrant halt                      # 仮想マシンの停止
vagrant destroy                   # 仮想マシンの削除
vagrant ssh                       # 仮想マシンにSSHでログイン

仮想マシンの作成

仮想マシン用のディレクトリを作成し、仮想マシンを初期化(Vagrantfile作成)

$ mkdir test
$ cd test
$ vagrant init

Vagrantfileの編集

Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "nrel/CentOS-6.5-x86_64"
  config.vm.hostname = "test"

  config.vm.provider "virtualbox" do |vb|
    vb.name = "test"
    vb.memory = "2048"
  end
end

仮想マシン起動、SSHログイン

$ vagrant up
$ vagrant ssh

OS基本設定

アップデート

$ sudo yum check-update
$ sudo yum -y update

不要サービス無効化

$ sudo chkconfig iscsi off
$ sudo chkconfig iscsid off
$ sudo chkconfig iptables off
$ sudo chkconfig ip6tables off
$ sudo chkconfig mdmonitor off
$ sudo chkconfig netfs off
$ sudo chkconfig nfslock off
$ sudo chkconfig postfix off
$ sudo chkconfig udev-post off

時刻設定

ハードウェアクロックの設定

$ echo 'zone="Japan"' > ./tmp_clock
$ sudo mv ./tmp_clock /etc/sysconfig/clock

タイムゾーンをJSTに変更

$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime

ntpdインストール

$ sudo yum install ntp

ntp.nict.jpに同期するよう設定

/etc/ntp.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp.nict.jp iburst

いったん同期

$ sudo ntpdate ntp.nict.jp

サービス起動

$ sudo service ntpd start

状態確認(*がついていればOK)

$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*ntp-b3.nict.go. .NICT.           1 u    2   64    1   39.534   68.611   0.000

自動起動設定

$ sudo chkconfig ntpd on

ツールのインストール

screen

$ sudo yum install screen

git

$ sudo yum install git

EPEL

epel-releaseというパッケージをインストールすると、拡張パッケージがインストールできるようになる。以下で最新版を確認して使用する。
http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/repoview/epel-release.html

$ wget http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum localinstall epel-release-6-8.noarch.rpm

Java

OracleのJDKを入れたほうがいいという風潮があるようなので個別に入れる
Oracleのダウンロードページでは"Accept License Agreement"にチェックしないとダウンロードできないので、いったんローカルにダウンロードしてvagrantの仮想マシンとの共有フォルダに配置する

Oracle ダウンロードページ
http://www.oracle.com/technetwork/java/javase/downloads/index.html
Linux x64向けRPMを取得(今回は jdk-8u60-linux-x64.rpm)

ホストマシンでvagrantの共有フォルダにダウンロードしたRPMを配置
(デフォルトではホストマシンでVagrantfileを格納しているディレクトリが仮想マシンの/vagrantとして共有されている)

仮想マシン上でrpmパッケージをインストール

$ sudo yum localinstall /vagrant/share/jdk-8u60-linux-x64.rpm 

確認

$ java -version
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

Scala

CentOSのレポジトリに含まれていないので、公式サイトからrpmをダウンロードしてインストールする
http://www.scala-lang.org/index.html

$ wget http://downloads.typesafe.com/scala/2.11.7/scala-2.11.7.rpm
$ sudo yum localinstall scala-2.11.7.rpm

sbtは以下のページを参考にyumのレポジトリファイルを追加してインストール
http://www.scala-sbt.org/0.13/tutorial/Installing-sbt-on-Linux.html

$ curl https://bintray.com/sbt/rpm/rpm > bintray-sbt-rpm.repo
$ sudo mv bintray-sbt-rpm.repo /etc/yum.repos.d/
$ sudo yum install sbt
/etc/yum.repos.d/bintray-sbt-rpm.repo
#bintray--sbt-rpm - packages by  from Bintray
[bintray--sbt-rpm]
name=bintray--sbt-rpm
baseurl=http://dl.bintray.com/sbt/rpm
gpgcheck=0
enabled=1

sbtの依存関係でopenjdkのjava(java-1.6.0-openjdk.x86_64)がインストールされてしまうので、alternativesでOracleのjavaが設定されていることを確認しておく

$ alternatives --config java

2 プログラムがあり 'java' を提供します。

  選択       コマンド
-----------------------------------------------
*+ 1           /usr/java/jdk1.8.0_60/jre/bin/java
   2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java

確認

$ scala -version
Scala code runner version 2.11.7 -- Copyright 2002-2013, LAMP/EPFL

Python

CentOS6.5にはpython2.6が入っている。2.7以降は別途個別にインストールする必要があるのでいったんそのまま使う。

$ python --version
Python 2.6.6

pip
EPELからインストール

$ sudo yum install python-pip

R

R本体
EPELからインストール

$ sudo yum install R

R Studio Server
RPMパッケージをダウンロードしてローカルインストール

$ wget https://download2.rstudio.org/rstudio-server-rhel-0.99.484-x86_64.rpm
$ sudo yum localinstall rstudio-server-rhel-0.99.484-x86_64.rpm

ポートフォワード設定 ※ホスト側で作業
Vagrantfile編集

Vagrantfile
# R Studio Server
config.vm.network "forwarded_port", guest: 8787, host: 8787

仮想マシンを再起動

$ vagrant reload

CDH

Hadoop(擬似分散)

yumレポジトリ追加

$ wget http://archive.cloudera.com/cdh5/redhat/6/x86_64/cdh/cloudera-cdh5.repo
$ sudo mv cloudera-cdh5.repo /etc/yum.repos.d/

hadoop(擬似分散モード)インストール

$ sudo yum install hadoop-conf-pseudo

hdfsフォーマット

$ sudo su - hdfs
$ hdfs namenode -format
$ exit

hdfs起動

for x in `cd /etc/init.d ; ls hadoop-hdfs-*` ; do sudo service $x start ; done

hdfs初期設定スクリプト実行

$ sudo /usr/lib/hadoop/libexec/init-hdfs.sh 

ファイルディスクリプタ:数の上限を増やす

/etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536

Hive

hiveインストール

$ sudo yum install hive

metastore関連パッケージインストール

$ sudo yum install hive-metastore mysql-server mysql-connector-java

hive metastoreをmysqlに設定(参考)

$ sudo -u hive hdfs dfs -mkdir /user/hive/warehouse
$ sudo -u hive hdfs dfs -chmod 1777 /user/hive/warehouse
$ sudo cp /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/.
$ sudo service mysqld start
$ sudo chkconfig mysqld on
$ sudo /usr/bin/mysql_secure_installation
Enter current password for root (enter for none):  <- 空のままENTER
Set root password? [Y/n] y
New password:                          <- mysqlのrootユーザのパスワード
Re-enter new password:                 <- 同上
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
$ cd /usr/lib/hive/scripts/metastore/upgrade/mysql
$ mysql -u root -p
mysql> create database metastore;
mysql> use metastore;
mysql> source hive-schema-1.1.0.mysql.sql;
mysql> create user 'hive'@'localhost' identified by 'mypassword';
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'localhost';
mysql> GRANT SELECT,INSERT,UPDATE,DELETE,LOCK TABLES,EXECUTE ON metastore.* TO 'hive'@'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit;
$ sudo vi /usr/lib/hive/conf/hive-site.xml
hive-site.xml
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value>
  <description>the URL of the MySQL database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>mypassword</value>
</property>

hive-server2インストール

$ sudo yum install hive-server2

beeline使い方

$ beeline
beeline> !connect jdbc:hive2://localhost:10000
scan complete in 3ms
Connecting to jdbc:hive2://localhost:10000
Enter username for jdbc:hive2://localhost:10000: user
Enter password for jdbc:hive2://localhost:10000: pass
Connected to: Apache Hive (version 1.1.0-cdh5.4.7)
Driver: Hive JDBC (version 1.1.0-cdh5.4.7)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
+----------------+--+
1 row selected (0.213 seconds)
0: jdbc:hive2://localhost:10000> !quit
$ 

Spark

Sparkインストール

$ sudo yum install spark-core
$ sudo yum install spark-master
$ sudo yum install spark-worker
$ sudo yum install spark-history-server
$ sudo yum install spark-python

Sparkログレベル変更

$ sudo cp -p /etc/spark/conf/log4j.properties.template /etc/spark/conf/log4j.properties
/etc/spark/conf/log4j.properties
#log4j.rootCategory=INFO, console
log4j.rootCategory=WARN, console

HBase

$ sudo yum install hbase

Mahout

$ sudo yum install mahout

Hue

$ sudo yum install hue

再起動

ポートフォワード設定 ※ホスト側で作業
Vagrantfile編集

Vagrantfile
  # YARN ResourceManager, NodeManager
  config.vm.network "forwarded_port", guest: 8088, host: 8088
  config.vm.network "forwarded_port", guest: 50060, host: 50060

  # HDFS NameNode, DataNode
  config.vm.network "forwarded_port", guest: 50070, host: 50070
  config.vm.network "forwarded_port", guest: 50075, host: 50075

  # Spark Master, Worker, Driver, HistoryServer
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 8081, host: 8081
  config.vm.network "forwarded_port", guest: 4040, host: 4040
  config.vm.network "forwarded_port", guest: 18080, host: 18080

  # Hue
  config.vm.network "forwarded_port", guest: 8888, host: 8888

仮想マシンを再起動

$ vagrant reload

box化

vagrantで再利用可能なboxファイルを作成しておく。

※仮想マシン上で作業

$ sudo yum clean all
$ exit

※ホストOS側で作業

$ vagrant halt
$ vagrant package --output test_cdh5.box

boxの利用方法

vagrantにboxを追加

$ vagrant add test_cdh5 test_cdh5.box

仮想マシン用のディレクトリを作成して初期化

$ mkdir test_cdh5
$ cd test_cdh5
$ vagrant init

Vagrantfileを編集

Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  # boxの指定
  config.vm.box = "tlab_cdh5"

  # hostnameの指定
  config.vm.hostname = "test2"

  # ポートフォワードの指定
  ## R Studio Server
  config.vm.network "forwarded_port", guest: 8787, host: 8787

  ## YARN ResourceManager, NodeManager
  config.vm.network "forwarded_port", guest: 8088, host: 8088
  config.vm.network "forwarded_port", guest: 50060, host: 50060

  ## HDFS NameNode, DataNode
  config.vm.network "forwarded_port", guest: 50070, host: 50070
  config.vm.network "forwarded_port", guest: 50075, host: 50075

  ## Spark Master, Worker, Driver, HistoryServer
  config.vm.network "forwarded_port", guest: 8080, host: 8080
  config.vm.network "forwarded_port", guest: 8081, host: 8081
  config.vm.network "forwarded_port", guest: 4040, host: 4040
  config.vm.network "forwarded_port", guest: 18080, host: 18080

  ## Hue
  config.vm.network "forwarded_port", guest: 8888, host: 8888

  # Virtualboxの設定
  config.vm.provider "virtualbox" do |vb|
    vb.name = "test2"
    vb.memory = "2048"
  end
end

仮想マシンの起動(初回起動時に仮想マシン作成)

$ vagrant up

SSHログイン

$ vagrant ssh

仮想マシン上で作業

[vagrant@test2 ~]$
6
7
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
7