Hadoop3.x ——Hive安装部署

注意事项

  • Hive是一款基于Hadoop的数据仓库软件,不管使用何种方式配置Hive Metastore,必须先保证服务器的基础环境正常,Hadoop集群健康可用

      1. 服务器基础环境
      • 集群时间同步、防火墙关闭、主机Host映射、免密登录、JDK安装
      1. Hadoop集群健康可用
      • 启动Hive之前必须先启动Hadoop集群
      • 特别要注意,需等待HDFS安全模式关闭之后再启动运行Hive
      • Hive不是分布式安装运行的软件,其分布式的特性主要借由Hadoop完成。包括分布式存储、分布式计算
  • metastore 服务配置模式

    • 本次配置的是远程模式
      请添加图片描述
      请添加图片描述

Hadoop 和 Hive 整合

  • 因为Hive需要把数据存储在HDFS上,并且通过MapReduce作为执行引擎处理数据

  • 因此需要在Hadoop中添加相关配置属性,以满足Hive在Hadoop上运行

  • 修改Hadoop中core-site.xml,并且Hadoop集群同步配置文件重启生效

<!-- 整合hive 用户代理设置 -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

搭建Hive

1. 安装MySQL

注意MySQL只需要在一台机器安装并且需要授权远程访问

我选择把MySQL安装在node1

  • 卸载Centos7自带的mariadb

    [root@node1 ~]# rpm -qa|grep mariadb
    mariadb-libs-5.5.64-1.el7.x86_64
    You have new mail in /var/spool/mail/root
    [root@node1 ~]# rpm -e --nodeps mariadb-libs-5.5.64-1.el7.x86_64
    [root@node1 ~]# rpm -qa|grep mariadb
    
    • rpm -qa | grep xxx

      | 是管道技术,删选的意思 ; grep 查找——一种文本搜索工具

      解读: 在-qa返回的信息中对xxx进行查找,并返回为最终结果

    • rpm -e --nodeps <rpm packagename>

      不检查依赖而强制删除

  • 安装MySQL

    [root@node1 ~]# mkdir /export/software/mysql
    
    # 上传mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar 到上述文件夹下  解压
    [root@node1 ~]# cd /export/software/mysql
    [root@node1 mysql]# ls
    mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
    [root@node1 mysql]# tar -xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
    
    [root@node1 mysql]# yum -y install libaio
    [root@node1 mysql]# rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm mysql-community-libs-5.7.29-1.el7.x86_64.rpm mysql-community-client-5.7.29-1.el7.x86_64.rpm mysql-community-server-5.7.29-1.el7.x86_64.rpm
    
  • MySQL 初始化设置

    #初始化
    [root@node1 mysql]# mysqld --initialize
    
    #更改所属组
    [root@node1 mysql]# chown mysql:mysql /var/lib/mysql -R
    
    #启动mysql
    [root@node1 mysql]# systemctl start mysqld.service
    
    #查看生成的临时root密码
    [root@node1 mysql]# cat  /var/log/mysqld.log
    # 找到类似如下信息,这里 >kl-lOa!i6FB 就是生成的临时root密码
    [Note] A temporary password is generated for root@localhost: >kl-lOa!i6FB
    

    chown mysql:mysql /var/lib/mysql -R

    递归地将/var/lib/mysql以及其子目

### 问题分析 Hive 报错 `FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient` 表明 Hive 在尝试连接到其元存储(Metastore)时失败。此问题通常由以下几个原因引起: 1. **元存储配置不正确**:Hive 默认使用嵌入式 Derby 数据库作为元存储,但在多用户环境中需要切换到 MySQL 或其他外部数据库[^1]。 2. **权限不足**:如果 Hive 使用的是 MySQL 作为元存储,则可能是因为 MySQL 用户权限设置不当导致无法访问数据库[^5]。 3. **依赖类缺失或版本冲突**:某些必要的 JAR 文件未加载或存在版本兼容性问题[^4]。 --- ### 解决方案 #### 方法一:初始化并验证 MySQL 元存储 当使用 MySQL 作为 Hive 的元存储时,需确保已正确完成以下操作: 1. 安装 MySQL 并创建用于 Hive 存储元数据的数据库和用户账户。 ```sql CREATE DATABASE metastore; GRANT ALL PRIVILEGES ON metastore.* TO &#39;hive_user&#39;@&#39;%&#39; IDENTIFIED BY &#39;password&#39;; FLUSH PRIVILEGES; ``` 2. 修改 Hive 配置文件 `hive-site.xml`,指定 MySQL 连接参数: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost/metastore?createDatabaseIfNotExist=true</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>hive_user</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> ``` 3. 初始化 Metastore 数据库表结构: ```bash schematool -dbType mysql -initSchema ``` 上述步骤完成后重新启动 Hive CLI 或 Beeline 工具测试连接情况[^3]。 #### 方法二:启用本地模式运行 对于小型作业或者调试环境,可以临时通过设置属性让 Hive 切换至本地执行模式来规避分布式环境下可能出现的问题: ```sql SET hive.exec.mode.local.auto=true; ``` 注意该方法仅适用于简单查询场景,在生产环境中应优先排查根本原因而非长期依赖此项调整。 #### 方法三:检查日志与依赖项 - 查看完整的异常堆栈信息定位具体错误位置; - 确认 HadoopHive 版本匹配无误,并且所有必需组件均已部署到位; - 如果怀疑是第三方插件引起的干扰则考虑隔离测试环境排除影响因素。 --- ### 总结说明 以上三种途径分别针对不同层面提供了修复建议——从基础架构搭建指导到高级特性调优均有涉及。实际应用过程中可根据具体情况灵活选用最合适的策略加以应对。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值