Hive 的 安装与部署

目录

  • 1 安装 MySql
  • 2 安装 Hive
  • 3 Hive 元数据配置到 MySql
  • 4 启动 Hive

Hive 官网

1 安装 MySql


为什么需要安装 MySql?

  • 原因在于Hive 默认使用的元数据库为 derby,开启 Hive 之后就会占用元数据库,且不与其他客户端共享数据,如果想多窗口操作就会报错,操作比较局限。以我们需要将Hive 的元数据地址改为 MySql,可支持多窗口操作。

(1)检查当前系统是否安装过 Mysql,如果有,则删除

[huwei@hadoop101 ~]$ rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[huwei@hadoop101 ~]$ sudo rpm -e --nodeps  mariadb-libs

rpm -qa 用于列出系统中已安装的所有软件包的名称,CentOS 6系统自带的数据库 MySql,CentOS 7系统自带的数据库是 mariadb(本质上就是 MySQL),根据自己的系统来确定。

(2)将 MySql 安装包拷贝到 /opt/software 目录下

(3)解压 MySql 安装包

新建 mysql_rpm 文件夹,并将MySQL 安装包中的文件解压在此处

[huwei@hadoop101 software]$ mkdir mysql_rpm
[huwei@hadoop101 software]$ tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C ./mysql_rpm/

注意,mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar没有以gz结尾,不是压缩文件

(4)在安装目录下执行 rpm 安装

注意:按照 顺序 依次执行

