数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

这篇具有很好参考价值的文章主要介绍了数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Hive、HBase、Impala、HDFS是Hadoop生态体系中常用的开源产品,各个产品间是一个什么样的关系,许多人都搞不清楚,本文将进行研究分析。

Hadoop生态

在了解Hive、HBase、Impala、和HDFS之前,先熟悉一下Hadoop的生态。

Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集群之间对大型数据集进行分布式处理。它旨在从单个服务器扩展到数千台计算机,每台计算机都提供本地计算和存储。库本身不是依靠硬件来提供高可用性,而是旨在检测和处理应用程序层的故障,因此在计算机群集(每台计算机都可能容易出现故障)之上提供高可用性服务。

适用场景:离线数据开发与存储

数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

数据获取(Data Ingestion) Sqoop、Flume
Hadoop 核心(Hadoop Core)
  • Hadoop分布式文件系统:HDFS
  • 集群资源管理:YARN
  • 数据处理(Data processing):MapReduce 和 Spark

数据分析(Data Analysis) Pig、Impala、Hive
工作流系统(Workflow system) Oozie
NoSQL HBase

HDFS

HDFS的英文全称是Hadoop Distributed File System,即Hadoop分布式文件系统,它是Hadoop的核心子项目。HDFS被设计成适合运行在通用和廉价硬件上的分布式文件系统。HDFS是为了处理大型数据集而设计的,主要是为达到高的数据吞吐量而设计的,延迟时间通常是在分钟乃至小时级别。

适用场景:作为数据的底层存储,以高可用的方式存储大文件

优势 劣势or局限性
  • 适合存储超大文件(GB、TB乃至PB大小);
  • 对硬件要求低,适合运行于低廉的商用硬件集群上;
  • 多个副本存储数据,具备高容错性和高可靠性;
  • 读取整个数据集比读取单条记录会更加高效。
  • 不适合低延迟数据访问;
  • 无法高效存储大量小文件;
  • 不支持多用户写入和随机文件修改(只能增删、不支持改)。

MapReduce

MapReduce是Google公司的核心计算模型,它将运行于大规模集群上的复杂并行计算过程高度地抽象为两个函数:Map和Reduce。Hadoop是Doug Cutting受到Google发表的关于MapReduce的论文的启发而开发出来的。Hadoop中的MapReduce是一个使用简单的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并能可靠容错地并行处理TB级别的数据集。

适用场景:对响应时间要求低的大数据量计算

优势 劣势or局限性
  • 易于编程,可快速地完成一个分布式程序的开发;
  • 良好的扩展性,计算性能可随节点数增长保持近似于线性的增长;
  • 高容错性,节点宕机时,计算任务可以自动转移至其他节点运行;
  • 要求用户有java编程能力;
  • MapReduce无法像Oracle或者MySQL那样在毫秒或者秒级内返回结果;
  • MapReduce的输入数据集是静态的,不能动态变化,所以不能用于流计算;
  • 每个MapReduce作业的输出结果都会写入磁盘;

Hive

Hive 是一个构建于 Hadoop 顶层的数据仓库工具,支持对接查询存储在HDFS、HBase中文件,具有良好的可扩展性。某种程度上可以看作是用户编程接口,本身不存储和处理数据。实际的数据保存在HDFS文件中,真正的计算和执行则由MapReduce完成(也可以通过 Apache Tez、Apache Spark执行查询)。Hive 定义了简单的类似 SQL 的查询语言——Hive SQL,用户通过编写的 Hive SQL 语句运行 MapReduce 任务,其许多语法兼容Oracle、DB2、MySQL、SQL Server等,所以用户在某些场景下用户可以快速将构建在关系数据库上的数据仓库应用程序移植到 Hadoop 平台上。

关于分区:Hive Select查询时,一般会扫描整个表内容。随着系统运行的时间越来越长,表的数据量越来越大,而hive查询做全表扫描,会消耗很多时间,降低效率。而有时候,我们需求的数据只需要扫描表中的一部分数据即可。这样,hive在建表时引入了分区(partition)概念。即在建表时,将整个表存储在不同的子目录中,每一个子目录对应一个分区。在查询时,我们就可以指定分区查询,避免了hive做全表扫描,从而提高查询效率。

