系列专题:数据湖系列文章


1. 什么是Hive

Apache Hive 是可实现大规模分析的分布式容错数据仓库系统。该数据仓库集中存储信息,您可以轻松对此类信息进行分析,从而做出明智的数据驱动决策。Hive 让用户可以利用 SQL 读取、写入和管理 PB 级数据。

Hive 建立在 Apache Hadoop 基础之上,后者是一种开源框架,可被用于高效存储与处理大型数据集。因此,Hive 与 Hadoop 紧密集成,其设计可快速对 PB 级数据进行操作。Hive 的与众不同之处在于它可以利用 Apache Tez 或 MapReduce 通过类似于 SQL 的界面查询大型数据集。使得查询和分析存储在 Hadoop 上的数据变得非常方便。

2. Hive的发展

Hive 由 Facebook 的技术团队开发的,Apache Hive 是众多满足 Facebook 业务需求的技术之一。它非常受 Facebook 内部所有用户的欢迎。它可以开发各种数据相关的应用,并且运行在具有数百个用户的集群之上。Facebook 的 Apache Hadoop 集群存储超过 2PB 的原始数据,并且每天定期加载 15TB 的数据。现在 Hive 被很多大公司使用并完善,比如亚马逊,IBM,雅虎,Netflix 等等大公司。

3. Hive如何运作?

Hive 旨在让非程序员熟悉 SQL,并使用名为 HiveQL 的类似于 SQL 的界面对 PB 级数据进行操作。传统关系数据库被用于对中小型数据集进行交互式查询,它在处理大型数据集时的表现并不理想。但 Hive 使用批处理,因此它可以快速操作非常大型的分布式数据库。Hive 会将 HiveQL 查询转换成在Hadoop 的分布式作业计划框架,亦即 Yet Another Resource Negotiator (YARN) 上运行的 MapReduce 或 Tez 作业。它会查询存储在分布式存储解决方案,如 Hadoop 分布式文件系统 (HDFS) 或对象存储S3当中的数据。Hive 将其数据库和表元数据存储在元数据仓中,而元数据仓是一种可实现轻松数据提取和发现的基于数据库或文件的存储。

Hive 包含 HCatalog,它是从 Hive 元数据仓读取数据的表和存储管理层,可帮助 Hive、Apache Pig 和 MapReduce 之间的无缝集成。通过元数据仓,HCatalog 允许 Pig 和 MapReduce 使用与 Hive 相同的数据结构,从而无需为每个引擎重新定义元数据仓。自定义应用程序或第三方集成可以使用 WebHCat,而 WebHcat 是 HCatalog 用来访问和重复使用 Hive 元数据仓的 RESTful API。

4. 为什么使用HIve

在 Apache Hive 实现之前,Facebook 已经面临很多挑战,比如随着数据的爆炸式增长,要处理这些数据变得非常困难。而传统的关系型数据库面对这样海量的数据可以说无能为力。Facebook 为了克服这个难题,开始尝试使用 MapReduce。但使用它需要具备 java 编程能力以及必须掌握 SQL,这使得该方案变得有些不切实际。而 Apache Hive 可以很好的解决 Facebook 当前面临的问题。

Apache Hive 避免开发人员给临时需求开发复杂的 Hadoop MapReduce 作业。因为 hive 提供了数据的摘要、分析和查询。Hive 具有比较好的扩展性和稳定性。有、由于 Hive 跟 SQL 语法上比较类似, 这对于 SQL 开发人员在学习和开发 Hive 时成本非常低,比较容易上手。Apache Hive 最重要的特性就是不会 Java,依然可以用好 Hive。

5. Hive 架构

由上图可知,Hadoop 和 MapReduce 是 Hive 架构的根基。
Hive 架构包括如下组件:

  • CLI(command line interface)
  • JDBC/ODBC
  • Thrift Server
  • WEB GUI
  • Metastore
  • Driver(Complier、Optimizer 和 Executor)

