安装Hive2及配置HiveSever2

安装Hive及配置HiveSever2

Hive是一个数据仓库基础工具在Hadoop中用来处理结构化数据。它架构在Hadoop之上,提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,使查询和分析方便。

1.安装配置hive

这里使用的是hive-2.3.7版,下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
下载后使用filezilla上传虚拟机并解压命令:tar -zxvf 要解压的文件名
配置环境变量 vi /etc/profile #追加以下内容

export HIVE_HOME=hive文件路径
export PATH=$PATH:$HIVE_HOME/bin

配置后使用 source /etc/profile #更新源

进入到hive的conf目录下

(1).配置配置hive-env.sh文件,但是并没有,我们需要把hive-env.sh.template拷贝一份

cp hive-env.sh.template hive-env.sh
vi hive-env.sh     #追加以下内容
export JAVA_HOME=/opt/jdk1.8.0_161   #这里写你的配置jdk的路径
export HADOOP_HOME=/opt/hadoop-2.6.0-cdh5.7.0   #这里写你的配置hadoop的路径

(2).配置hive-site.xml(需要创建)

touch hive-site.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.56.2:3306/hive?useSSL=false&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8</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> 		# mysql用户
    </property>
<property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>	# mysql密码
    </property>

    <property>
        <name>datanucleus.schema.autoCreateAll</name>
        <value>true</value>
    </property>


</configuration>

*注意在上面配置中 useSSL=false 解决SSL警告(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议,设置useSSL = true并为服务器证书验证提供信任库。
配置文件是 .XML 格式,而在xml文件中&amp;才表示&。

property标签的内容意义如下:

配置参数 值配置 注解
javax.jdo.option.ConnectionURL jdbc:mysql://<host name>/<database name>?createDatabaseIfNotExist=true 元数据存储在mysql服务器中
javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver mysql jdbc驱动程序类
javax.jdo.option.ConnectionUserName <user name> 连接到MySQL server的用户名
javax.jdo.option.ConnectionPassword <password> 连接到MySQL server的密码
datanucleus.schema.autoCreateAll true/false 自动生成设置表

(3).将mysql驱动包 mysql-connector-java-5.1.45-bin.jar 导入hive的lib下

注意在mysql里创建hive并赋权(配置mysql请参考:https://www.cnblogs.com/A-Nan-q/p/14164177.html)

(4).启动Hadoop 使用schematool 初始化hive的元数据

schematool -initSchema -dbType mysql
如果安全模式则,只要在Hadoop的目录下输入:bin/hadoop dfsadmin -safemode leave

初始化失败原因有很多,如配置文件是否无误,mysql里的hive数据库等等..

(5).启动hive

hive (因为在/etc/profile中配置过$HIVE_HOME所以可以直接使用have启动)

启动报错1

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop-2.7.3/share/hadoop/common/lib/slf4j-log4j12-1.7.10.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

错误原因log4j冲突,删掉一个

rm -r /opt/hive-2.3.7/lib/log4j-slf4j-impl-2.6.2.jar

启动报错2

Logging initialized using configuraion in file:/opt/hive-2.3.7/conf/hive-log4j2.properties Async: true
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Call From wuya/192.168.56.2 to wuya:8020 failed on connection exception: java.net.ConnectException: Connection refused; For more details see:  http://wiki.apache.org/hadoop/ConnectionRefused
	at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:610)
	at org.apache.hadoop.hive.ql.session.SessionState.beginStart(SessionState.java:553)
	at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:750)
	at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:686)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
	at org.apache.hadoop.util.RunJar.main(RunJar.java:136

错误原因 hadoop未启动

2.配置HiveSever2

hiveserver 在老版本中还能使用,但现在的新版本已经不在支持 1.2开始就不再支持,hiveserver2 为了区分新老版本,名字就叫做hiveserver2。

hive配置成功后配置hiveserver2需要:

1.进入hive的conf的目录下配置hive-site.xml

 <!-- 这是hiveserver2 -->
  <property>
     <name>hive.server2.thrift.port</name>
     <value>10000</value>
  </property>

  <property>
    <name>hive.server2.thrift.bind.host</name>
    <value>127.0.0.1</value>
  </property>

**2.hadoop的配置也需要修改 core-site.xml **

注意:如果是hadoop集群而不是单机版,需要更改所有虚拟机上的core-site.xml文件

vi /hadoop安装路径/etc/hadoop/core-site.xml

<!-- 如果连接不上10000 -->
  <property>     
    <name>hadoop.proxyuser.root.hosts</name>     
    <value>*</value>
  </property> 
  <property>     
    <name>hadoop.proxyuser.root.groups</name>    
    <value>*</value> 
  </property>
  <property>     
    <name>hadoop.proxyuser.master.hosts</name> #master配置的主机名 hostname命令查看主机名
    <value>*</value> 
  </property> 
  <property>     
    <name>hadoop.proxyuser.master.groups</name>     #master配置的主机名
    <value>*</value> 
  </property>
  <property>     
    <name>hadoop.proxyuser.hive.hosts</name>     
    <value>*</value> 
  </property> 
  <property>     
    <name>hadoop.proxyuser.hive.groups</name>     
    <value>*</value> 
  </property>

3.测试

首先启动你集群中的Zookeeper和Hadoop

然后在安装hive的主机上启动hiveserver2

[root@master ~]# hiveserver2 
#或者 
[root@master ~]# hive --service hiveserver2

这个时候你的页面会一直卡在这里,这是正常的,因为你是启动了一个服务

你只需要再开一个Xshell窗口连接即可在新开的窗口操作

[root@master ~]# beeline
Beeline version 2.3.7 by Apache Hive
beeline> !connect jdbc:hive2://192.168.56.2:10000
Connecting to jdbc:hive2://192.168.56.2:10000
Enter username for jdbc:hive2://192.168.56.2:10000: root  #用户名root
Enter password for jdbc:hive2://192.168.56.2:10000: ******  #密码root
Connected to: Apache Hive (version 2.3.7)
Driver: Hive JDBC (version 2.3.7)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://192.168.56.2:10000> 

然后使用浏览器在你的192.168.56.2(安装hive的主机ip地址):10002查看

https://img-blog.csdn.net/20181024212943411?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xlYW5hb28=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

接下来可以在hiveserver2中操作,基本操作和hive中一样

0: jdbc:hive2://192.168.56.2:10000> show databases;
+----------------+
| database_name  |
+----------------+
| default        |
+----------------+
1 row selected (2.006 seconds)
原文地址:https://www.cnblogs.com/A-Nan-q/p/14174595.html