微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据仓库Hive

 

Hive概述

产生背景

  • MapReduce编程的不便性
  • 传统RDBMS人员的需求
    • HDFS上的文件并没有schema的概念

Hive是什么

  • 由Facebook开源,用于解决海量结构化日志的数据统计问题
  • 构建在Hadoop之上的数据仓库(可以理解为数据存在在HDFS,可以通过MapReduce进行计算,提交在YARN上运行的)
  • Hive提供的SQL查询语言:HQL
  • 底层支持多种不同的执行引擎(MR/Tez/Spark,Hive构建在Hadoop之上,底层应该是MapReduce的执行引擎,MapReduce适合离线处理,执行效率不是很高, Hive从诞生之初到1.x都是支持MapReduce的,Hive2.x开始底层的认执行引擎是Spark)

为什么要使用Hive

  • 简单、容易上手
  • 为超大数据集设计的计算/扩展能力
  • 统一的元数据管理
    • Hive数据存放在HDFS上
    • 元数据信息(记录数据的数据,例如一个表,表的名字、字段、字段的类型、数据存放在HDFS的啥位置)是存放在MysqL
    • sql on Hadoop:Hive、Spark sql、impala...,即在Hive里面创建一张表,在Spark sql和impala可以直接使用,反之亦然,元数据管理是单独抽取的部分,后续想更换框架会很方便

Hive在Hadoop生态圈中的位置

Hive体系架构

sql翻译成MapReduce,跑在Hadoop之上,在使用查询和管理的过程中可能会涉及到一些表一些数据库,因为Hive是基于表来操作的,这些表和数据库都是作为元数据信息存放在metastore里面的,这个metastore是存放在MysqL里面的。

  • client:
    • shell
    •  thrift/jdbc(server/jdbc的方式,一种协议,相当于把hive启成一种服务,通过jdbc的方式往这个服务上提交查询sql
    • WebUI(HUE/Zeppelin),提供Web界面,在Web界面上直接写sql统计结果可以以图形化的方式直接展示出来
  • metastore ==> MysqL
    • database:name、location、owner....
    • table:name、location、owner、column name / type、....
  • Driver
    • sql语句是一个普通的字符串而已,如何让这个字符串被Hive识别?先将sql编译成一个语法树(sql Parser),基于这个语法树可以做很多的优化(Query Optimizer),取出最优的执行计划生成物理执行计划(Physical Plan),在物理执行计划过程中,可能有一些序列化与反序列化以及UDF(UDF:用户自己定义的一些函数),物理执行计划会生成一个Execution,在Execution下面会生成MapReduce作业。

Hive部署架构

Hive是一个客户端,不涉及集群的概念,需要在哪个机器上使用Hive操作,直接在哪台机器上布上 Hive的软件包就行了

Hive和RDBMS的区别

  • 支持
    • 支持sql
    • 支持insert和update,只不过大数据不太建议insert和update,因为性能比较低
    • 支持分布式(集群),不过MysqL的集群比较小,而且是构建在专用的机器上的,成本昂贵;Hive是基于Hadoop之上的,Hadoop可以拥有成千上万个节点,且是构建在廉价的机器之上的。
  • 区别的
    • Hive HQL 和关系型数据库sql非常类似,但他们有本质区别,他俩只是长得像,并没有关系
    • 对于查询而言,关系型数据库延时较低,时效性高;Hive 基于Hadoop之上的,作业要通过sql转换成MapReduce作业或者Spark作业,然后提交到集群上运行,跑出结果可能要很久
    • MysqL处理PB级数据已经很厉害了,但是对于Hive来说PB不算大。

Hive部署

下载hive-1.1.0-cdh5.15.1.tar.gz,因为之前Hadoop选择的版本是hadoop-2.6.0-cdh5.15.1,所以hive也必须选择cdh5.15.1

  1. 下载 & 解压
  2. 添加HIVE_HOME到系统的环境变量,在source一下,打开的多个控制台都要source一下,否则在以前打开的控制台上不生效
  3. 修改配置
    1. hive-env.sh

      1. HADOOP_HOME:若添加到系统环境变量,通常不需要配,不过配一下也没事

    2. hive-site.xml

      1. 需要配置元数据存储的地方,所以这边只需要配置一些MysqL的信息

  4. 拷贝MysqL驱动包到$HIVE_HOME/lib下

  5. 前提是要准备安装一个MysqL数据库,yum install 去安装一个MysqL数据库

 

 

 

 

参考: 慕课网 - Hadoop 系统入门+核心精讲

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