• Hadoop入门第五篇:Hive简介以及部署


    标签(空格分隔): Hadoop Hive hwi


    1.Hive简介

      之前我一直在Maxcompute上进行大数据开发,所以对数仓这块还算比较了解,在接受Hive的时候基本上没什么大的障碍。所以,有需求用到hive的同学,应该对数据仓库相关概念以及数仓设计模型有了大致的了解了。简单来说,Hive是一个基于Hadoop文件系统智商的数据仓库架构(数据存储还是HDFS),它为数仓的管理提供了:ETL工具,数据存储管理以及大型数据集的查询和分析功能。
      此外,Hive还提供了HiveQL,类似SQL的语法,这块因为跟MaxCompute提供的SQL语法比较接近,我也就不具体讲了,它原理其实还是通过MapReduce去执行任务,后面我们部署hive,并跑sql的时候会看到mr的相关日志就明白了。


    2.Hive的数据存储

      Hive是建立在HDFS基础之上的,Hive本身并没有专门的数据存储格式,也不能为数据建立索引,因为用户可以非常自由的组织Hive中的表,只要告诉文件位置,列分隔符和行分隔符就行了。因此,我们在数仓设计以及提供data mart的时候,可以给不同的角色/部门提供不同的表名,但其实数据只需要一份(建表必须声明是外部表)。

    2.1Hive的四类数据模型

    • 表这个概念与我们接触到数据库的表类似,只不过hive表中都对应了一个存储目录,比如video_play 对应的是/user/hive/warehouse/video_play,大家可以在50070对应的页面上查看hdfs文件目录。
    • Hive中的每个分区都对应数据库中相应分区列的一个索引,但是它的分区方式与索引不一样,Hive的一个分区对应表下的一个目录。比如我们实际中都会收集每天的日志,以每天甚至小时作为分区,那么day='20170818' hour='00'对应的就是/user/hive/warehouse/video_play/day=20170818/hour=00
    • Bucket(桶)对指定列进行Hash计算,会根据哈希值切分数据,使每个桶对应一个文件。比如对视频id进行分散,哈希值为0的视频id对应的播放数据目录为/user/hive/warehouse/video_play/day=20170818/hour=00/part-00000
    • 外部表(External Table)指向已经在HDFS中存在的数据,也可以创建分区。但是外部表只需要创建表,加载数据和创建表是同时完成的,数据不会移动到数据仓库目录中,删除外部表是不会删除数据的,仅仅删除元数据。

    2.2Hive的元数据存储

    • 元数据的概念,了解数仓的同学应该比较清楚了,元数据就是指Hive中的表名,表各个字段,表分区等等这些信息,而这些信息是存储在关系型数据库中的,所以在部署Hive的时候,首先要部署关系型数据库。

    3.Hive的部署

    Hive相当于在Hadoop和HDFS之上为用户封装了一层便于用户使用的接口,所以Hive是在Hadoop基础上才能部署。

    3.1关系型数据库安装

    由于centos7已经没有mysql了,默认的是maria-db,所以我选择的是mariadb,大家可以直接参考这篇文章的mariadb安装部分centos7 mariadb安装,同时添加一个hive用户用来管理hive的元数据

    3.2Hive下载以及部署

    • 从hive官网下载安装包,我使用的是1.2.2,在${HADOOP_HOME}下解压
    • 配置hive系统环境变量
      HIVE_HOME=/data/opt/hadoop-2.8.1/apache-hive-1.2.2-bin
      PATH=$PATH:$HIVE_HOME/bin
      export HIVE_HOME PATH
    • 修改Hive配置文件
      cp hive-defaulst.xml.template hive-site.xml
      添加如下相关的xml配置
    <property>
            <name>javax.jdo.option.ConnectionURL</name>
            <value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true</value>
            <description>JDBC connect string for a JDBC metastore</description>
        </property>
        <property> 
            <name>javax.jdo.option.ConnectionDriverName</name> 
            <value>com.mysql.jdbc.Driver</value>
            <description>Driver class name for a JDBC metastore</description>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionUserName</name>
            <value>hive</value>
            <description>username to use against metastore database</description>
        </property>
        <property>
            <name>javax.jdo.option.ConnectionPassword</name>
            <value>hive</value>
            <description>password to use against metastore database</description>
        </property>
        ```
        同时,需要下载MySQL的JDBC驱动包,直接在[Maven公库][2]寻找相关jar包链接,在${HIVE\_HOME}/lib目录下wget就可以了  
    wget&nbsp;&nbsp;http://central.maven.org/maven2/mysql/mysql-connector-java/5.1.27/mysql-connector-java-5.1.27.jar
    后台执行nohup  hive --service metastore > /dev/null 2> /dev/null & 
    执行jps,如果看到RunJar就说明OK了,直接执行hive,,就可以启动客户端了。
    
    ###3.3 hwi(Hive WebUI)的部署
    hive的web页面,里面可以查看hadoop的相关表结构,也可以直接在这个里面提交Hive QL查询语句得到结果,web页面还是很方便的,对之后的数据分析或者是其他开发同学使用。
    部署参考链接[Hwi部署参考文档][3]
    ####3.3.1编译war包
    下载hive的src代码,解压,进入到hwi项目下执行命令jar cfM hive-hwi-1.2.2.war -C web .
    在当前目录下会有一个war包,拷贝到${HIVE\_HOME}/lib
    ####3.3.2 添加hwi配置,hive-site.xml
    如下,在hive-site.xml文件中添加一下配置,注意war包的路径是基于${HIVE\_HOME}的相对路径,不要写成绝对路径
    ```xml
    <property>
            <name>hive.hwi.war.file</name>
            <value>lib/hive-hwi-1.2.2.war</value>
            <description>This sets the path to the HWI war file, relative to ${HIVE_HOME}. </description>
        </property>
        <property>
            <name>hive.hwi.listen.host</name>
            <value>master</value>
            <description>This is the host address the Hive Web Interface will listen on</description>
        </property>
        <property>
            <name>hive.hwi.listen.port</name>
            <value>9999</value>
            <description>This is the port the Hive Web Interface will listen on</description>
        </property>
    

    3.3.3 添加jar包

    由于本身的war包拷贝进去,依然缺少相关jar包,大致需要jdk中的tools.jar,commons-el-1.0.jar
    jasper-compiler-5.5.23.jar jasper-runtime-5.5.23.jar

    3.3.4 ant安装

    去ant官网下载安装包,并且配置环境变量就OK了

    3.3.5 启动脚本

    nohup bin/hive --service hwi > /dev/null 2> /dev/null &
    打开http://master:9999/hwi就可以了

  • 相关阅读:
    题解【bzoj3529 [SDOI2014]数表】
    题解【bzoj2301 [HAOI2011]Problem b】
    题解【bzoj2440 [中山市选2011]完全平方数】
    题解【bzoj3240 [NOI2013]矩阵游戏】
    题解【CF277E Binary Tree on Plane】
    题解【luogu2045 方格取数游戏加强版】
    题解【bzoj4650 [NOI2016]优秀的拆分】
    NOIp2018 游记
    Android提供的layout文件存放位置
    Android控件第2类——ImageView
  • 原文地址:https://www.cnblogs.com/wangkeustc/p/7391040.html
Copyright © 2020-2023  润新知