原理:Hive是建立在Hadoop体系架构上的一层SQL抽象,使得数据相关人员使用他们最为熟悉的SQL语言就可以进行海量数据的处理、分析和统计工作,而不是必须掌握Java等编程语言和具备开发MapReduce程序的能力。Hive SQL实际上先被SQL解析器进行解析然后被Hive框架解析成一个MapReduce可执行计划,并按照该计划生成MapReduce任务后交给Hadoop集群处理的。

数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

注意:Hive 并不是一个关系数据库。Hive 中没有定义专门的数据格式,需要由用户指定三个属性:列分隔符、行分隔符 、读取文件数据的方法(Hive 中默认有三个文件格式 TextFile,SequenceFile 以及 ORCFile)。Hive 在查询数据的时候,由于没有索引,需要扫描整个表Hive SQL,因此延迟较高;另外一个导致 Hive 执行延迟高的因素是 MapReduce 框架,由于 MapReduce 本身具有较高的延迟,因此在利用 MapReduce 执行 Hive 查询时,也会有较高的延迟(相对的,数据库的执行延迟较低,当然,这个低是有条件的,即数据规模较小,当数据规模大到超过数据库的处理能力的时候,Hive 的并行计算显然能体现出优势)。

适用场景:长时间的批处理查询分析

优势 劣势or局限性

高吞吐,可以很好地处理不变的大规模数据集

高延迟,延迟时间通常是在分钟乃至小时级别

Hive不支持行级数据插入、更新和删除,也不支持事务等(原因是其底层基于HDFS)

Hive不能提供数据排序和查询缓存功能,也不提供在线事务处理,更不提供实时的查询和记录级的更新

Hbase

HBase是一个开源的、分布式的、持久的、强一致性的数据存储系统(NoSQL数据库),可以在HDFS或Alluxio(VDFS)之上运行,具有近似最优的写性能和出色的读性能,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等,此开源项目的目标是在商品硬件集群上托管非常大的表——数十亿行X数百万列。

  1. HBase不是关系型数据库,而是一个在HDFS上开发的面向列的分布式数据库,不支持SQL。 
  2. HBase为查询而生的,它通过组织起节点内所有机器的内存,提供一個超大的内存Hash表 。
  3. HBase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。 
  4. HBase是列存储。 

对于那些有低延时要求的应用程序,HBase是一个好的选择,尤其适用于对海量数据集进行访问并要求毫秒级响应时间的情况,但HBase的设计是对单行或者少量数据集的访问,对HBase的访问必须提供主键或者主键范围。访问接口:Hive、Pig、REST Gateway、HBase Shell、Native Java API、Thrift Gateway

适用场景:对具有高吞吐量和低输入/输出延迟的大型数据集进行快速读写操作

优势 劣势or局限性
  • 存储容量大,一个表可以容纳上亿行,上百万列;
  • 支持线性和模块化扩展,负载高时,可通过简单的添加机器来实现水平切分扩展;
  • 服务器故障自动转移;
  • 可通过版本进行检索,能搜到所需的历史版本数据。
  • 不能支持条件查询,只支持按照row key来查询;
  • 不直接支持 SQL 的语句查询,函数、关联、触发器等等都不支持;
  • 占用内存很大,且鉴于建立在为批量分析而优化的HDFS上,导致读取性能不高;
  • API相比其它 NoSql 的相对笨拙。

Impala

Impala可以直接对接存储在HDFS、HBase 或亚马逊S3中的Hadoop数据,提供快速、交互式的 SQL 查询,提高 APACHE Hadoop 上的SQL查询性能。Impala 使用与 Hive 相同的元数据、SQL 语法(Hive SQL)、ODBC 驱动程序和用户界面(Hue Beeswax),因此,Hive用户只需很少的设置成本,即可使用Impala。

