浅墨散人 浅墨散人
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • 基础
  • 设计模式
  • JVM
  • Maven
  • SpringBoot
  • 基础
  • Flask
  • Diango
  • Pandas
  • SqlAlchemy
  • Sqoop
  • Flume
  • Flink
  • Hadoop
  • Hbase
  • Hive
  • Kafka
  • Kylin
  • Zookeeper
  • Tez
  • MySQL
  • Doris
  • Chrome
  • Eclipse
  • IDEA
  • iTerm2
  • Markdown
  • SublimeText
  • VirtualBox
  • WebStrom
  • Linux
  • Mac
  • Hexo
  • Git
  • Vue
  • VuePress
  • 区块链
  • 金融
数据仓库
数据治理
读书笔记
关于我
GitHub (opens new window)
  • Hive

    • Hive
    • Hive的介绍及安装
    • Hive的DDL语句
    • Hive的hiveserver2
      • 1. Hive的几种内置服务
      • 2. Hive的三种启动方式
        • 2.1 hive 命令行模式
        • 2.2 hive web界面的启动方式
        • 2.3 hive 远程服务 (端口号10000) 启动方式
      • 3. hiveServer/HiveServer2
        • 3.1 简单介绍
        • 3.2 两者的区别
      • 4. 学习HiveServer和HiveServer2
        • 4.1 HiveServer
      • 5. 配置使用hiveserver2
        • 5.1 配置监听端口和路径
        • 5.2 设置impersonation
        • 5.3 hiveserver2节点配置
        • 5.4 zookeeper配置
        • 5.5 hiveserver2的Web UI配置
        • 5.6 启动服务
    • Hive的web管理工具hwi
    • Hive的desc乱码解决
    • Hive的Read past end of RLE integer from compressed stream Stream for column
  • BigData
  • Hive
2018-08-09
目录

Hive的hiveserver2

# 1. Hive的几种内置服务

执行bin/hive --service help如下:



 











[master@master1 hive]$ bin/hive --service help
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
1
2
3
4
5
6
7
8
9
10
11
12
13

我们可以看到上边输出项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来指定监听的端口号

# 2. Hive的三种启动方式

# 2.1 hive 命令行模式

​进入hive安装目录,输入bin/hive的执行程序,或者输入 hive –service cli

​用于linux平台命令行查询,查询语句基本跟mysql查询语句类似

# 2.2 hive web界面的启动方式

​bin/hive –service hwi & (& 表示后台运行)

​用于通过浏览器来访问hive,感觉没多大用途,浏览器访问地址是:http://127.0.0.1:9999/hwi (opens new window)

# 2.3 hive 远程服务 (端口号10000) 启动方式

bin/hive –service hiveserver2 &(&表示后台运行)

​用java,python等程序实现通过jdbc等驱动的访问hive就用这种起动方式了,这个是程序员最需要的方式了

# 3. hiveServer/HiveServer2

# 3.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提供更好的支持。

# 3.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

# 4. 学习HiveServer和HiveServer2

# 4.1 HiveServer

在命令行输入hive --service hiveserver –help查看hiveserver的帮助信息:

[hadoop@hadoop~]$ hive --service hiveserver --help
Starting Hive Thrift Server
usage:hiveserver
-h,--help                        Print help information
    --hiveconf <property=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
1
2
3
4
5
6
7
8
9
10
11

启动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
1
2
3
4

以上的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.

4.2 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
1
2
3
4

也可以设置环境变量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。
1
2
3
4
5

启动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 <property=value>   Use value for given property
1
2
3
4
5

默认情况下,HiveServer2以提交查询的用户执行查询(true),如果hive.server2.enable.doAs设置为false,查询将以运行hiveserver2进程的用户运行。为了防止非加密模式下的内存泄露,可以通过设置下面的参数为true禁用文件系统的缓存:

fs.hdfs.impl.disable.cache – 禁用HDFS文件系统缓存,默认值为false。
fs.file.impl.disable.cache – 禁用本地文件系统缓存,默认值为false。
1
2

# 5. 配置使用hiveserver2

提示

这里(Hive 2.0为例)

在sudo vim hive-site.xml中修改如下配置

# 5.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>
1
2
3
4
5
6
7
8

# 5.2 设置impersonation

这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句

<property>
  <name>hive.server2.enable.doAs</name>
  <value>true</value>
</property>
1
2
3
4

# 5.3 hiveserver2节点配置

Hiveserver2已经不再需要hive.metastore.local这个配置项了hive.metastore.uris为空,则表示是metastore在本地,否则就是远程)远程的话直接配置hive.metastore.uris即可

<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>
1
2
3
4
5
6

# 5.4 zookeeper配置

<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> 
1
2
3
4
5
6
7
8
9
10

注意

没有配置hive.zookeeper.quorum会导致无法并发执行hive ql请求和导致数据异常

# 5.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
2
3
4
5
6
7
8
9
10
11

# 5.6 启动服务

  1. 启动metastore

bin/hive --service metastore & 默认端口为9083

  1. 启动hiveserver2

$HIVE_HOME/bin/hiveserver2 OR $HIVE_HOME/bin/hive --service hiveserver2

  1. 测试

Web UI:http://192.168.48.130:10002/ (opens new window)

#Hive
最后更新时间: 2022/7/23 10:17:11
Hive的DDL语句
Hive的web管理工具hwi

← Hive的DDL语句 Hive的web管理工具hwi→

最近更新
01
分区分桶
08-21
02
数据模型(重要)
08-21
03
安装和编译
08-21
更多文章>
Theme by Vdoing
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式