CentOS7への擬似分散モードでのhadoop及び、hiveセットアップ手順
CentOS7にApache Hadoop及びHiveを擬似分散モードでセットアップする手順のメモです。
hiveのmetastoreにはmariadb(mysql)を使用します。
CentOS7はminimaldvdからデフォルト状態でインストールした前提です。
使用したDVDイメージ: CentOS-7-x86_64-Minimal-1511.iso
以下の流れでセットアップをしていきます。
- 前提となる設定など
- Apache Hadoopのセットアップ
- Apache Hiveのセットアップ
前提となる設定など
SELINUXの無効化
「/etc/selinux/config」を編集してSELINUXを無効にしておきます。
SELINUX=disabled
編集した後は、「setenforce 0」するか、rebootしておきます。
OpenJDKのインストール
以下のようにして、OpenJDKをインストールします。
# yum install java-1.8.0-openjdk-devel
MariaDBのインストール
以下のようにして、MariaDBをインストール&有効化します。
$ yum install mariadb-server
$ systemctl enable mariadb
$ systemctl start mariadb
SSHの設定
以下のように、sshでパスワード無しでlocalhostに接続できるようにしておきます。
$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
一度sshで、localhostに接続しておきます。 「~/.ssh/authorized_keys」にlocalhostのfingerprintを追加しておきます。
$ ssh localhost
$ exit
「~/.bashrc」にJAVA_HOMEを設定しておきます。
$ readlink $(readlink $(which java))
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64/jre/bin/java
上記コマンドで出力された結果を元に、以下のようにJAVA_HOMEを設定します。
$ echo "export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-1.b15.el7_2.x86_64" >> ~/.bashrc
$ . ~/.bashrc
参考: OpenJDKをyumインストールした場合のJAVA_HOMEの設定の仕方 | kakakikikekeのブログ http://kakakikikeke.blogspot.jp/2013/09/openjdkyumjavahome.html
Apache Hadoopのセットアップ
Apache Hadoopのダウンロードと展開
以下のページのリンクから「hadoop-2.7.3.tar.gz」を探し、そのURLを控えておきます。
Apache Download Mirrors - hadoop-common http://www.apache.org/dyn/closer.cgi/hadoop/common/
以下のように、hadoopをダウンロード&展開します。
$ wget ※控えたURL(http://…/hadoop-2.7.3.tar.gzのようになる)※
$ tar zxf hadoop-2.7.3.tar.gz
環境変数「HADOOP_HOME」を設定しておきます。
$ echo "export HADOOP_HOME=/home/`whoami`/hadoop-2.7.3" >> ~/.bashrc
$ . ~/.bashrc
HDFS設定と初期化
次に、疑似分散モードでHDFSを構成します。
参考: Hadoop: Setting up a Single Node Cluster. https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
以下のコマンドでHDFSの格納先ディレクトリを作成します。
$ mkdir -p ~/var/lib/hdfs/{name,data}
core-site.xml/hdfs-site.xmlを以下のように変更します。
$HADOOP_HOME/etc/hadoop/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$HADOOP_HOME/etc/hadoop/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/※ユーザ名※/var/lib/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/※ユーザ名※/var/lib/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
以下のコマンドでnamenodeを初期化します。
$ $HADOOP_HOME/bin/hadoop namenode -format
namenodeの起動とhdfsへの接続確認
以下のコマンドでHDFSを起動します。
$ $HADOOP_HOME/sbin/start-dfs.sh
以下のコマンドでHDFSを参照できることを確認します。
※まだHDFS上にファイルが無いので一覧には何も表示されません。
$ $HADOOP_HOME/bin/hadoop fs -ls /
Apache Hiveのセットアップ
Apache Hiveのダウンロードと展開
以下のページのリンクから「apache-hive-1.2.1-bin.tar.gz」を探し、そのURLを控えておきます。
Apache Download Mirrors - hive
http://www.apache.org/dyn/closer.cgi/hive/
以下のように、hiveをダウンロード&展開します。
$ wget ※控えたURL(http://…/apache-hive-1.2.1-bin.tar.gzのようになる)※
$ tar zxf apache-hive-1.2.1-bin.tar.gz
環境変数「HIVE_HOME」を設定しておきます。
$ echo "export HIVE_HOME=/home/`whoami`/apache-hive-1.2.1-bin" >> ~/.bashrc
$ . ~/.bashrc
以下のコマンドで、インストール出来たことを確認します。
$ $HIVE_HOME/bin/hive -H
metastore用データベースの作成
以下のコマンドで、metastore用のデータベースを作成します。
$ mysql -u root
mysql> create database hive_metastore default character set 'latin1';
mysql> use hive_metastore;
mysql> create user 'hive'@'localhost' identified by '※パスワード※';
mysql> grant select, insert, update, delete, alter, create, index, references on hive_metastore.* to 'hive'@'localhost';
# databaseのcharactersetはlaten1にしておく必要があります。
# 以下を参照
# http://tagomoris.hatenablog.com/entry/20110310/1299738606
JDBCドライバの配置
mysqlのサイトからjdbcドライバをダウンロードします。
私の場合、以下のファイルをダウンロードしました。
ダウンロード元: http://dev.mysql.com/downloads/connector/j/
ファイル: mysql-connector-java-5.1.40.tar.gz
ダウンロードしたファイルを展開し、
$HIVE_HOME/lib/配下に、mysql-connector-java-5.1.40-bin.jarを配置します。
metastoreの設定
hive-site.xmlを以下のように変更します。
$HIVE_HOME/conf/hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value><![CDATA[jdbc:mysql://localhost/hive_metastore?autoReconnect=true&useSSL=false]]></value>
</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>※パスワード※</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>false</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/tmp/hive</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>false</value>
</property>
</configuration>
以下のコマンドでmetastoreを初期化します。
$ $HIVE_HOME/bin/schematool -dbType mysql -initSchema
Hiveコマンドからの接続
以下のコマンドを入力し、hiveプロンプトが表示されることを確認します。
$ $HIVE_HOME/bin/hive
hive> exit
hiveserver2の起動とbeelineでの接続
以下のコマンドでhiveserver2を起動します。
$ $HIVE_HOME/bin/hiveserver2
hiveserver2が起動した状態で、以下のようにbeelineで接続できることを確認します。
$ $HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000/default -n `whoami`
0: jdbc:hive2://localhost:10000/default> !exit