当前位置 博文首页 > 后端码匠:数据仓库组件:Hive环境搭建和基础用法

    后端码匠:数据仓库组件:Hive环境搭建和基础用法

    作者:[db:作者] 时间:2021-07-16 09:43

    简介

    Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,是一个可以对Hadoop中的大规模存储的数据进行查询和分析存储的组件,Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行,使用成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

    一、Hive基础简介

    1、基础描述

    Hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,是一个可以对Hadoop中的大规模存储的数据进行查询和分析存储的组件,Hive数据仓库工具能将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,能将SQL语句转变成MapReduce任务来执行,使用成本低,可以通过类似SQL语句实现快速MapReduce统计,使MapReduce变得更加简单,而不必开发专门的MapReduce应用程序。hive十分适合对数据仓库进行统计分析。

    2、组成与架构

    在这里插入图片描述

    用户接口:ClientCLI、JDBC访问Hive、WEBUI浏览器访问Hive。

    元数据:Hive将元数据存储在数据库中,如mysql、derby。Hive中的元数据包括表的名字,表的列和分区以及属性,表的属性(是否为外部表等),表的数据所在目录等。

    驱动器:基于解释器、编辑器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

    执行器引擎:ExecutionEngine把逻辑执行计划转换成可以运行的物理计划。

    Hadoop底层:基于HDFS进行存储,使用MapReduce进行计算,基于Yarn的调度机制。

    Hive收到给客户端发送的交互请求,接收到操作指令(SQL),并将指令翻译成MapReduce,提交到Hadoop中执行,最后将执行结果输出到客户端。

    二、Hive环境安装

    准备安装包

    hive-3.1.2,依赖Hadoop集群环境,位置放在 hadoop102 服务上。

    解压重命名

    tar -zxvf apache-hive-hive-3.1.2-bin.tar.gz
    mv apache-hive-hive-3.1.2-bin/  hive-3.1.2
    

    修改配置文件

    创建配置文件

    [codingce@linuxmxz conf]$ pwd
    /opt/module/hive-3.1.2/conf
    [codingce@linuxmxz conf]$ mv hive-env.sh.template hive-env.sh
    

    添加内容

    [codingce@linuxmxz conf]$ vim hive-env.sh
    export HADOOP_HOM=/opt/module/hadoop-3.1.1
    export HIVE_CONF_DIR=/opt/module/hive-3.1.2/conf
    

    [codingce@linuxmxz conf]$ vim /etc/profile.d/my_env.sh

    # JAVA_HOME
    export JAVA_HOME=/opt/module/jdk1.8.0_221
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    
    
    
    #HADOOP_HOME
    export HADOOP_HOME=/opt/module/hadoop-3.1.1
    export PATH=$PATH:$HADOOP_HOME/bin
    export PATH=$PATH:$HADOOP_HOME/sbin
    
    
    #ZOOKEEPER_HOME
    export ZOOKEEPER_HOME=/opt/module/zookeeper-3.5.6
    export PATH=.:$HADOOP_HOME/bin:$ZOOKEEPER_HOME/bin:$JAVA_HOME/bin:$PATH
    
    
    # HBASE_HOME
    export HBASE_HOME=/opt/module/hbase-2.2.7
    export PATH=$HBASE_HOME/bin:$PATH
    
    
    # HIVE_HOME
    export HIVE_HOME=/opt/module/hive-3.1.2
    export PATH=$PATH:$HIVE_HOME/bin
    

    配置内容一个是Hadoop路径,和hive配置文件路径。

    创建hive-site.xml

    [codingce@linuxmxz conf]$ vim hive-site.xml 
    
    
    
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>hive.metastore.warehouse.dir</name>
            <value>/usr/local/hadoop/hive/warehouse</value>
            <description>location of default database for the warehouse</description>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://localhost:3306/metastore</value>
            <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionDriverName</name>
            <value>com.mysql.cj.jdbc.Driver</value>
            <description>Driver class name for a JDBC metastore</description>
        </property>
        <property>
           <name>javax.jdo.option.ConnectionPassword </name>
           <value>1234567</value>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>root</value>
            <description>Username to use against metastore database</description>
         </property>
    </configuration>
    

    lib文件夹导入mysql jar 包

    Hadoop配置

    首先启动hdfs和yarn;然后在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改赋予权限。

    hadoop fs -mkdir /tmp
    hadoop fs -mkdir -p /user/hive/warehouse
    hadoop fs -chmod g+w /tmp
    hadoop fs -chmod g+w /user/hive/warehouse
    

    启动Hive

    hive
    

    基础操作

    查看数据库

    hive> show databases ;
    

    选择数据库

    hive> use default;
    

    查看数据表

    hive> show tables;
    

    创建数据库使用

    hive> create database mytestdb;
    hive> show databases ;
    default
    mytestdb
    hive> use mytestdb;
    

    创建表

    create table hv_user (id int, name string, age int);
    

    查看表结构

    hive> desc hv_user;
    id                      int                                         
    name                    string                                      
    age                     int 
    

    添加表数据

    insert into hv_user values (1, "test-user", 23);
    

    查询表数据

    hive> select * from hv_user ;
    

    注意:这里通过对查询日志的观察,明显看出Hive执行的流程。

    删除表

    hive> drop table hv_user ;
    

    退出Hive

    hive> quit;
    

    查看Hadoop目录

    # hadoop fs -ls /user/hive/warehouse       
    /user/hive/warehouse/mytestdb.db
    

    通过Hive创建的数据库和数据存储在HDFS上。

    cs
    下一篇:没有了