提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
Hive高可用部署 HiveServer2高可用(HA)Metastore高可用(HA)基于Apache hive 3.1.2
提示:以下是本篇文章正文内容,下面案例可供参考
一、Hive是什么?
Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并可以使用类似SQL的方式来对数据文件进行读写以及管理。这套Hive SQL 简称HQL。Hive的执行引擎可以是MR、Spark、Tez。具体网络上查看
二、使用步骤
1.环境准备
操作系统:Windows 10
虚拟机:VMware 15.5
集群系统:Centos 7 64位
Zookeeper版本:zookeeper-3.4.10
Hadoop版本:hadoop-3.3.1
HBase版本:Hbase2.4.4
Hive版本:Hive3.1.2
2.集群规划
IP | HostName | Software | Process |
---|---|---|---|
192.168.74.88 | hadoop01 | hadoop,zookeeper,hbase,hive,mysql | DataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,ResourceManager,HMaster,HRegionServer,RunJar,RunJar |
192.168.74.89 | hadoop02 | hadoop,zookeeper | DataNode,NodeManager,QuorumPeerMain,JournalNode,NameNode,DFSZKFailoverController,HRegionServer |
192.168.74.90 | hadoop03 | hadoop,zookeeper,hbase,hvie | DataNode,NodeManager,QuorumPeerMain,JournalNode,ResourceManager,HMaster,HRegionServer,RunJar |
Hive metastore (HA)
节点 | hadoop01 | hadoop02 | hadoop03 |
---|---|---|---|
metastore | 有 | 有 | |
hiveserver2 | 有 | ||
client | 有 |
2.Hive远程模式安装
安装配置(示例):
# 创建一个新目录root
mkdir -p /data/hive
chown hadoop:hadoop /data/hive
su hadoop
cd /data/hive
tar -zxvf apache-hive-3.1.2-bin.tar.gz
# 重命名一下文件夹
mv apache-hive-3.1.2-bin app
cd /data/hive/app/conf/
# 将hive-env.sh.template拷贝一份命名hive-env.sh
scp hive-env.sh.template hive-env.sh
# 系统环境变量
vim ~/.bashrc
gedit ~/.bashrc
export HIVE_HOME=/data/hive/app
export PATH=$HIVE_HOME/bin:$PATH
source ~/.bashrc
# 编辑配置文件 hive-site.xml
# Hive 默认是没有带 Mysql 驱动程序的,安装Mysql
Hive 将元数据存储在 RDBMS 中,一般常用 MySQL 和 Derby。默认情况下,Hive 元数据 保存在内嵌的 Derby 数据库中,只能允许一个会话连接,只适合简单的测试。实际生产环境中不适用, 为了支持多用户会话,则需要一个独立的元数据库,使用 MySQL 作为元数据库,Hive 内部对 MySQL 提供了很好的支持
内置的derby主要问题是并发性能很差,可以理解为单线程操作。
# 初始化 MySql 数据库
使用 Hive schematool 初始化当前 Hive 版本的 Metastore 架构。该工具尝试从 Metastore 中找到当前架构(如果它在那里可用)。
schematool 确定初始化或升级架构所需的SQL脚本,然后针对后端数据库执行这些脚本。从 Hive 配置中提取 Metastore 数据库连接信息,例如 JDBC URL,JDBC driver 和数据库凭据。
schematool -dbType mysql -initSchema
# 创建测试数据,以及在hadoop上创建数据仓库目录
vim /data/hive/app/testdata001.dat
12306,mname,yname
10086,my.mshk.top,you.mshk.top
# 在 Hadoop 上创建数据仓库目录
hadoop fs -mkdir -p /hive/warehouse
# 用 Shell 测试连接 Hive
nohup hive
hive> set hive.server2.logging.operation.level=NONE
hive> show databases;
hive> create database testmshk;
hive> show databases;
hive> use testmshk;
hive> create external table testtable(uid int,myname string,youname string) row format delimited fields terminated by ',' location '/hive/warehouse/testtable';
hive> LOAD DATA LOCAL INPATH '/data/hive/app/testdata001.dat' OVERWRITE INTO TABLE testtable;
hive> select * from testtable;
hive> quit;
# 拷贝hive到其他机器
scp -r /data/hive/app hadoop@hadoop02:/data/hive
scp -r /data/hive/app hadoop@hadoop03:/data/hive
# 在hadoop01、hadoop03上分别启动 metastore 服务
# 启动 metastore 服务
nohup hive --service metastore &
# 查询9083端口(metastore服务占用的端口)
lsof -i:9083
# 启动hadoop01上的 HiveServer2 服务
nohup hive --service hiveserver2 &
# 检查 hiveserver2 端口
lsof -i:10000
hadoop01:jps
hadoop03:jps
HiveServer2提供了WebUI:
2.使用DBeaver图形化界面工具
输入hiveserver2的地址与用户,第一次没有设置密码,默认为空,点击完成
在DBeaver界面工具上执行SQL语句
搭建完毕
总结
记录点点滴滴:
Hive高可用部署有 HiveServer2高可用(HA)和Metastore高可用(HA),下次配置下HiveServer2高可用(HA)