hadoop学習のHIVE(3.2):hadoop 2.7.2 hiveserver 2を構成してリモート接続を開始する


./hiveはローカルクライアントを起動するだけで、テストに使用されることが多く、hive server 2サーバをリモート接続に起動することができ、開発が便利です.
hadoopとhiveを構成することが前提です
1、hive serverサービスを開始する:bin/hiveserver 2
サービスがオープンしているかどうかを確認できます:netstat-nplt|grep 10000
2、新しいウィンドウを開き、クライアントを起動し、サーバーに接続できるかどうかをテストします.
$ bin/beeline
beeline> !connect jdbc:hive2://localhost:10000

ユーザー名を入力します.hiveのデフォルトユーザーはrootですが、他のユーザーで作成したhadoopとhiveであれば、ユーザー名、パスワードがなく、直接車に戻ります.接続に成功したことを示すメッセージが表示されます.
Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://localhost:10000>
3,接続が成功すると,コマンドライン操作が可能になるか,ステップ4のようにリモート接続後操作が可能になる.
4、eclipseでhiveserver 2にコードを書くことができます.
a,javaプロジェクトを新規作成しjarパッケージをインポートする:Project->Properties->Java Build Path->Libraries->Add External JARs,
それぞれ見つけてインポート:hivelibディレクトリの下のすべてのjarパッケージ;hadoopsharehadoopcommonの下の3つのjarパッケージ;hadoopsharehadoopcommonlibの下にある「slf 4 j-」で始まる2つのjarパッケージ.
b、javaファイルを新規作成します.内容は以下の通りです.
package com.xxx.hive;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class ConnectTest {
	public static void main(String[] args) throws Exception {
		Class.forName("org.apache.hive.jdbc.HiveDriver");
		Connection conn = DriverManager.getConnection
				("jdbc:hive2://localhost:10000/default", " ", "");
		try {
			Statement stat = conn.createStatement();
			ResultSet ret = stat.executeQuery("select count(*) from stu");
			while(ret.next())
			{
				System.out.println(ret.getInt(1));
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			conn.close();
		}
	}
}

このコードはhiveserver 2に接続されてhiveql文を実行し、mrプログラム実行に変換して実行結果を返します.
エラーが発生する可能性があります.
(1):実行時!connect jdbc:hive 2://localhost:10000でエラーが発生しました:
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: jimmyhadoop is not allowed to impersonate root (state=,code=0)
解決策:hadoopを終了し、etc/hadoop/core-siteを修正する.xml、2つ追加:

    hadoop.proxyuser.username.hosts
    *



    hadoop.proxyuser.username.groups
    *

その中のusernameはあなたのhadoop masterホストのユーザー名に変更して、保存して、hadoopを再起動して、hiveに再接続します.
(2):hive2.Xにはtimeoutの5000 Lのエラーはありません.xにある場合はLを削除します.