Hive 安装

安装方法绝大部分参考了“尚硅谷Hive”;

报错的,基本上都在DeepSeek上找到了解决办法。

1 Hadoop 安装

需要先安装Hadoop集群, 参考【Hadoop HA安装_hadoop的ha模式安装代码-CSDN博客


2 Hive 安装

一共有3台机器:zx101,zx102,zx103,hive安装在

【Namenode所在节点(推荐)、资源更多的节点】:前者节省数据在节点之间的传输,后者怕单台机器资源不够,broken。

2.1 下载Hive包

安装包名:apache-hive-4.0.1-bin.tar.gz

阿里云镜像源:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

解释:只需要安装在一台节点上,不用xsync到其他节点。

 

2.2 解压、安装、配置环境变量

# 解压到目标文件夹下
tar -zxvf apache-hive-4.0.1-bin.tar.gz -C /component/

# 修改环境变量(非root用户,命令最前面加'sudo')
cd /etc/profile.d
vim my_env.sh

# 文件末尾新增
#HIVE_HOME
export HIVE_HOME=/component/hive
export PATH=$PATH:$HIVE_HOME/bin

# 使环境变量生效
sudo source /etc/profile

2.3 卸载Derby,安装Mysql作元数据库

安装包名:mysql-5.7.36-1.el6.i686.rpm-bundle.tar

下载地址:mysql-MySQL-5.7安装包下载_开源镜像站-阿里云

安装包名:mysql-connector-java-5.1.49.tar.gz

下载地址:mysql-Connector-J安装包下载_开源镜像站-阿里云

解释:下载的包,解压后把jar包传到Centos即可。

# 没启动过hive,这两行跳过
# 卸载Hive目录下的两个元数据文件
rm -rf derby.log metastore_db
# 删除Hadoop的hdfs上生成的文件夹
hadoop fs -rm -r /user

2.3.1 解压、安装mysql 

cd /component/pakages

mkdir mysql_libs

cd ..

tar -xvf mysql-5.7.36-1.el7.x86_64.rpm-bundle.tar -C mysql_libs/

# 卸载自带的mariadb
sudo rpm -qa | grep mariadb | xargs sudo rpm -e --nodeps

cd mysql_libs

# 顺序执行
sudo rpm -ivh mysql-community-common-5.7.36-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-5.7.36-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-libs-compat-5.7.36-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-client-5.7.36-1.el7.x86_64.rpm
sudo rpm -ivh mysql-community-server-5.7.36-1.el7.x86_64.rpm

# Done

2.3.2 登录并修改mysql的一些配置

# 先启动mysql服务,由于不是root用户,要输入密码,要等小1分钟
service mysqld start 
# 并查看状态
service mysqld status

# 查看mysql的临时密码,注意有没有空格,空格也是密码字符之一哦
sudo cat /var/log/mysqld.log # 找到temporary:+ji>#Kl1../-

su
123456

mysql -uroot -p
password: # 粘贴到这里,然后就进来了


-- 修改临时密码,
alter user 'root'@'localhost' identified by 'ZengXiao@123';
set global validate_password_policy=0; -- 密码规则搞简单点
set global validate_password_length=4;

alter user 'root'@'localhost' identified by '123456';
-- 设置mysql的root用户可以远程登录
use mysql;
select host, user from user;
update user set host = '%' where user = 'root';
flush privileges; -- 刷新生效
exit

2.3.3 配置Hive元数据存储到MySQL

# 在mysql中新增一个schema
> create database metastore;
> quit;

# 把mysql的jdbc驱动复制到Hive/lib文件夹下
cp mysql-connector-java-5.1.49.jar /component/hive/lib/

2.3.4 新增hive-site.xml

vim hive/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://zx101: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>123456</value>
    </property>

    <!-- Hive默认在HDFS的工作目录 -->
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/user/hive/warehouse</value>
    </property>

    <!-- 指定hiveserver2连接的host -->
    <property>
        <name>hive.server2.thrift.bind.host</name>
        <value>zx101</value>
    </property>

    <!-- 指定hiveserver2连接的端口号 -->
    <property>
        <name>hive.server2.thrift.port</name>
        <value>10000</value>
    </property>

    <!-- 指定metastore服务的地址 -->
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://zx101:9083</value>
    </property>

</configuration>

2.3.5 初始化hive的mysql

bin/schematool -dbType mysql -initSchema -verbose

 

2.4 修改hadoop配置,联通hive 

 2.4.1 core-site.xml

    <!--配置所有节点的zengxiao用户都可作为代理用户-->
    <property>
        <name>hadoop.proxyuser.zengxiao.hosts</name>
        <value>*</value>
    </property>

    <!--配置zengxiao用户能够代理的用户组为任意组-->
    <property>
        <name>hadoop.proxyuser.zengxiao.groups</name>
        <value>*</value>
    </property>

    <!--配置zengxiao用户能够代理的用户为任意用户-->
    <property>
        <name>hadoop.proxyuser.zengxiao.users</name>
        <value>*</value>
    </property>

分发

xsync core-site.xml 

2.5 使用Hive

bin/hive --service hiveserver2

bin/beeline -u jdbc:hive2://zx101:10000 -n zengxiao

