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

Hive 搭建

*
一、安装 MySQL

+
* 1.卸载当前系统自带的 MySQL
* 2.获取 MySQL 下载源
* 3.安装 MySQL 源
* 4.检查 MySQL 源是否安装成功
* 5.安装 MySQL
* 6.启动 MySQL 服务
* 7.进入 MySQL 设置权限
二、安装 Hive

+
* 1.解压安装文件
* 2.拷贝 MySQL 驱动
* 3.添加环境变量
* 4.解决日志 jar 包冲突
* 5.配置 hive-site.xml 文件
* 6. 创建元数据库
* 7. 初始化与启动
* 8.检测运行是否正常
三、扩展

+ 配置 hiveserver2
+ 字符集乱码解决

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

本文中使用的 Hadoop 版本为 hadoop-3.1.3、Hive 版本为 hive-3.1.2、MySQL 版本为 MySQL 5.7

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

一、安装 MySQL

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

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

Hive 搭建(将 MySQL 作为元数据库)
2.获取 MySQL 下载源
curl -O https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm

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

如果出现错误: 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

Hive 搭建(将 MySQL 作为元数据库)
4.检查 MySQL 源是否安装成功
yum repolist enabled | grep "mysql.*-community.*"

Hive 搭建(将 MySQL 作为元数据库)
5.安装 MySQL
yum install mysql-community-server

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

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

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

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

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

Hive 搭建(将 MySQL 作为元数据库)
7.进入 MySQL 设置权限

cat /var/log/mysqld.log | grep password

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

mysql -uroot -p

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

set password = password("新密码");

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

Your password does not satisfy the current policy requirements.

修改其安全等级即可:


set global validate_password_policy=0;
set global validate_password_length=1;

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

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

update mysql.user set host='%' 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

export HIVE_HOME=/opt/module/hive-3.1.2
export PATH=$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

vi hive-site.xml

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


<configuration>

    <property>
        <name>javax.jdo.option.ConnectionURLname>
        <value>jdbc:mysql://master:3306/metastore?useSSL=false&useUnicode=true&characterEncoding=UTF-8&allowPublicKeyRetrieval=truevalue>
    property>

    <property>
        <name>javax.jdo.option.ConnectionDriverNamename>
        <value>com.mysql.jdbc.Drivervalue>
    property>

    <property>
        <name>javax.jdo.option.ConnectionUserNamename>
        <value>rootvalue>
    property>

    <property>
        <name>javax.jdo.option.ConnectionPasswordname>
        <value>000000value>
    property>

    <property>
        <name>hive.metastore.schema.verificationname>
        <value>falsevalue>
    property>

    <property>
        <name>hive.metastore.event.db.notification.api.authname>
        <value>falsevalue>
    property>

    <property>
        <name>hive.metastore.warehouse.dirname>
        <value>/user/hive/warehousevalue>
    property>

    <property>
        <name>hive.cli.print.headername>
        <value>truevalue>
    property>

    <property>
        <name>hive.cli.print.current.dbname>
        <value>truevalue>
    property>

    <property>
        <name>hive.metastore.urisname>
        <value>thrift://master:9083value>
    property>

configuration>
6. 创建元数据库

mysql -uroot -p000000

create database if not exists metastore;

quit;
7. 初始化与启动

$HIVE_HOME/bin/schematool -initSchema -dbType mysql -verbose

Hive 搭建(将 MySQL 作为元数据库)
8.检测运行是否正常

请先启动 Hadoop 集群。


$HIVE_HOME/bin/hive

create database if not exists test;

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

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

三、扩展

配置 hiveserver2

  1. 在 hive 的配置文件 hive-site.xml 中添加如下两项参数:
    指定连接地址与端口。

        <property>
             <name>hive.server2.thrift.portname>
             <value>10000value>
        property>

        <property>
            <name>hive.server2.thrift.bind.hostname>
            <value>mastervalue>
        property>

        <property>
                <name>hive.users.in.admin.rolename>
                <value>rootvalue>
        property>

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

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

    <property>
        <name>hadoop.proxyuser.root.hostsname>
        <value>*value>
    property>

    <property>
        <name>hadoop.proxyuser.root.groupsname>
        <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

根据提示输入账号密码(默认都为空,直接按回车跳过即可)

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

连接时出现错误: User: xxx is not allowed to impersonate anonymous (state=08S01,code=0),显示该用户不被允许连接,这是因为在 Hadoop 的核心配置文件 core-site.xml 中没有指定该用户(上方有添加用户模板)或者指定后 Hadoop 集群没有重启,导致配置没有生效。

如果你在通过 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 搭建(将 MySQL 作为元数据库)
保存退出,重新启动服务就可以啦。

字符集乱码解决

可以看我写的这篇文章:Hive 表注释乱码解决

Original: https://blog.csdn.net/weixin_46389691/article/details/127507591
Author: 月亮给我抄代码
Title: Hive 搭建(将 MySQL 作为元数据库)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/817498/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球