这些组件可以分为两大类:

服务端组件

  • Driver 组件:该组件包括 Complier、Optimizer 和 Executor,它的作用是将 HiveQL 语句进行解析、编译优化,生成执行计划,然后调用底层的 MapReduce 计算框架。

  • Metastore 组件:元数据服务组件,这个组件存储 Hive 的元数据,hive 的元数据存储在关系数据库里,hive 支持的关系数据库有 derby、mysql。元数据对于 hive 十分重要,因此 hive 支持把 metastore 服务独立出来,安装到远程的服务器集群里,从而解耦 hive 服务和 metastore 服务,保证 hive 运行的健壮性。

  • Thrift 服务:thrift 是 facebook 开发的一个软件框架,它用来进行可扩展且跨语言的服务的开发,hive 集成了该服务,能让不同的编程语言调用 hive 的接口。

客户端组件

  • CLI:command line interface,命令行接口。

  • Thrift 客户端:上面的架构图里没有写上 Thrift 客户端,但是 hive 架构的许多客户端接口是建立在 thrift客户端之上,包括 JDBC 和 ODBC 接口。

  • WEB GUI:hive 客户端提供了一种通过网页的方式访问 hive 所提供的服务。这个接口对应 hive 的 hwi 组件(hive web interface),使用前要启动 hwi 服务。

6. Hive 的特性

Hive 有很多特性,然我们来一个个看一下:

  • Hive 以简单的方式提供数据摘要,数据查询和数据分析能力。
  • Hive 支持外部表,这使得它可以处理未存储在 HDFS 的数据。
  • Apache Hive 非常适合 Hadoop 的底层接口需求。
  • 支持数据分区
  • Hive 有一个基于规则的优化器,负责优化逻辑计划。
  • 可扩展性以及可伸缩性
  • 使用 HiveQL 不需要深入掌握编程语言,只有掌握基本的 SQL 知识就行,使用门槛较低。
  • 处理结构化数据。
  • 使用 Hive 执行即时查询做数据分析。

7. Hive优缺点

Hive的优势:

  • 快速:Hive 所采用的数据可通过批处理快速处理 PB 级数据。
  • 熟悉:Hive 提供非程序员可以使用的熟悉的类似于 SQL 的界面。
  • 可扩展:Hive 可根据您的需求被轻松分发与扩展。

Hive 具有以下局限性:

  • Hive 不支持实时查询和行级更新。
  • 高延迟。
  • 不适用于在线事务处理。

8. Hive VS. Hbnse

特性 APACHE HIVE APACHE HBASE
功能 类似于 SQL 的查询引擎专为大容量数据存储而设计。支持多种文件格式。 通过自定义查询功能提供低延迟分布式键-值存储。数据采用列式存储格式。
处理类型 采用 Apache Tez 或 MapReduce 计算框架的批处理。 实时处理。
延迟 中到高,取决于计算引擎的响应能力。对于相同数据卷,分布式执行模型提供比整体式查询系统(如 RDBMS)更出色的性能。 低,但可能不一致。HBase 架构的结构限制可能在密集写入负载期间导致延迟激增。
Hadoop 集成 在 Hadoop 顶部运行,与 Apache Tez 或 MapReduce 一起使用可进行处理,与 HDFS 或 Amazon S3 一起可进行存储。 在 HDFS 或 Amazon S3 顶部运行。
SQL 支持 通过 HiveQL 提供类似于 SQL 的查询功能。 自身不提供 SQL 支持。您可以为 SQL 功能使用 Apache Phoenix。
Schema 适用于全部表的定义 Schema。 无 Schema。
数据类型 支持结构化和非结构化数据。为常见的 SQL 数据类型提供原生支持,如 INT、FLOAT 和 VARCHAR。 仅支持非结构化数据。由用户定义数据字段到 Java 支持的数据类型的映射。

9. Hive 使用案例