2.6 配置一键启动Hive

/component/hive/bin/hiveservices.sh

#!/bin/bash

HIVE_LOG_DIR=$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
then
	mkdir -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 &"
    [ -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_stop
    sleep 2
    hive_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

添加执行权限

chmod +x hiveservices.sh

这个名字取得不太好,和同文件夹的其他文件有部分重名,导致tab无法出来 

2.7 windows上远程连接hive

【Dbeaver需要下载驱动,让它自己联网下载即可。】

2.8 遇到的一些问题 

Windows客户端连接虚拟机的MySQL时, host显示192.168.xx.1

# MySQL没有设置该用户的有其他地址的连接权限

-- 1方法 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

-- 2方法 改表
select host, user from mysql.user where user = 'root'; -- 用户自己选
update mysql.user set host = '%' where user = 'root';

-- 刷新权限
FLUSH PRIVILEGES;

 报Public Key Retrieval is not allowed错误

-- 将用户认证方式改为 mysql_native_password
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;Ljava/lang/Object;)V

# 检查 Hive 的 Guava 版本
ls $HIVE_HOME/lib/guava-*.jar

# 检查 Hadoop 的 Guava 版本
ls $HADOOP_HOME/share/hadoop/common/lib/guava-*.jar

# 如果两者版本不同(如 Hive 使用 guava-19.0.jar,Hadoop 使用 guava-27.0-jre.jar),则需统一版本。


# 删除 Hive 中的旧版 Guava
rm $HIVE_HOME/lib/guava-19.0.jar

# 复制 Hadoop 的 Guava 到 Hive(推荐)
cp $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar $HIVE_HOME/lib/

# 重试即可
schematool -dbType mysql -initSchema -verbose

### Hive 安装教程概述 Hive 是一种建立在 Hadoop 上的数据仓库工具,支持结构化数据的查询和分析。以下是基于多种资料整理而成的一份完整的 Hive 安装指南。 --- #### 1. 准备工作 在安装 Hive 之前,需要完成以下准备工作: - **Java 环境配置** Hive 需要 Java 环境的支持。可以通过以下命令安装 JDK 并设置环境变量[^2]: ```bash mkdir -p /opt/module tar -zxvf /tmp/jdk-8u391-linux-x64.tar.gz -C /opt/module/ echo "export JAVA_HOME=/opt/module/jdk1.8.0_391" >> /etc/profile echo 'export PATH=$PATH:$JAVA_HOME/bin' >> /etc/profile source /etc/profile ``` - **Hadoop 环境准备** Hive 查询依赖于 Hadoop 提供的分布式计算能力。因此,在安装 Hive 前需先部署好 Hadoop 集群或单机版环境[^3]。 - **MySQL 数据库配置(可选)** 如果希望将 Hive 的元数据存储到 MySQL 中,则需要提前安装并初始化 MySQL 数据库[^4]。可以参考以下命令进行最小化安装: ```bash sudo apt-get update sudo apt-get install mysql-server service mysql start ``` --- #### 2. Hive 下载与解压 下载最新版本的 Hive 并将其解压至目标目录。例如,对于 Hive 3.1.3 版本,操作如下[^4]: ```bash cd /usr/local sudo wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz sudo tar -zxvf apache-hive-3.1.3-bin.tar.gz sudo mv apache-hive-3.1.3-bin hive ``` --- #### 3. 环境变量配置 为了方便调用 Hive 工具,建议修改系统的环境变量文件 `~/.bashrc` 或 `/etc/profile`,添加以下内容: ```bash export HIVE_HOME=/usr/local/hive export PATH=$PATH:$HIVE_HOME/bin source ~/.bashrc ``` --- #### 4. 配置 Hive 参数 进入 Hive 的配置目录 (`$HIVE_HOME/conf`),并将默认模板文件复制为实际使用的配置文件[^5]: ```bash cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml ``` 随后,编辑 `hive-site.xml` 文件以指定必要的参数。例如,定义本地临时目录的位置: ```xml <property> <name>hive.exec.local.scratchdir</name> <value>/path/to/hive/local/scratchdir</value> <description>Local scratch space for Hive jobs</description> </property> ``` 如果使用 MySQL 存储元数据,还需额外配置 JDBC 连接信息。具体示例如下: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true&useSSL=false</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> ``` --- #### 5. 启动 Hive 和验证 完成以上步骤后,即可启动 Hive 并验证其功能。首先确保 Hadoop 集群已正常运行[^3]: ```bash cd /usr/local/hadoop ./sbin/start-dfs.sh ``` 接着尝试启动 Hive CLI 或 Beeline 接口: ```bash cd /usr/local/hive ./bin/hive ``` 或者通过 Beeline 方式连接: ```bash ./bin/beeline -u jdbc:hive2://localhost:10000 ``` --- #### 6. 常见问题排查 在安装过程中可能会遇到一些常见的错误提示。例如,JDBC 驱动缺失时需要手动下载对应的驱动包,并放置到 `$HIVE_HOME/lib` 目录下。 --- ### 结论 按照上述流程,能够顺利完成 Hive安装与基本配置过程。需要注意的是,生产环境中通常还需要进一步优化性能参数以及增强安全性措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值