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を利用できるようになります。

参考にしたページ: