Hive基础(4)---Hive的内置服务
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <——
一:Hive的几种内置服务
执行bin/hive --service help 如下:
- [master@master1 hive]$ bin/hive --service help
- ls: 无法访问/opt/spark/lib/spark-assembly-*.jar: 没有那个文件或目录
- Usage ./hive <parameters> --service serviceName <service parameters>
- Service List: beeline cli help hiveburninclient hiveserver2 hiveserver hwi jar lineage metastore metatool orcfiledump rcfilecat schemaTool version
- Parameters parsed:
- --auxpath : Auxillary jars
- --config : Hive configuration directory
- --service : Starts specific service/component. cli is default
- Parameters used:
- HADOOP_HOME or HADOOP_PREFIX : Hadoop install directory
- HIVE_OPT : Hive options
- For help on a particular service:
- ./hive --service serviceName --help
- Debug help: ./hive --debug --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的帮助信息:
- [hadoop@hadoop~]$ hive --service hiveserver --help
- Starting Hive Thrift Server
- usage:hiveserver
- -h,--help Print help information
- --hiveconf <propertyproperty=value> Use value for given property
- --maxWorkerThreads <arg> maximum number of worker threads,
- default:2147483647
- --minWorkerThreads <arg> minimum number of worker threads,
- default:100
- -p <port> Hive Server portnumber, default:10000
- -v,--verbose Verbose mode
启动hiveserver服务,可以得知默认hiveserver运行在端口10000,最小100工作线程,最大2147483647工作线程。
- [hadoop@hadoop~]$ hive --service hiveserver -v
- Starting Hive Thrift Server
- 14/08/01 11:07:09WARN conf.HiveConf: DEPRECATED: hive.metastore.ds.retry.* no longer has anyeffect. Use hive.hmshandler.retry.*instead
- Starting hive serveron port 10000 with 100 min worker threads and 2147483647 maxworker threads
以上的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.min.worker.threads– 最小工作线程数,默认为5。
- hive.server2.thrift.max.worker.threads – 最小工作线程数,默认为500。
- hive.server2.thrift.port– TCP 的监听端口,默认为10000。
- hive.server2.thrift.bind.host– TCP绑定的主机,默认为localhost
也可以设置环境变量HIVE_SERVER2_THRIFT_BIND_HOST和HIVE_SERVER2_THRIFT_PORT覆盖hive-site.xml设置的主机和端口号。从Hive-0.13.0开始,HiveServer2支持通过HTTP传输消息,该特性当客户端和服务器之间存在代理中介时特别有用。与HTTP传输相关的参数如下:
- hive.server2.transport.mode – 默认值为binary(TCP),可选值HTTP。
- hive.server2.thrift.http.port– HTTP的监听端口,默认值为10001。
- hive.server2.thrift.http.path – 服务的端点名称,默认为 cliservice。
- hive.server2.thrift.http.min.worker.threads– 服务池中的最小工作线程,默认为5。
- hive.server2.thrift.http.max.worker.threads– 服务池中的最小工作线程,默认为500。
启动Hiveserver2有两种方式,一种是上面已经介绍过的hive --service hiveserver2,另一种更为简洁,为hiveserver2。使用hive--service hiveserver2 –H或hive--service hiveserver2 –help查看帮助信息:
- Starting HiveServer2
- Unrecognizedoption: -h
- usage:hiveserver2
- -H,--help Print help information
- --hiveconf <propertyproperty=value> Use value for given property
默认情况下,HiveServer2以提交查询的用户执行查询(true),如果hive.server2.enable.doAs设置为false,查询将以运行hiveserver2进程的用户运行。为了防止非加密模式下的内存泄露,可以通过设置下面的参数为true禁用文件系统的缓存:
- fs.hdfs.impl.disable.cache – 禁用HDFS文件系统缓存,默认值为false。
- fs.file.impl.disable.cache – 禁用本地文件系统缓存,默认值为false。
4:配置使用hiveserver2(Hive 2.0为例)
sudo vim hive-site.xml
1):配置监听端口和路径
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>192.168.48.130</value>
</property>
2):设置impersonation
这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<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 con
nect to remote metastore.</description>
</property>
- <property>
- <name>hive.support.concurrency</name>
- <description>Enable Hive's Table Lock Manager Service</description>
- <value>true</value>
- </property>
- <property>
- <name>hive.zookeeper.quorum</name>
- <description>Zookeeper quorum used by Hive's Table Lock Manager</description>
- <value>master1:2181,slave1:2181,slave2:2181</value>
- </property>
5):hiveserver2的Web UI配置
Hive 2.0 以后才支持Web UI的,在以前的版本中并不支持
- <property>
- <name>hive.server2.webui.host</name>
- <value>192.168.48.130</value>
- <description>The host address the HiveServer2 WebUI will listen on</description>
- </property>
- <property>
- <name>hive.server2.webui.port</name>
- <value>10002</value>
- <description>The port the HiveServer2 WebUI will listen on. This can beset to 0 o
- r a negative integer to disable the web UI</description>
- </property>
启动服务:
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基础(4)---Hive的内置服务的更多相关文章
- Hive 学习笔记(启动方式,内置服务)
一.Hive介绍 Hive是基于Hadoop的一个数据仓库,Hive能够将SQL语句转化为MapReduce任务进行运行. Hive架构图分为以下四部分. 1.用户接口 Hive有三个用户接口: 命令 ...
- AngularJS复习-----内置过滤器和内置服务
AngularJS中的内置服务(共30多个): $http 发送http请求,主要用于进行异步数据请求的功能实现,这个服务主要封装了XMLHttpRequest对象和JSONP数据访问模式来完成远程请 ...
- Angular 基本内置服务和筛选器
AngularJS中的内置服务(共30多个): $http 发送http请求,主要用于进行异步数据请求的功能实现,这个服务主要封装了XMLHttpRequest对象和JSONP数据访问模式来完成远程请 ...
- 二十六. Python基础(26)--类的内置特殊属性和方法
二十六. Python基础(26)--类的内置特殊属性和方法 ● 知识框架 ● 类的内置方法/魔法方法案例1: 单例设计模式 # 类的魔法方法 # 案例1: 单例设计模式 class Teacher: ...
- python面向对象的基础语法(dir内置函数、self参数、初始化方法、内置方法和属性)
面相对象基础语法 目标 dir 内置函数 定义简单的类(只包含方法) 方法中的 self 参数 初始化方法 内置方法和属性 01. dir 内置函数(知道) 在 Python 中 对象几乎是无所不在的 ...
- angularJS使用内置服务
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script sr ...
- hive学习笔记之七:内置函数
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- Hive基础之Hive环境搭建
Hive默认元数据信息存储在Derby里,Derby内置的关系型数据库.单Session的(只支持单客户端连接,两个客户端连接过去会报错): Hive支持将元数据存储在关系型数据库中,比如:Mysql ...
- Hive基础之Hive是什么以及使用场景
Hive是什么1)Hive由facebook开源,构建在Hadoop (HDFS/MR)上的用于管理和查询结果化/非结构化的数据仓库:2)一种可以存储.查询和分析存储在Hadoop 中的大规模数据的机 ...
随机推荐
- Html5笔记之第六天
Canvas元素 <canvas> 标签定义图形,比如图表和其他图像,您必须使用脚本来绘制图形. 在画布上(Canvas)画一个红色矩形,渐变矩形,彩色矩形,和一些彩色的文字. <c ...
- WPF DEV实现手风琴效果
说明 最近用WPF+DevExpress做项目时,需要做一个类似手风琴的效果,效果的界面如下.因为没有现成的控件,需要自定义模板,所以写了一个Demo和大家分享,项目中可以根据实际情况使用.如果你用不 ...
- ireport导出中英文pdf
准备: 报表开发工具:ireport 5.6.0 报表框架: jasperreport5.6.0 1.中文格式设置pdf fontname.isembedded.pdfencoding pdf fon ...
- Entity Framework Core 2.0 数据库迁移
看见过几篇其他大神写的关于EFCore2.0的文章.本人有点小白,一开始看文档的时候除了一些基本操作外其他部分几乎没有读懂,我估计会有一部分人跟我一样,因为人家读懂了的早就懂了. 在这里我写一下我自己 ...
- URL.createObjectURL() 与 URL.revokeObjectURL()
.URL.createObjectURL URL.createObjectURL()方法会根据传入的参数创建一个指向该参数对象的URL. 这个URL的生命仅存在于它被创建的这个文档里. 新的对象URL ...
- pip install python 如何快速安装模块
之前python安装模块要在网络上下载,从python2.7.9之后,以及python3,python就自带pip 这个命令,能够快速的安装模块 1, 首先打开python的主文件夹 2.在主文件夹 ...
- python--对配置文件进行搜索,增加新的内容
要求: 文件haproxy1.查 输入:www.oldboy.org 获取当前backend下的所有记录2.新建 输入: arg = {'backend': 'www.oldboy.org','rec ...
- 【集美大学1411_助教博客】团队作业9——测试与发布(Beta版本)
写在前面的话 已经看到了大家的发布成果,很欣喜,虽然有的团队的产品还是有一点问题,但大家也都发布成功了,这就是软件的魅力.但还是要说一些问题,大家录的视频不是没人讲解就是讲得太快,在我看来这都没有在卖 ...
- 姑娘你大胆地往前走——答大二学生XCL之八问
姑娘你大胆地往前走--答大二学生XCL之八问 以下问题的答案写给我家正在读大二的XCL. 写于 2017-9-13 晚 请问您是为什么选择了IT行业的? 与其说是我选择了行业,不如说是行业选择了我. ...
- 团队作业8——第二次项目冲刺(Beta阶段)5.20
1.当天站立式会议照片 会议内容: 本次会议为第二次会议 本次会议在陆大楼2楼召开,本次会议内容: ①:检查第一次任务完成情况 ②:做第二次任务的详细分工 ③:规定完成时间是在第三次任务之前 ④:遇到 ...