Apache Hive はテーブルのスキーマ定義などメタデータを RDBMS に保存する。 デフォルトでは Java で書かれた組み込み RDBMS の Apache Derby が使われる。 今回は、その Apache Derby の代わりに MariaDB (MySQL) を使う方法について。
使った環境は次の通り。 Apache Hadoop と Apache Hive はメタストアの初期化直前までセットアップされていることを想定している。
$ cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) $ uname -r 3.10.0-693.11.1.el7.x86_64 $ hive --version Hive 2.3.2 Git git://stakiar-MBP.local/Users/stakiar/Desktop/scratch-space/apache-hive -r 857a9fd8ad725a53bd95c1b2d6612f9b1155f44d Compiled by stakiar on Thu Nov 9 09:11:39 PST 2017 From source with checksum dc38920061a4eb32c4d15ebd5429ac8a $ hadoop version Hadoop 2.8.3 Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r b3fe56402d908019d99af1f1f4fc65cb1d1436a2 Compiled by jdu on 2017-12-05T03:43Z Compiled with protoc 2.5.0 From source with checksum 9ff4856d824e983fa510d3f843e3f19d This command was run using /home/vagrant/hadoop-2.8.3/share/hadoop/common/hadoop-common-2.8.3.jar
コミュニティ版の Apache Hive をセットアップする方法については以下の記事に記載した。
下準備
まずは Apache Hive のメタストアとして使うための MariaDB をインストールしておく。
$ sudo yum -y install mariadb-server
インストールが終わったら MariaDB のサービスを起動する。
$ sudo systemctl enable mariadb
$ sudo systemctl start mariadb
続いてログイン用の情報を設定する。 今回は手早く root ユーザでやっちゃうけど、本来ならアクセス制御をしたユーザでやるのが好ましい。
$ mysqladmin password rootpassword -u root
上記で設定したアカウントで MariaDB にログインできることを確認しておこう。
$ mysql -uroot -prootpassword Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 8 Server version: 5.5.56-MariaDB MariaDB Server Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>
これで準備が整った。
Hive のメタデータ保存先に MariaDB を指定する
Hive の設定は hive-site.xml
という設定ファイルで行う。
ここに、先ほどセットアップした MariaDB への接続情報を記載する。
$ cat << 'EOF' > $HIVE_HOME/conf/hive-site.xml <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>rootpassword</value> </property> </configuration> EOF
MariaDB (MySQL) を使う場合、接続用のドライバが必要になる。 今回は yum でインストールできるものを使うことにした。 もちろん Web サイトからダウンロードしてきても構わない。
$ sudo yum -y install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar $HIVE_HOME/lib
あとは schematool
コマンドを使ってメタストアを初期化する。
これで必要なデータベースやテーブル類が一式作られる。
メタストアに MariaDB (MySQL) を使うときは -dbType
オプションに mysql
を指定するのがポイントとなる。
$ schematool -dbType mysql -initSchema 2>/dev/null Metastore connection URL: jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true Metastore Connection Driver : com.mysql.jdbc.Driver Metastore connection User: root Starting metastore schema initialization to 2.3.0 Initialization script hive-schema-2.3.0.mysql.sql Initialization script completed schemaTool completed
メタストアの情報がちゃんと初期化されたことを -info
オプションで確認しておこう。
$ schematool -dbType mysql -info 2>/dev/null Metastore connection URL: jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true Metastore Connection Driver : com.mysql.jdbc.Driver Metastore connection User: root Hive distribution version: 2.3.0 Metastore schema version: 2.3.0 schemaTool completed
Apache Hive でテーブルを作ってみる
次は Apache Hive を使ったことで、ちゃんとメタストアに情報が保存されることを確認してみよう。
Hive CLI を起動する。
$ hive
適当にテーブルを定義してみる。
hive> CREATE TABLE users ( > name STRING, > age INT > ); OK Time taken: 1.498 seconds
あとは MariaDB のメタストア用データベースに、上記で定義したテーブル情報が保存されていることを確認する。
$ mysql -uroot -prootpassword metastore -e "SELECT * FROM TBLS\G"; *************************** 1. row *************************** TBL_ID: 1 CREATE_TIME: 1517579457 DB_ID: 1 LAST_ACCESS_TIME: 0 OWNER: vagrant RETENTION: 0 SD_ID: 1 TBL_NAME: users TBL_TYPE: MANAGED_TABLE VIEW_EXPANDED_TEXT: NULL VIEW_ORIGINAL_TEXT: NULL IS_REWRITE_ENABLED:
どうやら、ちゃんと保存されているようだ。
めでたしめでたし。
- 作者: Edward Capriolo,Dean Wampler,Jason Rutherglen,佐藤直生,嶋内翔,Sky株式会社玉川竜司
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/06/15
- メディア: 大型本
- この商品を含むブログ (3件) を見る
- 作者: 加嵜長門,田宮直人,丸山弘詩
- 出版社/メーカー: マイナビ出版
- 発売日: 2017/03/27
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る