[huwei@hadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
[huwei@hadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[huwei@hadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
[huwei@hadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[huwei@hadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm

(5)初始化数据库

[huwei@hadoop101 mysql_rpm]$ sudo mysqld --initialize --user=mysql

(6)查看临时生成的 root 用户的密码

[huwei@hadoop101 mysql_rpm]$ sudo cat /var/log/mysqld.log

在这里插入图片描述

复制保存临时密码

(7)启动 MySql 服务

[huwei@hadoop101 mysql_rpm]$ sudo systemctl start mysqld

(8)登录 MySql 数据库

[huwei@hadoop101 mysql_rpm]$ mysql -uroot -p

不建议直接在-p后直接输入密码,因为临时密码中可能含有一些特殊字符,shell 可能会把这些特殊字符解析导致出问题

在这里插入图片描述

(9)必须先修改 root 用户的密码,否则执行其他的操作会报错

这里我将 root 用户的密码改为 root

mysql> set password = password("root");

(10)修改 mysql 库下的 user 表中的 root 用户允许任意 ip 连接

此时我是在主机 hadoop101 上安装的 MySQL,如果我想在主机 hadoop102 上登录MySQL,是登录不上的

mysql> update mysql.user set host='%' where user='root';
mysql> flush privileges;

退出 MySQL 数据库

mysql> exit;

2 安装 Hive


(1)把 apache-hive-3.1.2-bin.tar.gz上传到 linux 的 /opt/software 目录下

(2)解压 apache-hive-3.1.2-bin.tar.gz/opt/module/ 目录下面

[huwei@hadoop101 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/

(3)修改 apache-hive-3.1.2-bin 的名称为 hive-3.1.2

[huwei@hadoop101 software]$ cd ../module/
[huwei@hadoop101 module]$ mv apache-hive-3.1.2-bin/ hive-3.1.2

(4)修改 /etc/profile.d/my_env.sh,添加环境变量

[huwei@hadoop101 module]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容

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

使环境变量生效

[huwei@hadoop101 module]$ source /etc/profile

(5)解决日志Jar包冲突

[huwei@hadoop101 module]$ cd hive-3.1.2/lib/
[huwei@hadoop101 module]$ ll

在这里插入图片描述

hive 工作时底层是基于 hadoop 的,hadoop 里也有日志的 jar 包,二者可能会有冲突,将 hive 中的 log4j-slf4j-impl-2.10.0.jar删除,在hive运行时直接使用 hadoop 提供的日志 jar 包。

[huwei@hadoop101 lib]$ rm -rf log4j-slf4j-impl-2.10.0.jar

3 Hive 元数据配置到 MySql


(1)在 $HIVE_HOME/conf目录下新建 hive-site.xml 文件

[huwei@hadoop101 ~]$ vim $HIVE_HOME/conf/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://hadoop101:3306/metastore?useSSL=false</value>
</property><!-- jdbc连接的Driver--><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.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>root</value>
</property><!-- Hive默认在HDFS的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</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>
</configuration>

(2)拷贝驱动

上传 JDBC 驱动至/opt/software/ ,然后将 MySql 的 JDBC 驱动拷贝到 Hive 的 lib 目录下

[huwei@hadoop101 software]$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib

(3)初始化元数据库

登录 mysql

[huwei@hadoop101 ~]$ mysql -uroot -proot

由于在 hive-site.xml 文件中指定了存放元数据的数据库 metastore
在这里插入图片描述

所以新建 Hive 元数据库 metastore

mysql> create database metastore;
Query OK, 1 row affected (0.01 sec)mysql> quit;
Bye

初始化 Hive 元数据库

[huwei@hadoop101 ~]$ schematool -initSchema -dbType mysql -verbose

4 启动 Hive


(1)启动 hadoop 集群

[huwei@hadoop101 ~]$ hdp_cluster.sh start

从下面三种启动方式中选择一种即可

(3)普通方式启动 hive

[huwei@hadoop101 ~]$ hive

(4)元数据服务方式启动 hive

hive的元数据是存在 MySql 里的,如果不使用元数据服务的话,hive直接会操作MySql里的元数据,使用元数据服务的话,hive会操作元数据服务,元数据服务再去操作 MySql 里的元数据

① 在 hive-site.xml 文件中添加如下配置信息

[huwei@hadoop101 ~]$ cd /opt/module/hive-3.1.2/conf
[huwei@hadoop101 conf]$ vim hive-site.xml
    <!-- 指定存储元数据要连接的地址 --><property><name>hive.metastore.uris</name><value>thrift://hadoop101:9083</value></property>

② 启动 metastore

[huwei@hadoop101 ~]$ hive --service metastore

③ 新开启一个窗口,启动 hive

[huwei@hadoop101 ~]$ hive

(5)JDBC 方式启动 hive

这里是引用

① 在 hive-site.xml 文件中添加如下配置信息

[huwei@hadoop101 ~]$ cd /opt/module/hive-3.1.2/conf
[huwei@hadoop101 conf]$ vim hive-site.xml
    <!-- 指定hiveserver2连接的host --><property><name>hive.server2.thrift.bind.host</name><value>hadoop101</value></property><!-- 指定hiveserver2连接的端口号 --><property><name>hive.server2.thrift.port</name><value>10000</value></property>

② 启动 hiveserver2

[huwei@hadoop101 ~]$ hive --service hiveserver2

③ 新开启一个窗口,启动 beeline 客户端

[huwei@hadoop101 conf]$ beeline -u jdbc:hive2://hadoop101:10000 -n huwei

注意:-n后跟的是当前的用户名

在这里插入图片描述

(6)使用 hive

hive> show databases;
hive> show tables;
hive> create table test (id int);
hive> insert into test values(1);
hive> select * from test;

(7)编写启动 metastore 和 hiveserver2 脚本

前面第2、3种启动的方式导致需要打开多个 shell 窗口,编写启动 metastore 和 hiveserver2 脚本

[huwei@hadoop101 ~]$ cd bin
[huwei@hadoop101 bin]$ vim hiveservice.sh
#!/bin/bash
HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
thenmkdir -p $HIVE_LOG_DIR
fi
#检查进程是否运行正常,参数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

添加执行权限

[huwei@hadoop101 bin]$ chmod u+x hiveservice.sh

启动服务

[huwei@hadoop101 bin]$ hiveservice.sh start

在这里插入图片描述

此时,我们发现有两个 RunJar 进程,就是hive服务进程了

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

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

相关文章

C语言光速入门笔记

C语言是一门面向过程的编译型语言&#xff0c;它的运行速度极快&#xff0c;仅次于汇编语言。C语言是计算机产业的核心语言&#xff0c;操作系统、硬件驱动、关键组件、数据库等都离不开C语言&#xff1b;不学习C语言&#xff0c;就不能了解计算机底层。 目录 C语言介绍C语言特…

【Linux Shell】12. 文件包含

和其他语言一样&#xff0c;Shell 也可以包含外部脚本&#xff0c;这样可以很方便的封装一些公用的代码作为一个独立的文件。可以理解为在第2个文件中包含第1个文件&#xff0c;执行第1个文件的代码。 被包含的文件 不需要可执行权限 。Shell 文件包含的语法格式如下&#xff1…

mysql基础-表数据操作之查

目录 1.别名 2. 单表查询 2.1 模糊查询 - like 2.2 limit 2.3 order by 2.4 group by 2.5 in 2.6 between and 2.6 is null 2.7 not 2.8 运算符 3. 联表查询 全连接 左连接 右连接 本次分享一下数据的DQL语言。 1.别名 首先分享一下别名的知识。我们在查询的时…

05 Ciso模拟器连接腾讯云物联网开发平台

Ciso声明&#xff1a;本篇文章基于使用腾讯云物联网平台连接自定义esp8266物联网设备(腾讯连连控制开关实现) - CSDN App改编 一、总体概览 功能描述&#xff1a; 使用腾讯连连小程序进行控制&#xff0c; Alarm&#xff08;警铃&#xff09;&#xff1a;开的时候&#xff…

【Spring实战】20 Spring Data REST+JPA构建基础的RESTful API

文章目录 1. 基础概念1&#xff09;Spring Data REST2&#xff09;JPA&#xff08;Java Persistence API&#xff09; 2. 添加依赖3. 创建JPA实体4. 创建JPA Repository5. 启用Spring Data REST6. 启动服务7. 测试8. 总结 Spring Data REST 是 Spring Framework 生态系统中的一…

OpenSSL——升级

OpenSSL&#xff08;Open Secure Sockets Layer&#xff09;是一个开源的软件库&#xff0c;提供了SSL和TLS协议的实现&#xff0c;用于加密通信。它广泛用于安全连接&#xff0c;例如在网站上通过HTTPS协议进行安全的数据传输. 但是从openssl申请道德证书是不安全的。对于网站…

【算法每日一练]-动态规划(保姆级教程 篇14) #三倍经验 #散步 #异或和 #抽奖概率

目录 今日知识点&#xff1a; 金字塔的正反dp两种方案&#xff0c;转移方程取决于dp的具体含义 取模实现循环走m步回到原点的方案 在统计上升子序列的时候使用最小结尾元素进行标记&#xff0c;一举两得 将亏本的概率转换各种情况的方案&#xff0c;然后统计亏本的情况的方…

已解决 | Go Error: redeclared as imported package name 问题

博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》 — 面试准备的宝典&#xff01;《IDEA开发秘籍》 — 提升你的IDEA技能&#xff01;《100天精通Golang》…

RH850P1X芯片学习笔记-A/D Converter (ADCF)

文章目录 Features of RH850/P1x-C ADCFNumber of UnitsRegister Base AddressClock SupplyInterrupts and DMAHardware ResetExternal Input/Output SignalsVirtual Channel OverviewFunctional OverviewBlock DiagramPhysical Channels, Virtual Channels and Scan Groups Re…

数据结构和算法-数据结构的基本概念和三要素和数据类型和抽象数据类型

文章目录 总览数据结构的基本概念总览数据早期和现代的计算机处理的数据数据元素-描述一个个体数据对象-一类数据元素什么是数据结构小结 数据结构的三要素总览逻辑结构-集合结构逻辑结构-线性结构逻辑结构-树形结构逻辑结构-图形结构逻辑结构-小结数据的运算物理结构&#xff…

7个Pandas绘图函数助力数据可视化

大家好&#xff0c;在使用Pandas分析数据时&#xff0c;会使用Pandas函数来过滤和转换列&#xff0c;连接多个数据帧中的数据等操作。但是&#xff0c;生成图表将数据在数据帧中可视化&#xff0c;通常比仅仅查看数字更有帮助。 Pandas具有几个绘图函数&#xff0c;可以使用它…

复试 || 就业day05(2024.01.08)项目一

文章目录 前言代码模拟梯度下降构建函数与导函数函数的可视化求这个方程的最小值&#xff08;直接求导&#xff09;求方程最小值&#xff08;不令方程导为0&#xff09;【梯度下降】eta0.1eta 0.2eta 50eta 0.01画出eta0.1时的梯度下降x的变化过程 总结 前言 &#x1f4ab;你…

Python将Labelme文件的真实框和预测框绘制到图片上

Python将Labelme文件的真实框和预测框绘制到图片上 前言前提条件相关介绍实验环境Python将Labelme文件的标注信息绘制到图片上代码实现输出结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入Python日常小操作专…

qt信号和槽

Qt是一个跨平台的C图形用户界面应用框架 91年奇趣科技开发 pro工程文件介绍 .pro就是工程文件(project)&#xff0c;它是qmake自动生成的用于生产makefile的配置文件 QT core gui //Qt包含的模块greaterThan(QT_MAJOR_VERSION, 4): QT widgets //大于4版本包含…

2024.1.2 Redis 数据类型 Stream、Geospatial、HyperLogLog、Bitmaps、Bitfields 简介

目录 引言 Stream 类型 Geospatial 类型 HyperLogLog 类型 Bitmaps 类型 Bitfields 类型 引言 Redis 最关键&#xff08;应用广泛、频繁使用&#xff09;的五个数据类型 StringListHashSetZSet 下文介绍的数据类型一般适合在特定的场景中使用&#xff01; Stream 类型 St…

强化学习的数学原理学习笔记 - 基于模型(Model-based)

文章目录 概览&#xff1a;RL方法分类基于模型&#xff08;Model-Based&#xff09;值迭代&#xff08;Value Iteration&#xff09;&#x1f7e6;策略迭代&#xff08;Policy Iteration&#xff09;&#x1f7e1;截断策略迭代&#xff08;Truncated Policy Iteration&#xff…

EasyRecovery2024永久免费版电脑数据恢复软件

EasyRecovery是一款操作安全、价格便宜、用户自主操作的非破坏性的只读应用程序&#xff0c;它不会往源驱上写任何东西&#xff0c;也不会对源驱做任何改变。它支持从各种各样的存储介质恢复删除或者丢失的文件&#xff0c;其支持的媒体介质包括&#xff1a;硬盘驱动器、光驱、…

特征工程(一)

特征工程&#xff08;一&#xff09; 什么是特征工程 简单来讲将数据转换为能更好地表示潜在问题的特征&#xff0c;从而提高机器学习性能 特征工程包含的内容 转换数据的过程特征更好地表示潜在问题提高机器学习性能 数据和机器学习的基础知识 数据基础 以下为数据的一…

计算机网络(超级详细笔记)

使用教材计算机网络&#xff08;第8版&#xff09;&#xff08;谢希仁&#xff09; 第一章&#xff1a;概述 第二章&#xff1a;物理层 第三章&#xff1a;数据链路层 第四章&#xff1a;网络层 第五章&#xff1a;运输层 第六章&#xff1a;应用层 目…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统&#xff0c;该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度&#xff0c;市面上的培训机构管理系统收费越来越贵&#xff0c;为了给协会内培…