原理:为了避免延迟,Impala绕过MapReduce,通过一个专门的分布式查询引擎直接访问数据,该引擎与商业并行RDBMS中的查询引擎非常相似。结果是性能比 Hive 快几个数量级,具体取决于查询类型和配置。

Impala 是对大数据查询工具的补充。Impala不会取代在MapReduce上构建的批处理框架(例如Hive)。Impala 可以读取和写入 Hive 表,从而使用 Impala 实现简单的数据交换,从而对 Hive 生成的数据进行分析。

注:安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。

适用场景:大数据实时交互式 SQL 查询

优点 劣势or局限性
  • 基于内存运算,不需要把中间结果写入磁盘,省掉了大量的I/O开销;
  • 无需转换为Mapreduce,直接访问存储在HDFS,HBase中的数据进行作业调度,速度快;
  • 使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销;
  • 支持各种文件格式,如TEXTFILE 、SEQUENCEFILE 、RCFile、Parquet;
  • 可以访问hive的metastore,对hive数据直接做数据分析。
  • 对内存的依赖大,且完全依赖于HIVE;
  • 实践中,分区超过1万,性能严重下降;
  • 只能读取文本文件,而不能直接读取自定义二进制文件;
  • 每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新;

分析总结

基于以上的研究,对Hive、HBase、Impala、HDFS之间的关系做一个简单的分析总结:

  1. Hive的使用虽然和关系型数据库类似,但是其本质上是建立在Hadoop体系架构上的一层SQL抽象,自身不存储和处理数据,实际数据保存在HDFS文件中,真正的计算和执行则由MapReduce完成;
  2. Impala是Hive的补充,可以读取和写入 Hive 表,依赖Hive的元数据,自身不存储数据。Impala提供的有一个分布式查询引擎;
  3. HBase是列存储的NoSQL数据库,主要提供接口的形式与外界交互,数据保存在HDFS上,也支持使用Hive直接访问HBase;
  4. HDFS是Hadoop生态最底层的存储,Hive、Impala、HBase都建立在HDFS之上。

以下参考资料:

官方介绍:

  • Apache Hadoop
  • Apache Hive
  • Home - Apache Hive - Apache Software Foundation
  • Hive HPL/SQL - Apache Hive - Apache Software Foundation
  • DeveloperGuide - Apache Hive - Apache Software Foundation
  • Apache HBase – Apache HBase™ Home
  • Apache HBase ™ Reference Guide
  • Apache HBase - Wikipedia
  • Impala (apache.org)
  • Introducing Apache Impala

书籍:

  • 《离线和实时大数据开发实战》-朱松岭
  • 《HBase权威指南》

其他文章:

  • Hadoop, HDFS, Hive, Hbase, Impala 之间的关系 - levi125 - 博客园 (cnblogs.com)
  • Impala入门学习与使用详解_皮哥四月红的博客-CSDN博客
  • Hive、Spark、Impala原理阅读笔记 (icode9.com)
  • 大数据之Impala - 走看看 (zoukankan.com)
  • Hbase和Hive区别和联系_KK凯凯的博客-CSDN博客_hbase和hive的区别和联系
  • MongoDB、HBase、Redis 等 NoSQL 优劣势、应用场景 - 知乎 (zhihu.com)
  • HBase的面试八股 (51gcrc.com)
  • Hive分区介绍_weixin_42232931的博客-CSDN博客_hive 分区
  • 什么是hive的静态分区和动态分区,hive动态分区详解_鲁边的博客-CSDN博客_hive 动态分区严格模式
  • 高效辨别Hive的静态和动态分区_糖潮丽子的博客-CSDN博客

 写作不易,如果读完以后觉得有帮助,欢迎点赞和收藏!文章来源地址https://www.toymoban.com/news/detail-404701.html