Airbnb 在世界范围内为人们提供住宿和活动匹配,注册的房东超过 290 万名,可提供 80 万间民宿供有需要者在夜间住宿。Airbnb 使用 Amazon EMR 在 S3 湖内数仓上运行 Apache Hive。在 EMR 集群上运行 Hive 让 Airbnb 分析师可对存储于 S3 湖内数仓中的数据执行临时 SQL 查询。通过迁移到 S3 湖内数仓,Airbnb 降低了自身开支,并且现在可以进行成本归属分析,使 Apache Spark 作业的速度比原来增加了三倍。

Guardian 通过其保险和财富管理产品及服务为 2700 万名会员提供他们值得拥有的安全保护。Guardian 使用 Amazon EMR 在 S3 湖内数仓上运行 Apache Hive。Apache Hive 被用于批处理。S3 湖内数仓为 Guardian Direct 提供支持,该数字平台让消费者可以研究与购买 Guardian 产品和保险产业的第三方产品。

FINRA(美国金融业监管局)是美国最大的独立安全监管机构,负责监控和管制金融交易行为。FINRA 使用 Amazon EMR 在 S3 湖内数仓上运行 Apache Hive。在 EMR 集群上运行 Hive 让 FINRA 可以利用 SQL 处理与分析多达 900 亿个事件的交易数据。相较于 FINRA 的本地解决方案,云湖内数仓能够实现高达 2000 万 USD 的成本节约,并大幅缩短恢复与升级所需的时间。

Vanguard 是一家在美国注册的投资顾问,它也是最大的共同基金提供商和第二大交易型开放式指数基金提供商。Vanguard 使用 Amazon EMR 在 S3 湖内数仓上运行 Apache Hive。数据被存储在 S3 中,而 EMR 会在此类数据基础上构建一个 Hive 元数据仓。Hive 元数据仓包含与 EMR 集群中的数据和表有关的全部元数据,从而实现轻松分析数据。Hive 还让分析师可对存储于 S3 湖内数仓中的数据执行临时 SQL 查询。通过 Amazon EMR 迁移到 S3 湖内数仓帮助超过 150 名数据分析师成功提高运维效率,并将 EC2 和 EMR 的成本降低了 60 万 USD。

10. 参考资料

[01]https://aws.amazon.com/cn/big-data/what-is-hive/

[02]https://www.hadoopdoc.com/hive/hive-tutorial

