[hive]搭建hive3.1.2hiveserver2高可用可hive metastore高可用

参考:

Apache hive 3.1.2从单机到高可用部署 HiveServer2高可用 Metastore高可用 hive on spark hiveserver2 web UI 高可用集群启动脚本_薛定谔的猫不吃猫粮的博客-CSDN博客

没用里头的hive on spark,测试后发现版本冲突 

一、Hive 集群规划(蓝色部分)

ck1ck2ck3
SecondaryNameNodeNameNode
DataNodeDataNodeDataNode
ResourceManager
yarn historyserver
NodeManagerNodeManagerNodeManager
MySQL
hiveServer2hiveServer2
hiveMetastorehiveMetastore
Spark
Spark JobHistoryServer

二、配置文件

记得向hive的lib导入mysql6以上的安装包,否则:

[hive]报错:Caused by: java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver_胖胖学编程的博客-CSDN博客

1、ck3和ck2相同的

1)hive-env.sh 末尾添加3行:

# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/home/data_warehouse/module/hadoop-3.1.3# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/data_warehouse/module/hive-3.1.2/conf# Folder containing extra libraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/home/data_warehouse/module/hive-3.1.2/lib

2)环境变量

#HIVE_HOME
export HIVE_HOME=/home/data_warehouse/module/hive-3.1.2
export PATH=$PATH:$HIVE_HOME/bin

2、ck3和ck2不同的

ck3

hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://ck3:3306/metastore?useSSL=false</value></property>
<!-- jdbc 连接的 Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property>
<!-- jdbc 连接的 username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>
<!-- jdbc 连接的 password --><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property>
<!-- Hive 元数据存储版本的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>
<!--元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><!-- 指定存储元数据要连接的地址<property><name>hive.metastore.uris</name><value>thrift://ck3:9083</value></property> -->
<!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.server2.session.check.interval</name><value>60000</value></property><property><name>hive.aux.jars.path</name><value>/home/data_warehouse/module/hive-3.1.2/lib</value></property><property><name>hive.execution.engine</name><value>mr</value></property><!--hive metastore高可用--><property><name>hive.metastore.uris</name><value>thrift://ck2:9083,thrift://ck3:9083</value></property><!--hiveserver2高可用--><property><name>hive.server2.support.dynamic.service.discovery</name><value>true</value></property><!-- <property><name>hive.server2.active.passive.ha.enable</name><value>true</value></property> --><property><name>hive.server2.zookeeper.namespace</name><value>hiveserver2_zk</value></property><property><name>hive.zookeeper.quorum</name><value>ck1:2181,ck2:2181,ck3:2181</value></property><property><name>hive.zookeeper.client.port</name><value>2181</value></property><!--填写节点, 如ck2,ck3 注意要填写本机的hostname--><property><name>hive.server2.thrift.bind.host</name><value>ck3</value></property><property><name>hive.server2.thrift.port</name><value>10000</value></property><!--hiveserver2 webui--><property><name>hive.server2.webui.host</name><value>ck3</value></property><property><name>hive.server2.webui.port</name><value>10002</value></property><!-- <property><name>hive.server2.idle.session.timeout</name><value>3600000</value></property>  --></configuration>

ck2

hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- jdbc 连接的 URL --><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://ck3:3306/metastore?useSSL=false</value></property>
<!-- jdbc 连接的 Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.cj.jdbc.Driver</value></property>
<!-- jdbc 连接的 username--><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property>
<!-- jdbc 连接的 password --><property><name>javax.jdo.option.ConnectionPassword</name><value>123456</value></property>
<!-- Hive 元数据存储版本的验证 --><property><name>hive.metastore.schema.verification</name><value>false</value></property>
<!--元数据存储授权--><property><name>hive.metastore.event.db.notification.api.auth</name><value>false</value></property><!-- 指定存储元数据要连接的地址<property><name>hive.metastore.uris</name><value>thrift://ck3:9083</value></property> -->
<!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><property><name>hive.cli.print.current.db</name><value>true</value></property><property><name>hive.cli.print.header</name><value>true</value></property><property><name>hive.server2.session.check.interval</name><value>60000</value></property><property><name>hive.aux.jars.path</name><value>/home/data_warehouse/module/hive-3.1.2/lib</value></property><property><name>hive.execution.engine</name><value>mr</value></property><!--hive metastore高可用--><property><name>hive.metastore.uris</name><value>thrift://ck2:9083,thrift://ck3:9083</value></property><!--hiveserver2高可用--><property><name>hive.server2.support.dynamic.service.discovery</name><value>true</value></property><!-- <property><name>hive.server2.active.passive.ha.enable</name><value>true</value></property> --><property><name>hive.server2.zookeeper.namespace</name><value>hiveserver2_zk</value></property><property><name>hive.zookeeper.quorum</name><value>ck1:2181,ck2:2181,ck3:2181</value></property><property><name>hive.zookeeper.client.port</name><value>2181</value></property><!--填写节点, 如ck2,ck3 注意要填写本机的hostname--><property><name>hive.server2.thrift.bind.host</name><value>ck2</value></property><property><name>hive.server2.thrift.port</name><value>10000</value></property><!--hiveserver2 webui--><property><name>hive.server2.webui.host</name><value>ck2</value></property><property><name>hive.server2.webui.port</name><value>10002</value></property><!-- <property><name>hive.server2.idle.session.timeout</name><value>3600000</value></property>  --></configuration>

三、运行hiveserver2和hive metastore服务的脚本(ck2,ck3相同,下面缺一不可)

将这两个脚本放在/home/data_warehouse/module/hive-3.1.2/bin下,并chmod 777

1、hiveservices.sh

#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
mkdir -p $HIVE_LOG_DIR
#检查进程是否运行正常,参数1为进程名,参数2为进程端口
function check_process()
{pid=$(ps -ef 2>/dev/null | grep -v grep | grep -i $1 | awk '{print $2}')ppid=$(netstat -nltp 2>/dev/null | grep $2 | awk '{print $7}' | cut -d '/' -f 1)echo $pid[[ "$pid" =~ "$ppid" ]] && [ "$ppid" ] && return 0 || return 1
}
function hive_start()
{metapid=$(check_process HiveMetastore 9083)cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &"cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1"[ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动"server2pid=$(check_process HiveServer2 10000)cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &"[ -z "$server2pid" ] && eval $cmd || echo "HiveServer2服务已启动"
}
function hive_stop()
{metapid=$(check_process HiveMetastore 9083)[ "$metapid" ] && kill $metapid || echo "Metastore服务未启动"server2pid=$(check_process HiveServer2 10000)[ "$server2pid" ] && kill $server2pid || echo "HiveServer2服务未启动"
}
case $1 in
"start")hive_start;;
"stop")hive_stop;;
"restart")hive_stopsleep 2hive_start;;
"status")check_process HiveMetastore 9083 >/dev/null && echo "Metastore服务运行正常" || echo "Metastore服务运行异常"check_process HiveServer2 10000 >/dev/null && echo "HiveServer2服务运行正常" || echo "HiveServer2服务运行异常";;
*)echo Invalid Args!echo 'Usage: '$(basename $0)' start|stop|restart|status';;
esac

2、hive2server.sh

#!/bin/bash
if [ $# -lt 1 ]
thenecho "No Args Input..."exit ;
fi
case $1 in
"start")echo " =================== ck3 启动 HiveServer2和Metastore服务  ==================="ssh ck3 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh start"echo " =================== ck2 启动 HiveServer2和Metastore服务  ==================="ssh ck2 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh start"
;;
"stop")echo " =================== ck3 停止 HiveServer2和Metastore服务  ==================="ssh ck3 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh stop"echo " =================== ck2 停止 HiveServer2和Metastore服务  ==================="ssh ck2 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh stop"
;;
"status")echo " =================== ck3 查看 HiveServer2和Metastore服务  ==================="ssh ck3 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh status"echo " =================== ck2 查看 HiveServer2和Metastore服务  ==================="ssh ck2 "/home/data_warehouse/module/hive-3.1.2/bin/hiveservices.sh status"
;;*)echo "Input Args Error...start|stop|status"
;;
esac

