Hive2.3.4安装

Hadoop版本:2.7.6

hive版本:2.3.4

hive各版本下载地址:https://archive.apache.org/dist/hive/

hive官网:https://hive.apache.org/

1、解压
下载好tar包传到服务器/usr/local下
cd  /usr/local
tar  -zxvf  apache-hive-2.3.4-bin.tar.gz

2、配置环境变量
vim /etc/profile
export HIVE_HOME=/usr/local/apache-hive-2.3.4-bin
export PATH=$PATH:$HIVE_HOME/bin

3、下载mysql连接驱动(这里是用mysql作为metastore
https://mvnrepository.com/artifact/mysql/mysql-connector-java/5.1.47
把jar放到${HIVE_HOME}/lib下

4、cd 到${HIVE_HOME}/conf下

cp hive-env.sh.template hive-env.sh
cp hive-default.xml.template hive-site.xml
cp hive-log4j2.properties.template hive-log4j2.properties
cp hive-exec-log4j2.properties.template hive-exec-log4j2.properties

5、修改hive-env.sh

export JAVA_HOME=/usr/local/software/jdk1.8
export HADOOP_HOME=/usr/local/hadoop-2.7.6
export HIVE_HOME=/usr/local/apache-hive-2.3.4-bin
export HIVE_CONF_DIR=/usr/local/apache-hive-2.3.4-bin/conf

6、在hdfs上创建文件夹并授权
 

hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -mkdir -p /user/hive/tmp
hdfs dfs -mkdir -p /user/hive/log
hdfs dfs -chmod -R 777 /user
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/tmp
hdfs dfs -chmod -R 777 /user/hive/log

7、修改hive-site.xml
 

以下配置放到末尾即可
<property>
    <name>hive.exec.scratchdir</name>
    <value>/user/hive/tmp</value>
</property>

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
</property>

<property>
    <name>hive.querylog.location</name>
    <value>/user/hive/log</value>
</property>

<!--这里配置的是远程metastore-->
<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://node2:3306/hive?createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false</value>
  </property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>root</value>
</property>

除了这些配置还需要更改${system:java.io.tmpdir}和{system:user.name} 
创建${HIVE_HOME}/tmp,chmod 777 tmp
${system:java.io.tmpdir} 改成 tmp
{system:user.name} 改成 {user.name} 
(如果你是cp的templates,如果你是新建的hive-site.xml则不用)

配置显示当前数据库和表头

在hive-site.xml里添加
<property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>
</property>
        
<property> 
    <name>hive.cli.print.header</name>
    <value>true</value>
</property>

配置hiveserver2

需要再hive-site.xml里添加

连接的端口
<property>
     <name>hive.server2.thrift.port</name>		 
     <value>10000</value>
</property>

启动server2的主机名或者ip
<property>
 	<name>hive.server2.thrift.bind.host</name>
 	<value>node1</value>
</property>

<!– hive支持并发 –>
<property>
<name>hive.support.concurrency</name>
<value>true</value>
<description>Enable Hive’s Table Lock Manager Service</description>
</property>
参考地址https://www.cnblogs.com/weiqiang-liu/p/4350470.html

设置impersonation(默认就是true)
这样hive server会以提交用户的身份去执行语句,如果设置为false,则会以起hive server daemon的admin user来执行语句 
<property>
  <name>hive.server2.enable.doAs</name>
  <value>true</value>
</property>



配置hadoop中的core-site.xml文件

<property>     
	<name>hadoop.proxyuser.root.hosts</name>     
	<value>*</value>
 </property> 
<property>     
	<name>hadoop.proxyuser.root.groups</name>    
    <value>*</value> 
</property>
<property>     
	<name>hadoop.proxyuser.wangyf05.hosts</name>     
	<value>*</value> 
</property> 
<property>     
	<name>hadoop.proxyuser.wangyf05.groups</name>     
	<value>*</value> 
</property>

如果不配置会报错
Error: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=,code=0)
 

需要安装mysql

在hive_home下的bin下 执行 

schematool -dbType mysql -initSchema 

metastore,配置thrift服务

<property>
    <name>hive.metastore.uris</name>
    <value>thrift://node1:9083</value>
    <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
    </description>
</property>

<property>  
  <name>hive.metastore.local</name>  
  <value>false</value>  
</property>  
实现thrift高可用,可以配置多个地址,逗号隔开 

Metastore的作用是:客户端连接metastore服务,metastore再去连接MySQL数据库来存取元数据。
有了metastore服务,就可以有多个客户端同时连接,而且这些客户端不需要知道MySQL数据库的用户名和密码,
只需要连接metastore 服务即可。

Hive Metastore有三种配置方式:
Embedded Metastore Database (Derby) 内嵌模式
Local Metastore Server 本地元存储
Remote Metastore Server 远程元存储

启动hiveserver2

hive --service hiveserver2 &
或者
hiveserver2 &

启动metastore

nohup hive --service metastore &

测试启动
thrift的客户端——beeline

连接
!connect jdbc:hive2://node1:10000

输入用户名root
输入密码,因为在core-site.xml设置的*,所以随便写

测试
输入show tables; databases; create , insert into 验证一下
beeline -u "jdbc:hive2://node5:2181,node4:2181,node3:2181/ding;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk" -nhadoop -phadoop123$

node5:2181,node4:2181,node3:2181 表示zk集群的连接信息
ding 表示要连接的hive库
serviceDiscoveryMode=zooKeeper 表示指定hiveserver连接模式为zookeeper连接
zooKeeperNamespace=hiveserver2_zk指定配置文件中的命名空间
-nhadoop 表示当前用户用hadoop用户连接beeline
-phadoop123$ 表示当前用户的密码(这里beeline的权限认证使用的是自定义的权限控制)

hive高可用搭建地址https://blog.csdn.net/qq_35315256/article/details/88658096

查看hive web页面

hiveserver2的Web UI配置
Hive 2.0 以后才支持Web UI的,在以前的版本中并不支持

<property>
    <name>hive.server2.webui.host</name>
    <value>node1</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

http://192.168.88.128:10002

 

二、hive几种服务介绍

1、cli:是Command Line Interface 的缩写,是Hive的命令行界面,用的比较多,是默认服务,直接可以在命令行里使用

2、hiveserver:这个可以让Hive以提供Thrift服务的服务器形式来运行,可以允许许多个不同语言编写的客户端进行通信,使用需要启动HiveServer服务以和客户端联系,我们可以通过设置HIVE_PORT环境变量来设置服务器所监听的端口,在默认情况下,端口号为10000,这个可以通过以下方式来启动Hiverserver:
bin/hive --service hiveserver2 -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  &(&表示后台运行) 或者
        nuhup hive –service hiveserver2  &

        用java,python等程序实现通过jdbc等驱动的访问hive就用这种起动方式了

四、hiveserver2

HiveServer2支持多客户端的并发和认证(身份验证),为开放API客户端如JDBC、ODBC提供更好的支持。
启动hiveserver2服务,可以得知默认hiveserver运行在端口10000,最小100工作线程,最大2147483647工作线程。

五、hive优化

job并行
<property>
    <name>hive.exec.parallel</name>
    <value>false</value>
    <description>Whether to execute jobs in parallel</description>
</property>
 
<property>
    <name>hive.exec.parallel.thread.number</name>
    <value>16</value>
    <description>How many jobs at most can be executed in parallel</description>
</property>
--------------------- 
原文:https://blog.csdn.net/qq_38282753/article/details/83274054 

 

参考:
原文:https://blog.csdn.net/gamer_gyt/article/details/52062460 
原文:https://blog.csdn.net/qq_41028958/article/details/86253213 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值