0


Hive 搭建(将 MySQL 作为元数据库)

Hive 搭建

前言:安装 Hive 之前请先确保你当前已经安装好了 Hadoop,并且运行正常。

本文中使用的 Hadoop 版本为

hadoop-3.1.3

、Hive 版本为

hive-3.1.2

、MySQL 版本为

MySQL 5.7

集群其它生态安装与配置:

  • Hadoop 完全分布式搭建(超详细)
  • Spark 集群搭建(多种方式)
  • Sqoop 安装配置(超详细)
  • Hudi 0.12.0 搭建——集成 Hive 与 Spark

一、安装 MySQL

1.卸载当前系统自带的 MySQL
rpm-qa|grep mysql
rpm-qa|grep mariadb

# 强制删除rpm-e--nodeps mariadb-libs-5.5.56-2.el7.x86_64

2.获取 MySQL 下载源
curl-O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm


如果出现错误:

curl: (6) Could not resolve host: repo.mysql.com; 未知的错误

,是由于 DNS 解析的问题导致的。

解决方法: 编辑文件

vim /etc/resolv.conf

,在其中添加如下内容:

options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 8.8.8.8

这样就可以正常获取下载源了。

3.安装 MySQL 源
yum localinstall mysql57-community-release-el7-11.noarch.rpm

4.检查 MySQL 源是否安装成功
yum repolist enabled |grep"mysql.*-community.*"

5.安装 MySQL
yum install mysql-community-server


如果安装过程中出现如下错误时:

重新导入一个新的公钥即可:

rpm--import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
6.启动 MySQL 服务
systemctl start mysqld
systemctl status mysqld

7.进入 MySQL 设置权限
# 查看临时密码cat /var/log/mysqld.log |grep password

# 输入临时密码进入 MySQL
mysql -uroot-p

# 进入后必须先修改密码!set password = password("新密码");

如果你的密码过于简单,会出现如下错误:

Your password does not satisfy the current policy requirements.

修改其安全等级即可:

# 必须按顺序执行set global validate_password_policy=0;set global validate_password_length=1;


修改权限(允许所有用户连接):

update mysql.user sethost='%' where user='root';# 刷新权限
flush privileges;

MySQL 安装完成!

二、安装 Hive

1.解压安装文件
tar-zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module/

# 修改一下文件夹名称cd /opt/module
mv apache-hive-3.1.2-bin/ hive-3.1.2
2.拷贝 MySQL 驱动
cp mysql-connector-java-5.1.37-bin.jar /opt/module/hive-3.1.2/lib/
3.添加环境变量
vi /etc/profile

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

添加完成后使其立即生效:

source /etc/profile
4.解决日志 jar 包冲突

这一步也可以不做,只是后面启动 Hive 时会有一堆警告信息。

mv$HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.bak
5.配置 hive-site.xml 文件
cd$HIVE_HOME/conf

# 创建 hive-site.xml 文件vi hive-site.xml

在文件中添加如下内容(结合自身配置的 MySQL 进行修改):

<?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://master: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>000000</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><!-- Hive 默认在 HDFS 的工作目录 --><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property><!-- 显示表头 --><property><name>hive.cli.print.header</name><value>true</value></property><!-- 显示当前库 --><property><name>hive.cli.print.current.db</name><value>true</value></property><!-- 配置元数据远程连接地址 --><property><name>hive.metastore.uris</name><value>thrift://master:9083</value></property></configuration>
6. 创建元数据库
# 进入 MySQL
mysql -uroot-p000000# 创建元数据库(注意与 hive-site.xml 配置文件中连接的库保持一致)
create database if not exists metastore;# 退出
quit;
7. 初始化与启动
# 初始化 Hive 元数据库$HIVE_HOME/bin/schematool -initSchema-dbType mysql -verbose

8.检测运行是否正常

请先启动 Hadoop 集群。

# 进入 Hive$HIVE_HOME/bin/hive

# 创建任意库,检测是否正常。
create database if not exists test;


可以看到运行正常,这样我们的 Hive 就已经搭建完成啦!

三、扩展——配置 hiveserver2

  1. 在 hive 的配置文件 hive-site.xml 中添加如下两项参数:指定连接地址与端口。
<!-- 配置 hiveserver2 连接 --><property><name>hive.server2.thrift.port</name><value>10000</value></property><property><name>hive.server2.thrift.bind.host</name><value>master</value></property><!-- 设置权限用户 --><property><name>hive.users.in.admin.role</name><value>root</value></property>

注意更换成你自己连接的主机地址。

  1. 在 hadoop 的核心配置文件 core-site.xml 中添加如下两项参数:指定集群可以连接的用户,我这里设置为 root 用户。假如我想指定用户名为 master,则配置项中的 root 必须改为 master,如:hadoop.proxyuser.master.hosts
<!-- 设置集群的连接用户 --><property><name>hadoop.proxyuser.root.hosts</name><value>*</value></property><property><name>hadoop.proxyuser.root.groups</name><value>*</value></property>

添加完成后注意分发该文件到其它机器,然后重启 Hadoop。

Hadoop 重启完成后,启动 hive 元数据服务与 hiveserver2 服务:

nohup hive --service metastore &nohup hive --service hiveserver2 &

进入 Hive,选择需要操作的库,设置权限为 admin

set role admin;

连接测试:

连接你绑定的地址并根据提示输入 Hadoop 核心配置文件中指定的用户与其密码。

beeline

!connect jdbc:hive2://master:10000

根据提示输入账号密码

在这里插入图片描述

如果你在通过 hiveserver2 服务远程插入数据时出现如下错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.StatsTask

解决方法:

在插入的目标库中设置属性

set hive.stats.autogather=false;

,关闭配置自动统计列的统计信息。

使用 hiveserver2 服务时异常停止,JVM 内存溢出:

FAILED: Execution Error, return code -101 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. Java heap space Exception in thread "HiveServer2-Handler-Pool: Thread-652" java.lang.OutOfMemoryError: GC overhead limit exceeded 

解决方法:

修改 Hive 中 conf 目录下的

hive-env.sh

文件,将

export HADOOP_HEAPSIZE=1024 

进行调整,可以修改为

4096

,视情况而定;

在这里插入图片描述
保存退出,重新启动服务就可以啦。

标签: hive hadoop 大数据

本文转载自: https://blog.csdn.net/weixin_46389691/article/details/127507591
版权归原作者 月亮给我抄代码 所有, 如有侵权,请联系我们删除。

“Hive 搭建(将 MySQL 作为元数据库)”的评论:

还没有评论