eclipse远程连接Hive(JDBC)
2016-08-03 11:38
477 查看
背景:hadoop分布式框架搭建服务器,现在要通过windows端远程连接Hive。
准备:
1. 安装好hadoop框架
2. 安装好hive并测试完成
3. 启动hadoop
一、 打开hiveserver2端口
二、新建java工程
三、测试链接
四、问题
五、一点心得
一、 打开hiveserver2端口
二、新建java工程
需要导入的jar包:
三、测试连接
测试程序代码(Hql语句根据需要改写):
将程序在Hadoop上运行。
运行结果:
四、问题与解决
问题:
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: hadoop is not allowed to impersonate hive
解决:
修改hadoop配置文件core-site.xml,添加如下:
注:如果是root is not allowed to impersonate root , 上面的修改内容对应改为
注意修改后需要重启hadoop,再尝试连接。
五、一点心得
其实在实现功能的时候会遇到各种各样的问题,因为每个人的情况都不同,遇到的问题也就各种各样。那么遇到问题后我们要怎么办?
这是我的一点见解:
首先,要准确的定位自己的问题
根据console的反馈或者是日志文件分析问题的来源,确定是哪一个环节出了错,然后再去搜索对应的答案。因为有些问题不一定能直接找到答案,你需要对你的问题有一个初步的分析,抽象出你所遇到的问题,然后再去找对应的解决方案。
其次,要筛选出靠谱的答案
网上的解答各种各样,答案的来源也不尽相同。要学会分析答案,结合自己的思考去判断这个答案的可信度。因为根据网上解决方法乱改的话往往会把坑越挖越大,要分析他的问题和自己的问题是否相同,要看他的解决办法是否合理。我通常是看了四五个答案之后才去动手修改自己的配置的,同时还要留意自己改了什么东西。
最后,要不断的去学习和理解
遇到新的任务往往需要我们去学习很多东西,而不是简单地去完成任务。比如在搭建环境的过程中,就要对自己所做的配置和修改有一个大概的认识,要把整个过程理清楚。如果过程中有不太确定的地方,最好自己查资料去搞清楚。问题解决不是目的,下次再遇到要能定位到这里,最好能自己解决问题。如果什么也不懂就一直搞下去,只会是自己给自己挖坑,最后会死的很惨。
准备:
1. 安装好hadoop框架
2. 安装好hive并测试完成
3. 启动hadoop
一、 打开hiveserver2端口
二、新建java工程
三、测试链接
四、问题
五、一点心得
一、 打开hiveserver2端口
hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10000 或者 hiveserver2 #注意,打开成功后界面会卡住不动,但是从另外一台机器上登录后可以看到其实端口已经打开。之所以光标闪烁是为了接下来显示对Hive的每一次操作日志。
二、新建java工程
需要导入的jar包:
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语句根据需要改写):
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,添加如下:
<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 , 上面的修改内容对应改为
<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,再尝试连接。
五、一点心得
其实在实现功能的时候会遇到各种各样的问题,因为每个人的情况都不同,遇到的问题也就各种各样。那么遇到问题后我们要怎么办?
这是我的一点见解:
首先,要准确的定位自己的问题
根据console的反馈或者是日志文件分析问题的来源,确定是哪一个环节出了错,然后再去搜索对应的答案。因为有些问题不一定能直接找到答案,你需要对你的问题有一个初步的分析,抽象出你所遇到的问题,然后再去找对应的解决方案。
其次,要筛选出靠谱的答案
网上的解答各种各样,答案的来源也不尽相同。要学会分析答案,结合自己的思考去判断这个答案的可信度。因为根据网上解决方法乱改的话往往会把坑越挖越大,要分析他的问题和自己的问题是否相同,要看他的解决办法是否合理。我通常是看了四五个答案之后才去动手修改自己的配置的,同时还要留意自己改了什么东西。
最后,要不断的去学习和理解
遇到新的任务往往需要我们去学习很多东西,而不是简单地去完成任务。比如在搭建环境的过程中,就要对自己所做的配置和修改有一个大概的认识,要把整个过程理清楚。如果过程中有不太确定的地方,最好自己查资料去搞清楚。问题解决不是目的,下次再遇到要能定位到这里,最好能自己解决问题。如果什么也不懂就一直搞下去,只会是自己给自己挖坑,最后会死的很惨。
相关文章推荐
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表
- windows下eclipse通过JDBC连接hive
- JDBC远程连接hiveserver2
- eclipse 远程连接hive
- eclipse通过jdbc连接hive
- 通过远程jdbc方式连接到hive数据仓库
- eclipse远程连接hive
- 在windows上使用eclipse jdbc连接hive
- 基于CDH5.x 下面使用eclipse 操作hive 。使用java通过jdbc连接HIVESERVICE 创建表出现的问题及解决
- 【转载】在Eclipse中用JDBC连接Sql Server 2005总结(001)
- Eclipse-JDBC (一)SQLServer新建用户 sa登录失败该用户与可信sql server连接无关联如何解决
- 在Eclipse中用JDBC连接Sql Server 2005总结(转)
- 在Eclipse中用JDBC连接Sql Server 2005总结
- Eclipse-JDBC 连接Sql Server 2005(二)
- 如何在Eclipse中用JDBC连接Sql Server 2005,曾经让我如此的蛋疼(上篇)
- Eclipse 远程主机强迫关闭了一个现有的连接 问题解决方案
- Eclipse中java通过JDBC连接Sql Server 2005
- 快速搞定在Eclipse中用JDBC连接SQL Server 2005
- hive 三种启动方式及用途,关注通过jdbc连接的启动
- <转载>在Eclipse中用JDBC连接Sql Server 2005总结