美文网首页
Hive从入门到精通(一) - 简介和安装

Hive从入门到精通(一) - 简介和安装

作者: ElliotG | 来源:发表于2020-05-29 17:04 被阅读0次

    0. 背景

    Apache Hive是基于Hadoop构建的一套数据仓库分析系统(数仓)。
    它是一个数据仓库工具,用来进行数据ETL(提取、转化、加载)

    Hive提供了丰富的SQL查询方式来分析存储在Hadoop分布式文件系统中的数据。
    它具备如下一些主要功能:

    • 可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能

    • 可以将SQL语句转换为MapReduce任务运行,通过自己的SQL查询分析需要的内容,这套SQL简称Hive SQL(HQL),使不熟悉mapreduce的用户可以很方便地利用SQL语言查询,汇总和分析数据。

    • mapreduce开发人员可以把自己写的mapper和reducer作为插件来支持hive做更复杂的数据分析

    注意: 由于Hive是构建在Hadoop基础上的,因此,必须先安装Hadoop,再安装对应版本的Hive。
    (3.x的Hive对应3.x.y版本的Hadoop;2.x的Hive对应2.x.ya版本的Hadoop)

     

    1. 为什么要使用Hive

    有人说既然Hive是提供SQL查询的,而且又是底层基于MapReduce的。
    为什么那么麻烦呢?关系型不就好了嘛!

    其实还是在于一个数据量的问题。
    在传统的RDBMS里,不管是Oracle, Sql Server, Mysql等,如果单表的数据达到千万条时,不管你采用何种优化,都会变得比原来要慢很多,而且性能很难再有所提升。

    Hadoop可以存储PB级别的数据,处理数据的过程使用MapReduce模型,存储和计算能力均可平滑扩展。


    附录(数据单位):
    1Byte = 8 Bit
    1 KB = 1,024 Bytes 
    1 MB = 1,024 KB = 1,048,576 Bytes 
    1 GB = 1,024 MB = 1,048,576 KB = 1,073,741,824 Bytes
    1 TB = 1,024 GB = 1,048,576 MB = 1,073,741,824 KB = 1,099,511,627,776 Bytes
    1 PB = 1,024 TB = 1,048,576 GB =1,125,899,906,842,624 Bytes


    1 EB = 1,024 PB = 1,048,576 TB = 1,152,921,504,606,846,976 Bytes
    1 ZB = 1,024 EB = 1,180,591,620,717,411,303,424 Bytes
    1 YB = 1,024 ZB = 1,208,925,819,614,629,174,706,176 Bytes


    但是MapReduce有个最大的缺点就是,数据的处理用户都要面对Java代码。
    这样不是很方便。Facebook开发了Hive,后来贡献给了Apache。
    Hive旨在让用户以SQL的方式来操作HDFS,但是其底层还是基于MapReduce的。
    Hive就像Hadoop和用户之前的中间件。

     

    2. Hive的安装

    • 官网下载最新的Hive 3.x解压到某个目录

    • 配置环境变量

    # hive
    export HIVE_HOME=/Users/kg/soft/hive-3.1.2
    export PATH=$PATH:$HIVE_HOME/bin
    
    • 查看版本号
      hive --version

    • 修改hive-site.xml
      进入到hive的conf目录进行配置
      发现没有hive-site.xml,那么只需要通过cp hive-default.xml.template hive-site.xml复制一个即可
      编辑hive-site.xml

    原始文件内容如下:


    image.png

    在property上添加内容如下:


    image.png

    代码如下:

    <property>
      <name>javax.jdo.option.ConnectionUserName</name>
      <value>root</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionPassword</name>
      <value>your password</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionURL</name>mysql
      <value>jdbc:mysql://localhost:3306/hive?vertifyServerCertificate=false&amp;useSSL=false</value>
    </property>
    <property>
      <name>javax.jdo.option.ConnectionDriverName</name>
      <value>com.mysql.jdbc.Driver</value>
    </property>
    <property>
      <name>hive.metastore.schema.verification</name>
      <value>false</value>
    </property>
    

    并将以下内容删除:


    image.png image.png
    • 将mysql-connector-java_xxx.jar拷贝到hive/lib目录下面

    • 由于hive要依赖于mysql,所以要把mysql服务启动

     

    3. 验证安装(建库和表)

    使用mysql -u root -pyour password命令进入到mysql中

    在mysql shell中输入:
    create database hive;
    创建hive数据库


    image.png

    此时hive数据库是空的
    然后在终端执行: schematool -dbType mysql -initSchema,如下图所示:


    image.png

    此时在mysql数据库中再次执行show tables;即可显示hive初始化信息,如下图所示:


    image.png

    在hive安装目录中创建一个tmp目录
    记录目录为:/hive安装目录/tmp,并修改hive-site.xml文件,将${system:java.io.tmpdir} 全部替换成/hive安装目录/tmp,将{system:user.name} 替换成{user.name}
    然后再次执行hive进入到hive shell

    命令行通过hadoop fs -lsr /查看hdfs情况


    image.png

    然后在hive shell界面新建一个数据库
    create database hive_1;
    再次查看hdfs目录情况就会发现多了一个hive_1.db的文件

    在mysql中查看
    select *
    from DBS;


    image.png

    新建一张表
    use hive_1;
    create table hive_01(id int, name string);

    select *
    from TBLS;


    image.png

    访问http://localhost:50070,查看HDFS数据

    image.png

    相关文章

      网友评论

          本文标题:Hive从入门到精通(一) - 简介和安装

          本文链接:https://www.haomeiwen.com/subject/cpkfzhtx.html