• Hive集群部署实验


    一、实验介绍

    1.1 实验内容

    在Hadoop集群上部署Hive数据仓库,使用MySQL作为元数据存储。
    在Hive集群平台创建测试表,验证HiveQL在Hadoop Mapreduce中的执行情况。

    1.2 实验知识点

    Hive集群工作原理
    Hive客户端访问方式
    Hive与MySQL的关系

    1.3 实验环境

    Hive2.3.9
    VMware Workstation 16 Pro for Windows
    虚拟机镜像

    1.4 实验资源

    资源名称存储目录
    Hive安装包/opt/software/package
    在这里插入图片描述

    1.5 实验步骤清单

    hive部署(安装hive、创建元数据库、修改配置文件、创建测试目录、初始化hive)
    hive测试(启动hibe、创建测试数据库并验证、使用beeline连接hive)

    二、实训架构

    序号 IP地址 机器名 类型 核数/内存 目录

    序号IP地址机器名类型
    1172.25.10.140masterNN/DN/Hive
    2172.25.10.141slave1DN/NM
    3172.25.10.142slave2DN/NM
    4172.25.10.143slave3DN/NM

    三、实验环境准备

    本次实验需要提前准备好相关服务,需要Hadoop集群、HDFS文件系统、Zookeeper集群控制软件、MySQL数据库的支持。本次实验采用hive-2.3.9版本。
    启动虚拟机master、slave1和slave2,slave3输入用户名root密码root登录系统。

    四、实验步骤

    4.1 Hive部署

    4.1.1 安装Hive

    1、解压和重命名Hive
    tar zxvf /opt/software/package/apache-hive-2.3.9-bin.tar.gz -C /usr/local/
    mv /usr/local/apache-hive-2.3.9-bin/ /usr/local/hive

    2、检查环境变量
    vim /etc/profile

    export HIVE_HOME=/usr/local/hive
    export PATH=${HIVE_HOME}/bin:${PATH}
    
    • 1
    • 2

    在这里插入图片描述

    mysql -uroot -p
    #创建数据库
    create database metastore;
    #关闭只读
    set global read_only=0;
    #设置密码安全策略
    set global validate_password_policy=0;
    #设置密码长度
    set global validate_password_length=4;
    #更改密码
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';
    #数据库授权
    grant all on metastore.* to hive@'%' identified by 'hive';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root';

    #刷新权限
    flush privileges;
    #退出mysql
    exit
    在这里插入图片描述

    #上传mysql-connector到Hive库目录
    cp /opt/software/package/mysql-connector-java-5.1.46-bin.jar /usr/local/hive/lib/

    4.1.3 修改hive配置文件

    #复制hive-env.sh
    cp /usr/local/hive/conf/hive-env.sh.template /usr/local/hive/conf/hive-env.sh
    #修改hive-env.sh文件,参考如下内容:
    vim /usr/local/hive/conf/hive-env.sh

    export JAVA_HOME=//usr/local/jdk/jre
    export HADOOP_HOME=/usr/local/hadoop
    export HIVE_HOME=/usr/local/hive
    export HIVE_CONF_DIR=/usr/local/hive/conf
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    #复制hive-site.xml
    cp /usr/local/hive/conf/hive-default.xml.template /usr/local/hive/conf/hive-site.xml

    #修改hive-site.xml
    替换所有 s y s t e m : j a v a . i o . t m p d i r 为 / u s r / l o c a l / h i v e / t m p 替 换 所 有 {system:java.io.tmpdir} 为/usr/local/hive/tmp 替换所有 system:java.io.tmpdir/usr/local/hive/tmp{system:user.name} 为 root
    vim /usr/local/hive/conf/hive-site.xml

    替换所有${system:java.io.tmpdir} 为/usr/local/hive/tmp
    :1,$s#${system:java.io.tmpdir}#/usr/local/hive/tmp#g
    #替换当前行的${system:user.name}为root
    :s/${system:user.name}/root/g 
    #替换所有${system:user.name} 为 root 
    :1,$s/${system:user.name}/root/g
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意:逐个替换以下参数内容,其他参数保留原始配置即可。完整配置内容参见“六、参考文档”。

    
        hive.exec.scratchdir
        /user/hive/tmp
    
    
        hive.metastore.warehouse.dir
        /user/hive/warehouse
    
    
        hive.querylog.location
        /user/hive/log
    
    
        javax.jdo.option.ConnectionURL
    jdbc:mysql://master:3306/metastore?createDatabaseIfNotExist=true&characterEncoding=UTF-8&useSSL=false
      
      
        javax.jdo.option.ConnectionDriverName
        com.mysql.jdbc.Driver
      
      
        javax.jdo.option.ConnectionUserName
        root
      
      
        javax.jdo.option.ConnectionPassword
        root
      
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    #创建/usr/local/hive/tmp目录
    mkdir /usr/local/hive/tmp
    chmod -R 777 /usr/local/hive/tmp

    #复制log配置文件
    cp /usr/local/hive/conf/hive-log4j2.properties.template /usr/local/hive/conf/hive-log4j2.properties
    cp /usr/local/hive/conf/hive-exec-log4j2.properties.template /usr/local/hive/conf/hive-exec-log4j2.properties
    在这里插入图片描述

    4.1.4 创建Hadoop测试目录

    #启动hadoop
    start-all.sh

    #在hdfs中创建以下目录并授权,用于存储文件
    hdfs dfs -mkdir -p /user/hive/warehouse
    hdfs dfs -mkdir -p /user/hive/tmp
    hdfs dfs -mkdir -p /user/hive/log
    ````hdfs dfs -chmod -R 777 /user/hive/warehouse hdfs dfs -chmod -R 777 /user/hive/tmp hdfs dfs -chmod -R 777 /user/hive/log```

    在这里插入图片描述

    #查看目录
    hdfs dfs -ls /user/hive/
    在这里插入图片描述

    4.1.5 初始化hive元数据库

    schematool -dbType mysql -initSchema root root

    在这里插入图片描述

    4.2 Hive测试

    4.2.1 启动Hive

    启动mysql
    systemctl start mysqld.service
    hive
    在这里插入图片描述

    4.2.2 创建测试数据库并验证

    #创建数据库
    create database testdb;
    在这里插入图片描述
    #查看数据库
    show databases;
    在这里插入图片描述

    #使用数据库
    use testdb;

    exit;

    五、实验总结

    本次实验中,Hive采用MySQL数据库保存Hive的元数据,而不是采用Hive自带的derby来存储元数据。
    Hive常用的HiveQL操作命令主要包括:数据定义、数据操作。
    Hive实现最大的优势是,对于非程序员,不用学习编写Java MapReduce代码,也可以完成MapReduce任务。

  • 相关阅读:
    RPA-1、开启之旅
    Spring Boot:自定义注解--annotation
    2024年申报国自然项目基金撰写及技巧
    GCSE和ALevel怎样才算通过呢?
    nodejs 操作rabbitMQ rascal库(针对amqplib的封装)
    MySQL | 事务隔离级别详解和实现原理
    CXL崛起:2024启航,2025年开启新时代
    深度学习基础知识 Batch Normalization的用法解析
    操作系统备考学习 day8 (2.4.1 ~ 2.4.4)
    vcruntime140.dll缺失如何修复,vcruntime140.dll重新安装方法分享
  • 原文地址:https://blog.csdn.net/qq_49096000/article/details/127907972