hrendohHiverServer2セットアップしJDBC経由でHiveQLを実行するHiveコマンドをHadoopクライアントを利用せずに実行するには、HiveServer2をセットアップしHiveServer2を経由してHiveHadoopクラスター上でMapReduceジョブを実行します。0.11から導入されました。HiveServer2のクライアントは、以下のようにCLIのBeelineの他に専用のJDBCやODBCドライバを利用するアプリケーションになります。HiveServer2は、HiveQLを受け取るとMapReduceに変換してHadoopクラスターに実行を要求します。Hiveを参考にしています。BeelineはJDBCのアプリなので厳密には構成がちょっと違いますが、HiveServer2の利用イメージはこんな感じです。CLIとPythonのドライバを利用したサンプルの実行確認まで手順をまとめて行きます。12.04、ディストリビューションはCDH5を利用しています。参考HiveServer2のインストールCDH5のapt-getキーを追加後、hive-server2をインストールします。HiveHiveServer2は平行接続のハンドリングにZooKeeperサーバーを使用します。Packagesに従って、ZooKeeperサーバーをインストールして起動します。HiveServer2に従いZookeeperの設定をhive-site.xmlに追加します。<value>localhost</value></property>...設定を有効にします。restartHiveServer2にbeelineで接続確認してみます。ここまでの手順では、embeddedモードでのみ接続が可能です。seconds)...MetaStoreのリポジトリデータベースがデフォルトのDerbyの場合、同時接続を制御できないため、HiveServer2はリモート接続を許可しません。10000ポートは閉じたままになっています。リモート接続を許可するためには、MetastoreにMySQLなどのDBMSを指定する必要がります。Metastoreに詳しい説明があります。以下の手順の例では、リポジトリにMySQLを利用するようにセットアップしていきます。MySQLはHiveServer2と同じマシンにインストールしています。/usr/lib/hive/lib/mysql-connector.java.jarドキュメントに記述されているjarファイルの名前が異なっているので注意リポジトリ用のデータベースを作成して、テーブルを作成するSQLを実行します。/usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-0.13.0.mysql.sql;MetaStore用のMySQLへの接続ユーザーを作成します。quit;MetaStoreのリポジトリはMySQLを利用するように、hive-site.xmlの設定を変更します。datanucleus.autoStartMechanismSchemaTable設定を有効にします。restartbeelineで確認してみます。seconds)MetaStoreのリポジトリが変更されたのでテーブルが無い状態になっていることが確認できます。FoundationにPythonドライバを利用したHiveServer2へのアクセスの記述を見つけたので、そちらも試してみます。iMetaStoreを新しく設定したばかりなのでテーブルが一つもありませんので、テーブルを「movie_lens」追加してデータをロードしておきます。(データの準備の手順は、こちらの記事の「Cloudera版のHiveをインストールしてリモートクラスタ上でジョブを実行する」を参照下さい)プログラムを実行してみます。'883603013']10件レコードを取得できました。Mode」にあたります。Mode」の構成にするには、MetaStoreをサービスとして起動し、HiveがサービスのMetaStoreへアクセスするように設定を変更します。MetaStoreサービスを利用する場合は、以下の手順でセットアップできます。HiveMetaStoreサーバーを参照するようにhive-site.xmlを変更します。host</description></property>設定を有効にします。リモート接続ができないMetaStoreがデフォルトのDerbyの場合はリモート接続ができません。ログには、以下のエラーが出力されています。