大数据-搭建 Hive 环境

72 阅读2分钟

我正在参加「掘金·启航计划」

介绍一下:

本文主要内容是,在 centos 系统上,安装 Hive 数据仓库和 Hive Sql 的基本操作,以动手实践为主要内容。

安装 Hive

  1. 进入 install_pack 目录

    cd /usr/local/install_pack/
    
  2. 执行以下命令,下载 hive 安装包。

    wget --no-check-certificate https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    
  3. 解压Hive文件

    tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/software
    
  4. 进入 software 目录查看解压好的文件

    cd /usr/local/software
    ls -lrt
    
  5. 修改目录名称

    mv apache-hive-3.1.3-bin/ hive
    
  6. 配置环境变量

    echo 'export HIVE_HOME=/usr/local/software/hive' >> /etc/profile
    echo 'export PATH=$PATH:$HIVE_HOME/bin' >> /etc/profile
    source /etc/profile
    
  7. 设置 hive 配置文件 (hive-env.sh),并在文件末尾添加上 HADOOP 的安装路径

    cd /usr/local/software/hive/conf
    cp hive-env.sh.template hive-env.sh
    echo 'HADOOP_HOME=/usr/local/software/hadoop' >> /usr/local/software/hive/conf/hive-env.sh
    
  8. 创建 HDFS 存储 Hive 元数据的文件目录,并赋予权限

    start-all.sh
    hadoop fs -mkdir /tmp
    hadoop fs -mkdir -p /usr/hive/warehouse
    hadoop fs -chmod g+w /tmp
    hadoop fs -chmod g+w /usr/hive/warehouse
    
  9. 替换冲突的包

    cd /usr/local/software/hive/lib
    mv guava-19.0.jar guava-19.0.jar.bak
    cp /usr/local/software/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/software/hive/lib/
    
  10. 进入Hive执行界面(会报错)

    cd /usr/local/software/hive/
    hive
    

解决报错

  1. 报错信息1

    hive> show tables;
    FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
    

    此处出现原数据错误的原因是:hive 自带的内存数据库 derby,应该先初始化。(启 动 hive 的 derby 时自动生成 metastore_db 目录,这里需要将 metastore_db 目录删除,然后 再初始化) 退出 hive

    quit;
    

    解决办法

    a. 删除数据库目录

    rm -rf metastore_db/
    

    b. 初始化 derby 数据库

    schematool -initSchema -dbType derby
    

    c. 再次测试是否可以成功查询表

    hive
    show tables;
    

    d. 结果

    hive> show tables;
    OK
    Time taken: 0.785 seconds
    

    e. 退出

    quit;
    
  2. 报错信息2

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

    解决办法

    rm guava-19.0.jar
    
  3. 报错信息3

    SLF4J: Class path contains multiple SLF4J bindings.
    SLF4J: Found binding in [jar:file:/usr/local/software/hive-3.1.2/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    SLF4J: Found binding in [jar:file:/usr/local/software/hadoop-3.2.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
    

    解决办法

    cd /usr/local/software/hive-3.1.2/lib
    rm log4j-slf4j-impl-2.10.0.jar
    

Hive 基本操作

  1. 进入到 hive 安装包目录,对数据表进行操作

    cd /usr/local/software/hive/
    hive
    
  2. 创建外部表,字段分隔符为逗号

    create external table movies(rank int,title string, score int ,desc string , link string) row format delimited fields terminated by ',';
    
  3. 加载本地数据

    load data local inpath '/home/data/db_movie.csv' into table movies;
    
  4. 查询数据

    select * from movies;
    

    以上只是一个简单实例,具体根据需求创建表,和导入指定数据。

Linux 命令

  1. wget 使用wget从网上下载软件、音乐、视频

    wget --no-check-certificate -O hive.tar.gz https://mirrors.bfsu.edu.cn/apache/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
    
    • --no-check-certificate 忽略证书的检查

    • -O 下载文件并以指定的文件名保存文件

  2. tar 命令相关参数

    tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /usr/local/software
    
    • -z | 代表gzip,使用gzip工具进行压缩或解压

    • -x | 代表extract,解压文件(压缩文件是-c)

    • -v | 代表verbose,显示解压过程(文件列表)

    • -f | 代表file,指定要解压的文件名(or 要压缩成的文件名)