到了这里,关于数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据期资料2023 Beta版 - Hadoop、HDFS、MapReduce、Hive、ZooKeeper、Kafka、HBase详解

    了解大数据概念、Hadoop、HDFS、MapReduce、Hive、ZooKeeper、Kafka、HBase等技术,包括特点、命令操作和启动关闭方法。获取2023年大数据资料Beta版。

    2024年02月06日
    浏览(237)
  • 云计算与大数据之间的羁绊(期末不挂科版):云计算 | 大数据 | Hadoop | HDFS | MapReduce | Hive | Spark

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 大数据是需求,云计算是手段。没有大数据,就不需要云计算;没有云计算,就无法处理大数据。 所有的计算能力、存储能力、和各种各样功能的应用都通过网络

    2024年02月04日
    浏览(63)
  • 基于Hadoop的MapReduce网站日志大数据分析(含预处理MapReduce程序、hdfs、flume、sqoop、hive、mysql、hbase组件、echarts)

    需要本项目的可以私信博主!!! 本项目包含:PPT,可视化代码,项目源码,配套Hadoop环境(解压可视化),shell脚本,MapReduce代码,文档以及相关说明教程,大数据集! 本文介绍了一种基于Hadoop的网站日志大数据分析方法。本项目首先将网站日志上传到HDFS分布式文件系统

    2024年02月16日
    浏览(65)
  • Hadoop生态体系-HDFS

    Hadoop:允许使用简单的编程模型在大量计算机集群上对大型数据集进行分布式处理。 核心组件有: HDFS(分布式文件系统):解决海量数据存储 YARN(作业调度和集群资源管理的框架):解决资源任务调度 MAPREDUCE(分布式运算编程框架):解决海量数据计算 特点:扩容能力(

    2024年02月16日
    浏览(74)
  • 基于 HBase & Phoenix 构建实时数仓(1)—— Hadoop HA 安装部署

    目录 一、主机规划 二、环境准备 1. 启动 NTP 时钟同步 2. 修改 hosts 文件 3. 配置所有主机间 ssh 免密 4. 修改用户可打开文件数与进程数(可选) 三、安装 JDK 四、安装部署 Zookeeper 集群 1. 解压、配置环境变量 2. 创建配置文件 3. 创建新的空 ZooKeeper 数据目录和事务日志目录 4

    2024年03月10日
    浏览(53)
  • hadoop生态圈-- 个人笔记学习05 HDFS优化

    DFSClient和DN在一个节点 —— local reads,远程阅读 Remote reads。 处理方式是一样的 DN读数据 通过RPC(TCP协议)把数据给DFSClient。DN在中间会做中转,处理简单但是性能收影响 (Local read的情况下,会希望绕过DN直接读取Data,这就是 短路 DFSClient自行打开文件读取数据,需要配置白名

    2024年02月13日
    浏览(74)
  • Hbase,Hive和Hdfs的关系以及区别

    HBase是一个分布式的、面向列的开源数据库,Hbase是Hadoop database即Hadoop数据库。HBase的数据通常存储在HDFS上。HDFS为HBase提供了高可靠性的底层存储支持。不过HBase 本身其实可以完全不要考虑 HDFS 的,你完全可以只把 HBase 当作是一个分布式高并发 k-v 存储系统,只不过它底层的文

    2024年02月11日
    浏览(82)
  • Hive 和 HDFS、MySQL 之间的关系

    Hive、MySQL 和 HDFS 是三个不同的数据存储和处理系统,它们在大数据生态系统中扮演不同的角色,但可以协同工作以支持数据管理和分析任务。 Hive Hive 是一个基于 Hadoop 生态系统的 数据仓库工具 ,用于管理和查询大规模数据集。它提供了一种类似于 SQL 的查询语言(HiveQL),

    2024年02月09日
    浏览(39)
  • Hadoop Hbase Hive 版本对照一览

    官网内容记录,仅供参考

    2024年02月13日
    浏览(38)
  • HDFS 跨集群数据同步(hive,hadoop)

    两个不同的HDFS 集群数据迁移( A集群的数据 - B 集群) 采用的是 SHELL 脚本  按表进行; 日期分区进行; #!/bin/bash ##################### #创建人:DZH #创建日期: 2020-04 #内容: 数据迁移 ##################### ##################################### [ \\\"$#\\\" -ne 0 ] FILE=$1 path=$(cd `dirname $0`; pwd) ############## 获取执

    2024年04月27日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包