一、生产环境hive集群架构
参考:
hive2.3.7安装记录
hive基础入门与环境的搭建
基础篇七 Hive-2.3.9安装与配置
大数据之Hive 集群搭建 完整使用
数仓(十)hive的Metastore机制
二、前言快读
Hive安装分类
主要是metastore的服务搭建方式的却分,hive的搭建方式可以分为如下几种方式:
- Local/Embedded Metastore Database(Derby)
- Remote Metastore Database
- Local/Embedded Metastore Server
- Remote Metastore Server
根据上述分类,可以简单归纳为以下三类
- 使用Hive自带的内存数据库Derby作为元数据存储
- 使用远程数据库mysql作为元数据存储
- 使用本地/远程元数据服务模式安装Hive
三、hive的安装
-
下载,上传,解压
常规的拷贝hive的安装包hive-xxxxx.tar.gz文件,解压缩之后
tar zxvf hive-xxxx.tar.gz hive-xxxx
-
添加hive环境变量的配置
添加内容:
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH= ................................
-
修改配置文件
配置hive-site.xml,和新冠的日志配置项目
其中hive-site.xml文件核心配置项目:
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/data/hive/warehouse/</value>
<property>
<name>hive.exec.scratchdir</name>
<value>/data/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/data/hive/log</value>
</property>
<!--
<property><name>hive.server2.authentication</name><value>NONE</value><description>
Expects one of [nosasl, none, ldap, kerberos, pam, custom].
Client authentication types.
NONE: no authentication check
LDAP: LDAP/AD based authentication
KERBEROS: Kerberos/GSSAPI authentication
CUSTOM: Custom authentication provider
(Use with property hive.server2.custom.authentication.class)
PAM: Pluggable authentication module
NOSASL: Raw transport
</description></property>
-->
<property>
<name>hive.server2.thrift.client.user</name>
<value>ljgk</value>
<description>Username to use against thrift client</description>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>123456</value>
<description>Password to use against thrift client</description>
</property>
<!--mysql connection-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://172.18.8.77:3306/hive_metastore_tjwq?useSSL=false&useUnicode=true&characterEncoding=UTF-8</value>
<description>数据库连接</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description/>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description/>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description/>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
拷贝jdbc驱动
## 类似如下,请更换对应的jdbc驱动jar包
cd /Users/jinxingguang/.m2/repository/mysql/mysql-connector-java/8.0.25
scp mysql-connector-java-8.0.25.jar root@node01:/opt/bigdata/hive-2.3.9/lib/
原因:拷贝jdbc依赖包,用来支持hivemetastore服务中对底层mysql元数据库的连接;
-
解决日志jar包冲突
-
初始化元数据库
cd $HIVE_HOME/bin
./bin/schematool -dbType mysql -initSchema
6.启动hive,测试是否可用
$HIVE_HOME/bin/hive
如果可以正常访问即可,使用show databases;命令查看是否可用;
后台启动hive服务
分别启动hivemetastore和hiveserver2服务
新建hivemetastore和hiveserver2的输出日志路径:
#hivemetastore
mkdir -p /data/hive/hivemetastore/logs/
#hiveserver2
mkdir -p /data/hive/hiveserver2/logs/
启动hivemetastore
nohup hive --service metastore >/data/hive/hivemetastore/logs/metastore-log`date +%Y-%m-%d`.log 2>&1 &
jps查看集群信息
如果有RunJar进程则查看进程,有metastore说明metastore远程服务已经启动;
启动hivesever2:
nohup hive --service hiveserver2 >/data/hive/hiveserver2/logs/hiveserver2-log`date +%Y-%m-%d`.log 2>&1 &
客户端只用配置如下即可(未验证,待确认):
hive-site.xml 配置(客户端)
<?xmlversion="1.0"?>
<?xml-stylesheettype="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>hive.metastore.warehouse.dir</name> //数据库储存路径
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name> //注意这里是false, 不是本地模式
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name> //注意这里是false, 不是本地模式
<value>thrift://hadoop03:9083</value>
</property>
</configuration>
注意:如果有多个 metastore 服务器, 将 URL 之间用逗号分隔, metastore 服务器 URL 的格式为 thrift:host:port thrift://127.0.0.1:9083
hive的web ui 访问地址:
http://172.18.8.208:10002/
四、常见问题及解决
问题一:链接beeline时,设置无密码登录
客户端启动beeline链接
!connect jdbc:hive2://hadoop03:10000/
或者, 直接命令行界面输入如下,即可进入(如果需要输入免密时候,直接按回车键即可):
beeline -u jdbc:hive2://hadoop03:10000/ -n {your_username}
按照ctl+c即可退出链接界面
常见问题配置:
如果使用beeline访问的时候,需要账户密码,则可以使用如下,可以参考:beeline连接hive用户密码。
主要操作如下, 修改hadoop的core-site.xml文件
在文件中添加以下内容,设置代理用户:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
然后重启hadoop集群(包含hdfs集群和yarn集群)
sbin/stop-dfs.sh
sbin/stop-yarn.sh
sbin/start-dfs.sh
sbin/start-yarn.sh
问题二:hive表中出现中文乱码的解决方法
解决hive表中文乱码问题