四、启动hiveserver2和metastire服务

1、启动 :在ck3或ck2上:hive2server.sh start

2、查看状态 :在ck3或ck2上:hive2server.sh status

3、关闭 :在ck3或ck2上:hive2server.sh stop

五、使用

依次输入下面两个命令

beeline
!connect jdbc:hive2://ck1,ck2,ck3/;password=123456;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk  root

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/136742.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Java+freemarker实现动态赋值以及生成Word文档

前言 有一个需求就是给定一个正确格式的 Word 文档模板&#xff0c;要求通过动态赋值方式&#xff0c;写入数据并新生成 该模板格式的 Word 文档。这很明显使用 Javafreemarker 方式来实现颇为简单。 一、导入依赖 <!-- freemarker --> <dependency><groupId…

基于Qt4的拉格朗日插值实现及使用

目录 1 拉格朗日插值算法 2 实现思路 3 子程序编写 1 框架搭建 2 加载节点值 3 加载插值点 4 位置查找 5 二点线性插值 3 子程序使用 1 拉格朗日插值算法 拉格朗日插值是一种常用的散点插值算法,是是以法国十八世纪数学家约瑟夫拉格朗日命名的一种多项式插值方法。是…

创建线程的方式打开记事本

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 今天操作系统课老师讲到进程&#xff0c;提出了一个有趣的小实验&#xff1a;能否以系统调用的方式利用 Windows 创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣&#xff0c;姑且写一个玩…

【小程序】实现经典2048小游戏

概述 经典小游戏2048&#xff0c;2048小游戏对于逻辑要求还是很有技术含量的&#xff0c;有兴趣的可以看看 详细 以前学习时写的小游戏2048&#xff0c;技术含量还是不错的&#xff0c;有兴趣的可以看看 2048已经封装好了&#xff0c;在主页面直接引入文件可以直接调用 演…

k8s优雅停服

在应用程序的整个生命周期中&#xff0c;正在运行的 pod 会由于多种原因而终止。在某些情况下&#xff0c;Kubernetes 会因用户输入&#xff08;例如更新或删除 Deployment 时&#xff09;而终止 pod。在其他情况下&#xff0c;Kubernetes 需要释放给定节点上的资源时会终止 po…

Mybatis框架学习

什么是mybatis&#xff1f; mybatis是一款用于持久层的、轻量级的半自动化ORM框架&#xff0c;封装了所有jdbc操作以及设置查询参数和获取结果集的操作&#xff0c;支持自定义sql、存储过程和高级映射 mybatis用来干什么&#xff1f; 用于处理java和数据库的交互 使用mybat…

八股文学习三(jvm+线程池+锁)

1. jvm (1)概念 JVM是可运行 Java 代码的假想计算机 &#xff0c;包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收&#xff0c;堆 和 一个存储方法域。JVM 是运行在操作系统之上的&#xff0c;它与硬件没有直接的交互。 java运行过程&#xff1a; 我们都知道 Java…

【Linux】:Kafka组件介绍

目录 环境简介 一、消息 二、主题 三、分区 四、副本 五、生产者 六、消费者 七、消费者组 八、offsets【偏移量】 环境简介 Linux内核&#xff1a;Centos7 Kafka版本&#xff1a;3.5.1 执行命令的目录位置&#xff1a;Kafka安装目录的bin目录下&#xff1a;/usr/loca…

读书笔记-《ON JAVA 中文版》-摘要25[第二十二章 枚举]

文章目录 第二十二章 枚举1. 基本功能1.1 基本 enum 特性 2. 方法添加2.1 方法添加2.2 覆盖 enum 的方法 3 switch 语句中的 enum4. values 方法的神秘之处5. 实现而非继承6. 随机选择7. 使用接口组织枚举8. 使用 EnumSet 替代 Flags9. 使用 EnumMap10. 常量特定方法11. 本章小…

【操作系统笔记】链接阶段ELF文件

