eclipse可以 遠程測試hive
1. 安裝好hadoop框架
2. 安裝好hive並測試完成
3. 啟動hadoop
壹、 打開hiveserver2端口
二、新建java工程
三、測試鏈接
四、問題
五、壹點心得
壹、 打開hiveserver2端口
[html]?view plain?copy
hive?--service?hiveserver2?--hiveconf?hive.server2.thrift.port=10000?
或者?
hiveserver2?
#註意,打開成功後界面會卡住不動,但是從另外壹臺機器上登錄後可以看到其實端口已經打開。之所以光標閃爍是為了接下來顯示對Hive的每壹次操作日誌。?
二、新建java工程
需要導入的jar包:
[html]?view plain?copy
commons-logging-1.1.3.jar?
commons-collections-3.1.jar?
hive-exec-0.13.1.jar?
hive-jdbc-0.13.1.jar?
hive-metastore-0.13.1.jar?
hive-service-0.13.1.jar?
libfb303-0.9.0.jar?
log4j-1.2.16.jar?
slf4j-api-1.7.5.jar?
slf4j-log4j12-1.7.5.jar?
hadoop-common-2.4.0.jar</span>?
三、測試連接
測試程序代碼(Hql語句根據需要改寫):
[html]?view plain?copy
import?java.sql.Connection;?
import?java.sql.DriverManager;?
import?java.sql.ResultSet;?
import?java.sql.SQLException;?
import?java.sql.Statement;?
//?import?org.apache.hive.jdbc.HiveDriver;?
public?class?HiveJdbc?{?
private?static?String?driverName?=?"org.apache.hive.jdbc.HiveDriver";?
public?boolean?run()?{?
try?{?
Class.forName(driverName);?
Connection?con?=?null;?
//端口號默認為10000,根據實際情況修改;?
//用戶名:hive,密碼:hive?
con?=?DriverManager.getConnection(?
"jdbc:hive2://10.10.30.64:10000/default",?"hive",?"hive");?
Statement?stmt?=?con.createStatement();?
ResultSet?res?=?null;?
String?sql?=?"select?count(*)?from?testhive";?
System.out.println("Running:?"?+?sql);?
res?=?stmt.executeQuery(sql);?
System.out.println("ok");?
while?(res.next())?{?
System.out.println(res.getString(1));?
}?
return?true;?
}?catch?(Exception?e)?{?
e.printStackTrace();?
System.out.println("error");?
return?false;?
}?
}?
public?static?void?main(String[]?args)?throws?SQLException?{?
HiveJdbc?hiveJdbcClient?=?new?HiveJdbc();?
hiveJdbcClient.run();?
}?
}?
將程序在Hadoop上運行。
運行結果:
四、問題與解決
問題:
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hive
解決:
修改hadoop配置文件core-site.xml,添加如下:
[html]?view plain?copy
<property>?
<name>hadoop.proxyuser.hadoop.groups</name>?
<value>*</value>?
<description>Allow?the?superuser?oozie?to?impersonate?any?members?of?the?group?group1?and?group2</description>?
</property>?
<property>?
<name>hadoop.proxyuser.hadoop.hosts</name>?
<value>*</value>?
<description>The?superuser?can?connect?only?from?host1?and?host2?to?impersonate?a?user</description>?
</property>?
註:如果是root is not allowed to impersonate root , 上面的修改內容對應改為
[html]?view plain?copy
<property>?
<name>hadoop.proxyuser.root.groups</name>?
<value>*</value>?
<description>Allow?the?superuser?oozie?to?impersonate?any?members?of?the?group?group1?and?group2</description>?
</property>?
<property>?
<name>hadoop.proxyuser.root.hosts</name>?
<value>*</value>?
<description>The?superuser?can?connect?only?from?host1?and?host2?to?impersonate?a?user</description>?
</property>?
註意修改後需要重啟hadoop,再嘗試連接。