数据湖:分布式容错数据仓库Hive相关推荐

  1. 数据湖 VS 数据仓库之争?阿里提出大数据架构新概念:湖仓一体

    作者 |关涛.李睿博.孙莉莉.张良模.贾扬清(from 阿里云智能计算平台) 黄波.金玉梅.于茜.刘子正(from 新浪微博机器学习研发部) 编者按 随着近几年数据湖概念的兴起,业界对于数据仓库和数据 ...

  2. 数据湖和数据仓库区别介绍

    数据湖是用来存储什么样的数据呢? 数据湖是以什么样的存储模式存储数据呢?是关系型数据库的模式吗? 数据湖与Delta Lake的关系是? 数据湖可以替代数据仓库吗? 简单对比下数据湖与数据仓库. 数据 ...

  3. 湖仓一体:数据湖vs数据仓库之争?

    本文介绍数据仓库和数据湖的区别是什么,作者对其来龙去脉进行深入剖析,来阐述两者融合演进的新方向--湖仓一体. 导读:随着近几年数据湖概念的兴起,业界对于数据仓库和数据湖的对比甚至争论就一直不断.有人说 ...

  4. 数据湖与数据仓库的新未来:阿里提出湖仓一体架构

    点击上方 "zhisheng"关注, 星标或置顶一起成长 Flink 从入门到精通 系列文章 作者: 关涛.李睿博.孙莉莉.张良模.贾扬清 (from 阿里云智能计算平台) 黄波. ...

  5. 数据湖和数据仓库的区别?

    简介 数据湖这个概念和数据仓库这两个概念一直搞不清楚,之前感觉区别就是数据湖是数据仓库的父集.数据湖是个伪命题,平时生活中也用不到,然后今天听了我的一个师哥的讲解,然后简单总结下. 常见的问题 1 数 ...

  6. 论数据湖与数据仓库一体化设计的必要性

    数据湖概念 数据湖最早是由Pentaho的创始人兼CTO,James Dixon,在2010年10月纽约 Hadoop World大会上提出来的.当时Pentaho刚刚发布了Hadoop的第一个版本. ...

  7. Dremio 数据湖以及数据仓库

    Dremio 数据湖以及数据仓库 一. 数据湖和数据仓库 什么是数据湖? 数据湖的目的和优势 什么数据仓库? 数据湖和数据仓库之间差异 数据湖引擎 二. Dremio 分离数据和计算 使用基于Apac ...

  8. 数据湖与数据仓库:主要差异

    问题4:数据库不仅仅是数据仓库的重访吗? 我们中的一些人更多地了解了数据湖,特别是在过去的六个月里.有些人告诉我们,数据湖只不过是数据仓库的转世,本着"去过那里"的精神,其他人则专 ...

  9. 一文读懂:本地数据湖丨数据仓库丨云数据湖的利与弊

    数据湖指的是一个中心位置,大量数据以原始的.非结构化的格式存储,其中包含有关数据和惟一标识符的信息.它们存储的数据可以稍后进行处理,以提取有价值的业务见解并推动业务向前发展. 这种类型的灵活组织允许存 ...

  10. 惟客数据解读:数据湖、数据仓库、数据中台究竟区别在哪儿?

    数字化转型浪潮卷起各种新老概念满天飞,数据湖.数据仓库.数据中台轮番在朋友圈刷屏,有人说"数据中台算个啥,数据湖才是趋势",有人说"再见了数据湖.数据仓库,数据中台已成气 ...

最新文章

  1. 算法导论22章 基本图算法习题
  2. C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)
  3. (76)ila使用?
  4. 计算机教案解说词,小学微机室解说词初稿
  5. Nginx+Tomcat+Session 高性能群集搭建
  6. 2015年总结与2016年目标
  7. Java命令注入之防护
  8. Java高并发编程之第一阶段,多线程基础深入浅出
  9. Skype国际版下载地址(非Tom版)
  10. 《领导力21法则》读书感悟
  11. 【云原生】灰度发布、蓝绿发布、滚动发布、灰度发布解释
  12. C# HttpClientHelper
  13. 一个智能省心的空空java代码生成平台上线了——前后端代码生成
  14. 往事不回头,今后不将就~~Fighting
  15. 新计算机无法 盘启动不了怎么办,制作好U盘启动盘,却无法引导启动,该怎么办?...
  16. 微信公众号网页授权40029错误,小程序微信支付前后端逻辑? (微信授权支付之 (篇一))
  17. (转)造势满分的摩羯智投都存在哪些问题?
  18. XMail 安装配置使用 (1.27 )
  19. Python编程 | 系统编程 | 脚本运行上下文 | 标准流
  20. Oracle并发(CONCURREMT)收集统计信息 (文档 ID 1555451.1)

热门文章

  1. web登录添加用户+IP限制方法
  2. 行业分析-全球与中国鱼狩猎设备市场现状及未来发展趋势
  3. Android每日源码,微博编辑框ProgressDialog加载“到位”功能流动布局快递小说app
  4. 2011-2-20 Js基础
  5. android studio profiler 内存分析用法
  6. 【VBA研究】VBA中如何用求和函数SUM求和
  7. 上海桂隆阀门-用心为您经营每一条管道
  8. cad详图怎么画_CAD怎么剖面,CAD剖面图怎么画
  9. 【二】服务器硬件知识
  10. FF900R12ME7B11NPSA1,FF900R12ME7WB11BPSA1 1200V 双IGBT模块