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&characterEncoding=UTF-8&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