[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.mzph.cn/news/82909.shtml

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

相关文章

【虚幻引擎】UE5 VLC接入网络监控、视频直播、网络直播支持RTSP、RTMP

一、如何更新自己的插件匹配自己想要的UE版本 我们在网上下载的插件一般是UE4版本的插件&#xff0c;这个时候就需要我们自己去修改编译&#xff0c;接下来教大家修改插件来适配自己的引擎。 如果不想自己编译代码&#xff0c;可以直接找我拿编译好的UE5.0、UE5.1、UE5.2的插件…

学习路之PHP--laravel postman 提交表单出现419错误

问题图片 解决&#xff1a; 白名单 有时候你可能希望设置一组不需要 CSRF 保护的 URL 。例如&#xff0c;如果你正在使用 Stripe 处理付款并使用了他们的 webhook 系统&#xff0c;你会需要从 CSRF 的保护中排除 Stripe webhook 处理程序路由&#xff0c;因为 Stripe 不知道要发…

swift 天气

定义不同模式主题 自定义颜色 输入框 委托和协议 扩展 协议 http 请求 调用api 闭包

记录crack某IDE插件过程

声明&#xff1a;本文仅记录学习过程&#xff0c;已对关键位置脱敏处理&#xff0c;未提供任何工具&#xff0c;请支持正版。 反编译jar包 使用cfr进行对插件核心jar包MyBxxxxxx-obfuss.jar进行反编译&#xff0c;在本地生成a.txt。 java -jar cfr-0.152.jar MyBxxxx-obfuss.…

用flask框架flask-sock和websocket创建一个自己的聊天界面

WebSocket 协议在10年前就已经标准化了(在2011年&#xff0c;你能相信吗?)所以我相信你不需要介绍。但是如果你不熟悉它&#xff0c;WebSocket 是 HTTP 协议的一个扩展&#xff0c;它在客户端和服务器之间提供了一个永久的、双向的通信通道&#xff0c;在这里双方可以实时地发…

Hugging Face使用Stable diffusion Diffusers Transformers Accelerate Pipelines VAE

Diffusers A library that offers an implementation of various diffusion models, including text-to-image models. 提供不同扩散模型的实现的库&#xff0c;代码上最简洁&#xff0c;国内的问题是 huggingface 需要翻墙。 Transformers A Hugging Face library that pr…

怎么将几张图片做成pdf合在一起

怎么将几张图片做成pdf合在一起&#xff1f;在我们平时的工作中&#xff0c;图片和pdf都是非常重要的电脑文件&#xff0c;使用也非常频繁&#xff0c;图片能够更为直观的展示内容&#xff0c;而pdf则更加的正规&#xff0c;很多重要文件大多会做成pdf格式的。在职场人的日常工…

C# OpenCvSharp 图片模糊检测(拉普拉斯算子)

效果 项目 代码 using OpenCvSharp; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.VisualStyl…

java CAS详解(深入源码剖析)

CAS是什么 CAS是compare and swap的缩写&#xff0c;即我们所说的比较交换。该操作的作用就是保证数据一致性、操作原子性。 cas是一种基于锁的操作&#xff0c;而且是乐观锁。在java中锁分为乐观锁和悲观锁。悲观锁是将资源锁住&#xff0c;等之前获得锁的线程释放锁之后&am…

React 全栈体系(九)

第五章 React 路由 一、相关理解 1. SPA 的理解 单页 Web 应用&#xff08;single page web application&#xff0c;SPA&#xff09;。整个应用只有一个完整的页面。点击页面中的链接不会刷新页面&#xff0c;只会做页面的局部更新。数据都需要通过 ajax 请求获取, 并在前端…

el-select 下拉框全选、多选的几种方式组件

组件一、基础多选 适用性较广的基础多选&#xff0c;用 Tag 展示已选项 <template><el-select v-model"value1" multiple placeholder"请选择"><el-optionv-for"item in options":key"item.value":label"item.la…

基于SpringBoot+Vue的宠物领养饲养交流管理平台设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

vue3+TS前端JS实现 搜索关键词变红

起初在网上搜索获得的处理方式大都是类似这种&#xff1a; 但是实际使用中发现&#xff0c;对于汉字和数字是没有问题的&#xff0c;但是如果有字母就会出现问题。 1.只有汉字和数字的时候&#xff1a;匹配正常。 2.当有字母的时候&#xff1a;异常替换。 原因&#xff1a;第二…

TuyaLink 快速入门教程

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

测试与FastAPI应用数据之间的差异

【squids.cn】 全网zui低价RDS&#xff0c;免费的迁移工具DBMotion、数据库备份工具DBTwin、SQL开发工具等 当使用两个不同的异步会话来测试FastAPI应用程序与数据库的连接时&#xff0c;可能会出现以下错误&#xff1a; 在测试中&#xff0c;在数据库中创建了一个对象&#x…

QT记事本+登陆界面的简单实现

主体头文件 #ifndef JSB_H #define JSB_H#include <QMainWindow> #include <QMenuBar>//菜单栏 #include <QToolBar>//工具栏 #include <QStatusBar>//状态栏 #include <QTextEdit>//文本 #include <QLabel>//标签 #include <QDebug&g…

Golang gorm 一对一关系

一对一关系 一对一关系比较少&#xff0c;一般用于表的扩展例如一张用户表&#xff0c;有很多字段那么就可以把它拆分为两张表&#xff0c;常用的字段放主表&#xff0c;不常用的字段放详情表。 针对用户表来说可以通过user去点出userinfo。 创建表和插入数据 package mainimp…

纯js实现html指定页面导出word

因为最近做了范文网站需要&#xff0c;所以要下载为word文档&#xff0c;如果php进行处理&#xff0c;很吃后台服务器&#xff0c;所以想用前端进行实现。查询github发现&#xff0c;确实有这方面的插件。 js导出word文档所需要的两个插件&#xff1a; FileSaver.js jquery.w…

【AI视野·今日NLP 自然语言处理论文速览 第三十六期】Tue, 19 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 19 Sep 2023 (showing first 100 of 106 entries) Totally 106 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Speaker attribution in German parliamentary debates with QLoRA-ada…

如何理解高效IO

目录 前言 1.如何理解高效的IO 2.五种IO模型 3.非阻塞IO 4.非阻塞代码编写 总结 前言 哈喽&#xff0c;很高兴和大家见面&#xff01;今天我们要介绍的关于IO的话题&#xff0c;在计算机中IO是非常常规的操作&#xff0c;例如将数据显示到外设&#xff0c;或者将数据从主…