设为首页 加入收藏

TOP

beeline通过HiveServer2访问Hive的配置和操作
2018-11-13 14:56:25 】 浏览:142
Tags:beeline 通过 HiveServer2 访问 Hive 配置 操作
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wqhlmark64/article/details/77894026

1. 前言

作为数据仓库的工具,hive提供了两种ETL运行方式,分别是通过Hive 命令行和beeline客户端;

命令行方式即通过hive进入命令模式后通过执行不同的HQL命令得到对应的结果;相当于胖客户端模式,即客户机中需要安装JRE环境和Hive程序。

beeline客户端方式相当于瘦客户端模式,采用JDBC方式借助于Hive Thrift服务访问Hive数据仓库。

HiveThrift(HiveServer)是Hive中的组件之一,设计目的是为了实现跨语言轻量级访问Hive数据仓库,有Hiveserver和 Hiveserver2两个版本,两者不兼容,使用中要注意区分。体现在启动HiveServer的参数和jdbc:hiveX的参数上。


2. beeline相关的Server.Thrift配置

主要是hive/conf/hive-site.xml中hive.server2.thrift相关的一些配置项,但要注意一致性

<property>
<name>hive.server2.thrift.bind.host</name>
<value>slave01</value>
<description>Bind host on which to run the HiveServer2 Thrift service.</description>
</property>

<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
</property>

<property>
<name>hive.server2.thrift.http.port</name>
<value>10001</value>
<description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'http'.</description>
</property>


进入beeline连接数据库后,因为要访问的文件在HDFS上,对应的路径有访问权限限制,所以,这里要设成hadoop中的用户名,实例中用户名即为'hadoop’。如果使用其它用户名,可能会报权限拒绝的错误。或通过修改hadoop中的配置项hadoop.proxyuser.XX为“*” 来放宽用户名和权限,如示例。

<property>
<name>hive.server2.thrift.client.user</name>
<value>hadoop</value>
<description>Username to use against thrift client</description>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>hadoop</value>
<description>Password to use against thrift client</description>
</property>


hadoop/etc/hadoop/core-site.xml

<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<!--value>master</value-->
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<!--value>hadoop</value-->
<value>*</value>

</property>


3. 启动beeline并访问Hive

slave01上启动hiveserver2, # nohup hive --service hiveserver2 &

ps -ef | grep Hive 能看到Hiveserver2已启动


master机器上执行beeline并访问hive

hadoop@master:~/bigdata/hive$ beeline
Beeline version 1.2.1.spark2 by Apache Hive
beeline>


beeline> !connect jdbc:hive2://slave01:10000 // 2中配置项的host:port ,因为启动的是hiveserver2,所以参数中是hive2
Connecting to jdbc:hive2://ndh-slave01:10000
Enter username for jdbc:hive2://ndh-slave01:10000: hadoop
Enter password for jdbc:hive2://ndh-slave01:10000: ****** //2中配置项的user/password
17/09/08 14:39:27 INFO jdbc.Utils: Supplied authorities: ndh-slave01:10000
17/09/08 14:39:27 INFO jdbc.Utils: Resolved authority: ndh-slave01:10000
17/09/08 14:39:27 INFO jdbc.HiveConnection: Will try to open client transport with JDBC Uri: jdbc:hive2://slave01:10000
Connected to: Apache Hive (version 2.1.1)
Driver: Hive JDBC (version 1.2.1.spark2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://slave01:10000>


0: jdbc:hive2://slave01:10000> show databases;
+----------------+--+
| database_name |
+----------------+--+
| default |
| feigu3 |
| wordcount |
+----------------+--+
3 rows selected (0.379 seconds)


0: jdbc:hive2://slave01:10000> select * from wordcount order by count desc limit 50;

............................................

.............................................


看到结果后,进入hadoop webuihttp://master:8088/cluster/apps/FINISHED 可看到刚执行的任务。



0: jdbc:hive2://slave01:10000> !q    //// 退出beeline


4. 期间遇到的问题和解决方法

4.1 hadoop is not allowed to impersonate hive // hadoop是hadoop中配置的用户名,解决方法见2中说明;

4.2 "'serverProtocolVersion' is unset!"   // 解决方法同4.1

4.3 java.net.ConnectException: Connection refused (state=08S01,code=0) // 先是因为命令行中输入的host:port参数不对,后是4.1,4.2的问题





】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇hive与hdfs整合过程 下一篇hive数据库定义

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目