Mac上でのhiveセットアップ手順(mysql上にmetastoreを作成)
Mac上にhiveをセットアップする手順のメモを残しておきます。
この手順では、hiveのmetastoreにmysqlを使用します。
- Hadoopとhdfsのセットアップ
- hiveのセットアップとmetastoreの設定
Hadoopとhdfsのセットアップ
homebrewを使ってhadoopをインストール、
その後必要となる設定を行います。
インストール
jdk及びhomebrewはセットアップ済みとして、
以下のコマンドでhadoopをインストールします。
$ brew install hadoop
以下のコマンドで、インストール出来たことを確認します。
$ hadoop version
HADOOP_HOMEの設定
環境変数「HADOOP_HOME」「HADOOP_CONF_DIR」を設定しておきます。
hadoop version
の出力結果を見て、以下のように設定します。
以下は私の環境の場合の設定です。
$ hadoop version
Hadoop 2.7.2
※省略※
This command was run using /usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/common/hadoop-common-2.7.2.jar
$ echo 'export HADOOP_HOME=/usr/local/Cellar/hadoop/2.7.2' >> ~/.bash_profile
$ echo 'export HADOOP_CONF_DIR=$HADOOP_HOME/libexec/etc/hadoop' >> ~/.bash_profile
$ . ~/.bash_profile
localhostへのssh接続設定
localhostにsshで接続できるように設定します。
システム環境設定 → 共有 から、「リモートログイン」にチェックを入れます。
以下のコマンドでauthorized_keysを追加します。
※まだ公開鍵を作成していない場合はssh-keygen
で作成します。
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
以下のコマンドでlocalhostにsshで接続できることを確認します。
$ ssh localhost
HDFS設定と初期化
次に、疑似分散モードでHDFSを構成します。
参考: Hadoop: Setting up a Single Node Cluster.
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
以下のコマンドでHDFSの格納先ディレクトリを作成します。
$ sudo mkdir -p /var/lib/hdfs/{name,data}
$ sudo chown -R `whoami`:wheel /var/lib/hdfs
core-site.xml/hdfs-site.xmlを以下のように変更します。
$HADOOP_CONF_DIR/core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
$HADOOP_CONF_DIR/hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/var/lib/hdfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/var/lib/hdfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
以下のコマンドでnamenodeを初期化します。
$ hadoop namenode -format
namenodeの起動とhdfsへの接続確認
以下のコマンドでHDFSを起動します。
※停止する場合は $HADOOP_HOME/sbin/stop-dfs.sh
$ $HADOOP_HOME/sbin/start-dfs.sh
以下のコマンドでHDFSを参照できることを確認します。
※まだHDFS上にファイルが無いので一覧には何も表示されません。
$ hadoop fs -ls /
hiveのセットアップとmetastoreの設定
インストール
以下のコマンドでhiveをインストールします。
$ brew install hive
以下のコマンドで、インストール出来たことを確認します。
$ hive -H
mysqlのインストールと起動
以下のコマンドで、mysqlをインストールします。
$ brew install mysql
以下のコマンドで、mysql-serverを起動します。
$ mysql.server start
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.35.tar.gz
ダウンロードしたファイルを展開し、
/usr/local/Cellar/hive/1.2.1/libexec/lib/
配下に、
mysql-connector-java-5.1.35/mysql-connector-java-5.1.35-bin.jar
を配置します。
metastoreの設定
hive-site.xmlを以下のように変更します。
/usr/local/Cellar/hive/1.2.1/libexec/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>
</configuration>
以下のコマンドを入力し、hiveプロンプトが表示されることを確認します。
$ hive
hive> exit
以下のコマンドを入力し、metastoreのテーブルが作成されていることを確認します。.
$ mysql -u root
mysql> use hive_metastore;
mysql> show tables;
以上の手順で、hiveを利用できるようになります。
参考にしたページ: