Hive的内置服务和hiveserver/hiveserver2的比较
来源:互联网 发布:搞笑的网络短剧2016 编辑:程序博客网 时间:2024/06/05 00:15
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <——[+]
一:Hive的几种内置服务
执行bin/hive --service help 如下:
我们可以看到上边输出项Server List,里边显示出Hive支持的服务列表,beeline cli help hiveserver2 hiveserver hwi jar lineage metastore metatool orcfiledump rcfilecat,下面介绍最有用的一些服务
1、cli:是Command Line Interface 的缩写,是Hive的命令行界面,用的比较多,是默认服务,直接可以在命令行里使用
2、hiveserver:这个可以让Hive以提供Thrift服务的服务器形式来运行,可以允许许多个不同语言编写的客户端进行通信,使用需要启动HiveServer服务以和客户端联系,我们可以通过设置HIVE_PORT环境变量来设置服务器所监听的端口,在默认情况下,端口号为10000,这个可以通过以下方式来启动Hiverserver:
bin/hive --service hiveserver -p 10002
其中-p参数也是用来指定监听端口的
3、hwi:其实就是hive web interface的缩写它是hive的web借口,是hive cli的一个web替代方案
4、jar:与hadoop jar等价的Hive接口,这是运行类路径中同时包含Hadoop 和Hive类的Java应用程序的简便方式
5、metastore:在默认的情况下,metastore和hive服务运行在同一个进程中,使用这个服务,可以让metastore作为一个单独的进程运行,我们可以通过METASTOE——PORT来指定监听的端口号
二:Hive的三种启动方式
1, hive 命令行模式
进入hive安装目录,输入bin/hive的执行程序,或者输入 hive –service cli
用于linux平台命令行查询,查询语句基本跟mysql查询语句类似
2, hive web界面的启动方式
bin/hive –service hwi (& 表示后台运行)
用于通过浏览器来访问hive,感觉没多大用途,浏览器访问地址是:127.0.0.1:9999/hwi
3, hive 远程服务 (端口号10000) 启动方式
bin/hive –service hiveserver2 &(&表示后台运行)
用java,python等程序实现通过jdbc等驱动的访问hive就用这种起动方式了,这个是程序员最需要的方式了
三:hiveServer/HiveServer2
1:简单介绍
两者都允许远程客户端使用多种编程语言,通过HiveServer或者HiveServer2,客户端可以在不启动CLI的情况下对Hive中的数据进行操作,连这个和都允许远程客户端使用多种编程语言如java,python等向hive提交请求,取回结果(从hive0.15起就不再支持hiveserver了),但是在这里我们还是要说一下hiveserver
HiveServer或者HiveServer2都是基于Thrift的,但HiveSever有时被称为Thrift server,而HiveServer2却不会。既然已经存在HiveServer,为什么还需要HiveServer2呢?这是因为HiveServer不能处理多于一个客户端的并发请求,这是由于HiveServer使用的Thrift接口所导致的限制,不能通过修改HiveServer的代码修正。因此在Hive-0.11.0版本中重写了HiveServer代码得到了HiveServer2,进而解决了该问题。HiveServer2支持多客户端的并发和认证,为开放API客户端如JDBC、ODBC提供更好的支持。
2:两者的区别
Hiveserver1 和hiveserver2的JDBC区别:
HiveServer version Connection URL Driver Class
HiveServer2 jdbc:hive2://: org.apache.hive.jdbc.HiveDriver
HiveServer1 jdbc:hive://: org.apache.hadoop.hive.jdbc.HiveDriver
3:学习HiveServer和HiveServer2
HiveServer:
在命令行输入hive --service hiveserver –help查看hiveserver的帮助信息:
启动hiveserver服务,可以得知默认hiveserver运行在端口10000,最小100工作线程,最大2147483647工作线程。
以上的hiveserver在hive1.2.1中并不会出现,官网的说法是:
HiveServer is scheduled to be removed from Hive releases starting Hive 0.15. See HIVE-6977. Please switch over to HiveServer2.
Hiveserver2
Hiveserver2允许在配置文件hive-site.xml中进行配置管理,具体的参数为:
也可以设置环境变量HIVE_SERVER2_THRIFT_BIND_HOST和HIVE_SERVER2_THRIFT_PORT覆盖hive-site.xml设置的主机和端口号。从Hive-0.13.0开始,HiveServer2支持通过HTTP传输消息,该特性当客户端和服务器之间存在代理中介时特别有用。与HTTP传输相关的参数如下:
启动Hiveserver2有两种方式,一种是上面已经介绍过的hive --service hiveserver2,另一种更为简洁,为hiveserver2。使用hive--service hiveserver2 –H或hive--service hiveserver2 –help查看帮助信息: 默认情况下,HiveServer2以提交查询的用户执行查询(true),如果hive.server2.enable.doAs设置为false,查询将以运行hiveserver2进程的用户运行。为了防止非加密模式下的内存泄露,可以通过设置下面的参数为true禁用文件系统的缓存:
4:配置使用hiveserver2(Hive 2.0为例)
sudo vim hive-site.xml
1):配置监听端口和路径
<span style="font-family: 'Microsoft YaHei';"><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">property</span>></span><span style="color: rgb(51, 51, 51);"> </span><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">name</span>></span><span style="color: rgb(51, 51, 51);">hive.server2.thrift.port</span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">name</span>></span><span style="color: rgb(51, 51, 51);"> </span><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">value</span>></span><span style="color: rgb(51, 51, 51);">10000</span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">value</span>></span><span style="color: rgb(51, 51, 51);"></span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">property</span>></span><span style="color: rgb(51, 51, 51);"></span><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">property</span>></span><span style="color: rgb(51, 51, 51);"> </span><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">name</span>></span><span style="color: rgb(51, 51, 51);">hive.server2.thrift.bind.host</span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">name</span>></span><span style="color: rgb(51, 51, 51);"> </span><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">value</span>></span><span class="tag"><span style="color: rgb(51, 51, 51);">192.168.48.130</span></span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">value</span>></span><span style="color: rgb(51, 51, 51);"></span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">property</span>></span></span>
2):设置impersonation
这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句
<span style="font-family: 'Microsoft YaHei';"><span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">property</span>></span> <span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">name</span>></span>hive.server2.enable.doAs<span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">name</span>></span> <span class="tag" style="color: rgb(0, 0, 128);"><<span class="title">value</span>></span>true<span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">value</span>></span><span class="tag" style="color: rgb(0, 0, 128);"></<span class="title">property</span>></span></span>
<span style="font-family: 'Microsoft YaHei';"><span class="tag" style="color: rgb(0, 0, 128);"></span><property> <name>hive.metastore.uris</name> <value>thrift://xxx.xxx.xxx.xxx:9083</value> <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description> </property></span>
5):hiveserver2的Web UI配置
Hive 2.0 以后才支持Web UI的,在以前的版本中并不支持
启动服务:
1):启动metastore
bin/hive --service metastore &
默认端口为9083
2):启动hiveserver2
bin/hive --service hiveserver2 &
3):测试
Web UI:http://192.168.48.130:10002/
使用beeline控制台控制hiveserver2
启动beeline :bin/beeline
连接:!connect jdbc:hive2://192.168.48.130:10000 hive hive
出现错误: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: master is not allowed to impersonate hive (state=,code=0)
解决办法:http://www.aboutyun.com/blog-331-2956.html
PS:小编在这里并没有解决,因为这个beeline基本用不到,所以就暂时放放了,后期如果需要的话再来解决它
- Hive的内置服务和hiveserver/hiveserver2的比较
- Hive的内置服务和hiveserver/hiveserver2的比较
- Hive的内置服务和hiveserver/hiveserver2的比较
- Hive的内置服务和hiveserver/hiveserver2的比较
- Hive的hiveserver2后台开启和关闭
- Hadoop2.7.2之Hive-2.1.1的Hiveserver2服务和beeline远程调试
- Eclipse JDBC连接Hive 两种方法 hiveserver hiveserver2
- beeline通过HiveServer2访问Hive的配置和操作
- Hive的几种内置服务
- Hive的几种内置服务
- 【HIVE】hiveserver2 不能启动端口 10000 开启服务的相关经验总结
- HIVE学习笔记:HiveServer2,调用HIVE的JavaAPI
- Hive从2.0版本开始,关于hiveserver2的web UI管理页面的配置和使用
- Hive扩展功能(四)--HiveServer2服务
- HiveServer2与beeline的使用 & Hive JDBC编程
- hiveserver2或sparksql和HApoxy远程服务的高可用和负载均衡
- Hive的内置数据类型
- Hive 的内置数据类型
- ROS实战之catkin
- MyBatis学习总结(六)——调用存储过程
- GANs学习系列(2):GANs最新进展二
- 利用android studio2.1.2生成jar,制作自己的SDK
- vim omnicpplete
- Hive的内置服务和hiveserver/hiveserver2的比较
- 有关jquery-ui的dialog的问题
- leetcode--array总结
- MyBatis学习总结(七)——Mybatis缓存
- sqlite 数据库 支持的数据类型 以及常用的函数
- ABAP RANGE 实现 SELECTION-OPTION 功能
- ActiveMQ的简单使用
- WMI相关
- C语言入门-第八周:作业01