数据湖:分布式容错数据仓库hive

YoungerChina YoungerChina     2023-03-15     290

关键词:

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


 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 HIVEAPACHE 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

数据仓库与数据湖的区别(代码片段)

...其进行筛选。当数据湖首次出现时,它们通常与Hadoop分布式处理框架相关联,但随着企业中数据的不断涌入,架构选项已经增加到包括其他大数据平台。许多T供应商现在还支持云中的数据湖,通常将Spak处理引擎... 查看详情

数据湖:iceberg概念及回顾什么是数据湖

Iceberg概念及回顾什么是数据湖一、回顾什么是数据湖数据湖是一个集中式的存储库,允许你以任意规模存储多个来源、所有结构化和非结构化数据,可以按照原样存储数据,无需对数据进行结构化处理,并运行不同类型的分析... 查看详情

数据平台发展史-从数据仓库数据湖到数据湖仓

数据平台发展史-从数据仓库数据湖到数据湖仓做数据的同学经常听到一些数据相关的术语,常见的包括数据仓库,逻辑数据仓库,数据湖,数据湖仓/湖仓一体,数据网格datamesh,数据编织datafabric等.笔者在这里... 查看详情

数据湖之hudi:什么是数据湖

目录0.相关文章链接1.什么是数据仓库2.什么是数据湖3.数据仓库DataWarehouse与数据湖DataLake区别4. 湖仓一体DataLakeHouse5.数据湖总结0.相关文章链接大数据基础知识点文章汇总1.什么是数据仓库数据仓库(英语:DataWarehouse࿰... 查看详情

数据湖05:从数据仓库看数据湖

 系列专题:数据湖系列文章 摘自:https://www.toutiao.com/article/70997241906095395911.对比        下面跟大家聊聊我所理解的数据湖的本质,对于一种新事物不了解本质,你就很难驾驭它,下面这张图道尽了一切... 查看详情

万字详解数据仓库数据湖数据中台和湖仓一体

本文目录:一、前言二、概念解析数据仓库数据湖数据中台三、具体区别数据仓库VS数据湖数据仓库VS数据中台总结四、湖仓一体目前数据存储方案DataLakehouse(湖仓一体)一、前言数字化转型浪潮卷起各种新老概念满... 查看详情

奈学:数据湖和数据仓库的区别有哪些?

储存方面:数据湖中数据为非结构化的,所有数据都保持原始形式;存储所有数据,并且仅在分析时再进行转换。数据仓库就是数据通常从事务系统中提取,在将数据加载到数据仓库之前,会对数据进行清理与转换。 数据组... 查看详情

数据湖05:从数据仓库看数据湖

 系列专题:数据湖系列文章 摘自:https://www.toutiao.com/article/70997241906095395911.对比        下面跟大家聊聊我所理解的数据湖的本质,对于一种新事物不了解本质,你就很难驾驭它,下面这张图道尽了一切... 查看详情

数据湖了解

论数据湖技术及其应用摘要:近年来,随着互联网、物联网、工业物联网等技术的不断发展,企业级数据类型异常复杂,数据湖这一数据管理技术应运而生,数据湖是存储各种原始数据的大型仓库,无需进行结构化处理,可供存... 查看详情

数据湖是什么?数据湖和数据仓库什么关系,数据湖的架构分析

什么是数据湖?数据湖是一个存储库,可以存储大量结构化、半结构化和非结构化数据。它是一个以本机格式存储每种类型数据的地方,不受帐户大小或文件的固定限制。它提供了高数据量来提高分析性能和本地集成。数据湖就... 查看详情

数据湖和数据仓库的区别是啥?

我们都知道,进行数据分析工作的时候会用到很多的工具,比如说数据湖和数据仓库,不过这两者之间的差异和区别,可能会让人困惑。那么大家数据湖和数据仓库的区别:一个数据湖专门用于存储任何形式的数据,即结构化或... 查看详情

数据湖&数据仓库,别再傻傻分不清了

摘要:什么是数据湖?它有什么作用?今天将由华为云技术专家从理论出发,将问题抽丝剥茧,从技术维度娓娓道来。什么是数据湖如果需要给数据湖下一个定义,可以定义为这样:数据湖是一个存储企业的各种各样原始数据的... 查看详情

湖中小屋:从数据仓库到数据湖

湖中小屋:从数据仓库到数据湖昨天读完了一篇不错的论文《Lakehouse:ANewGenerationofOpenPlatformsthatUnifyDataWarehousingandAdvancedAnalytics》。虽然篇幅不长,而且也没涉及到具体的理论和技术实现,但可以当作是对当前比较火的... 查看详情

湖中小屋:从数据仓库到数据湖

湖中小屋:从数据仓库到数据湖昨天读完了一篇不错的论文《Lakehouse:ANewGenerationofOpenPlatformsthatUnifyDataWarehousingandAdvancedAnalytics》。虽然篇幅不长,而且也没涉及到具体的理论和技术实现,但可以当作是对当前比较火的... 查看详情

如何选择:数据仓库(datawarehouse),数据湖(datalake),数据湖仓(datalakehouse)

...司推出deltalake后,又推出了DataLakehouse。该产品结合了数据仓库和数据湖的优势。本文介绍了数据仓库,数据库,数据湖仓的特点和使用场景,避免在使用时产生混淆。1.什么是数据仓库数据仓库是一个统一的数据... 查看详情

数据湖和数据仓库的区别是啥?

数据湖就是一个集中存储数据库,用于存储所有结构化和非结构化数据。数据湖可用其原生格式存储任何类型的数据,这是没有大小限制。数据仓库是位于多个数据库上的大容量存储库。它的作用是存储大量的结构化数据,并能... 查看详情

hive基础

1.Hive是什么Hive是基于Hadoop的数据仓库解决方案。由于Hadoop本身在数据存储和计算方面有很好的可扩展性和高容错性,因此使用Hive构建的数据仓库也秉承了这些特性。这是来自官方的解释。简单来说,Hive就是在Hadoop上架了一层SQL... 查看详情

数据库 vs 数据集市 vs 数据仓库 vs 数据湖

】数据库vs数据集市vs数据仓库vs数据湖【英文标题】:DatabasevsDataMartvsDataWarehousevsDataLake【发布时间】:2020-05-1212:23:31【问题描述】:寻找高层之间的差异/比较数据库数据集市(自上而下的方法)数据仓库数据湖如果没有具体情... 查看详情