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公库寻找相关jar包链接,在${HIVE_HOME}/lib目录下wget就可以了
    wget  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.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}的相对路径,不要写成绝对路径

<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就可以了

转载于:https://www.cnblogs.com/wangkeustc/p/7391040.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值