链接阶段&#xff1a;符号解析 链接阶段主要包含&#xff1a; 符号解析重定位 一般情况下&#xff0c;每个 C 文件可以看成一个程序模块&#xff0c;比如下边的main.c就是一个程序模块 #include <stdio.h>extern int shared; int sum(int *a, int n); int array[2] …

springcloud3 分布式事务-seata的四种模式总结以及异地容灾

一 seata四种模式比较 1.1 seata的4种模式比较 二 seata的高可用 2.1架构 1.建TC服务集群非常简单&#xff0c;启动多个TC服务&#xff0c;注册到nacos即可。 2.做异地多机房容灾&#xff0c;比如一个TC集群在上海&#xff0c;另一个TC集群在杭州&#xff0c; 3.微服务基…

TuyaLink 快速入门教程

通过本入门教程&#xff0c;大家能了解到如何在涂鸦 IoT 开发平台上使用 TuyaLink 完成智能设备接入。并通过 Java 程序&#xff0c;在 IntelliJ IDEA 中使用 TuyaLink 的 GitHub Demo 工程&#xff0c;对一个电工开关设备&#xff0c;实现基本的数据上报下发功能。 准备工作 …

jmeter基础压力教程

Jmeter基础压力测试教程 一、安装Jmeter&#xff1b; 安装需求&#xff1a;1. JDK 8.0.91安装包&#xff08;最新即可&#xff0c;配置环境变量&#xff09; 2. Badboy2.25脚本录制工具&#xff08;注&#xff1a;Jmeter3.0与badboy2.0不兼容&#xff09; Jmerter安装包…

【数据库系统概论】关系数据库中的关系数据结构

前言关系关系模式关系数据库关系模型的存储结构感谢 &#x1f496; 前言 上一篇文章【数据库系统概论】数据模型介绍了数据库系统中的数据模型的基本概念。其中提到了关系模型是最重要的一种数据模型。下面将介绍支持关系模型的数据库系统——关系数据库。 按照数据模型的三大…

C++之std::holds_alternative、std::get、std::variant应用实例(二百一十九)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

阿里云产品试用系列-Serverless 应用引擎 SAE

Serverless 应用引擎 SAE&#xff08;Serverless App Engine&#xff09;是一个全托管、免运维、高弹性的通用 PaaS平台。SAE 支持 Spring Boot、Spring Cloud、Dubbo、HSF、Web 应用和 XXL-JOB、ElasticJob任务的全托管&#xff0c;零改造迁移、无门槛容器化、并提供了开源侧诸…

VUE3写后台管理(3)

VUE3写后台管理&#xff08;3&#xff09; 1.环境1.node2.vite3.Element-plus4.vue-router5.element icon6.less7.vuex8.vue-demi9.mockjs10.axios11.echarts 2.首页1.布局Main2.头部导航栏CommonHeader3.左侧菜单栏CommonLeft4.首页Home1.从后端获取数据显示到前端table的三种…

vue动态修改浏览器title和icon图标

vue动态修改浏览器title和icon图标 实例代码 setTitleIcon(){var link document.querySelector("link[rel*icon]") || document.createElement(link);link.type image/x-icon;link.rel shortcut icon;link.href /002.png; // 图片放public目录document.getElem…

SSM - Springboot - MyBatis-Plus 全栈体系(十)

第二章 SpringFramework 五、Spring AOP 面向切面编程 4. Spring AOP 框架介绍和关系梳理 AOP是一种区别于OOP的编程思维&#xff0c;用来完善和解决OOP的非核心代码冗余和不方便统一维护问题&#xff01;代理技术&#xff08;动态代理|静态代理&#xff09;是实现AOP思维编…

红黑树的定义和性质以及插入、删除操作

1.红黑树发明的原因 分析二叉排序树&#xff0c;平衡二叉树&#xff0c;红黑树的算法效率&#xff1a; BSTAVL TreeRed-Black Tree时间196019621972时间复杂度&#xff08;增删查&#xff09; O ( n ) O(n) O(n) O ( l o g 2 n ) O(log_2n) O(log2​n) O ( l o g 2 n ) O(log…