一篇讲明白 Hadoop 生态的三大部件

文章目录

  • 每日一句正能量
  • 前言
  • 01 HDFS
  • 02 Yarn
  • 03 Hive
  • 04 HBase
  • 05 Spark及Spark Streaming
  • 关于作者
  • 推荐理由
  • 后记
  • 赠书活动

每日一句正能量

黎明时怀着飞扬的心醒来,致谢爱的又一天,正午时沉醉于爱的狂喜中休憩,黄昏时带着感恩归家,然后在内心为所爱的祈祷中入眠,让赞美的歌谣停留在唇间。

前言

随着大数据时代的来临,处理和分析海量数据成为了一项重要的挑战。为了应对这一挑战,Hadoop生态系统应运而生。Hadoop生态系统是一个开源的、可扩展的解决方案,它由三大核心部件组成,分别是Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架(MapReduce)和Hadoop分布式存储和计算平台(YARN)。这三个部件共同协作,提供了一个高效和可靠的大数据处理平台。本文将对Hadoop生态系统的这三大部件进行详细解析,以帮助读者更好地理解Hadoop生态系统的工作原理和优势。

进入大数据阶段就意味着进入NoSQL阶段,更多的是面向OLAP场景,即数据仓库、BI应用等。
大数据技术的发展并不是偶然的,它的背后是对于成本的考量。集中式数据库或者基于MPP架构的分布数据库往往采用的都是性能稳定但价格较为昂贵的小型机、一体机或者PC服务器等,扩展性相对较差;而大数据计算框架可以基于价格低廉的普通的硬件服务器构建,并且理论上支持无限扩展以支撑应用服务。

在大数据领域中最有名的就是 Hadoop 生态,总体来看,它主要由三部分构成:底层文件存储系统 HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)、资源调度计算框架 Yarn(Yet Another Resource Negotiator,又一个资源协调者)以及基于 HDFS 与 Yarn的上层应用组件,例如 HBase、Hive 等。一个典型的基于 Hadoop 的应用如下图所示。
在这里插入图片描述

▲图  一个典型的 Hadoop 应用

01 HDFS

HDFS 被设计成适合运行在通用硬件(Commodity Hardware)上的分布式文件系统。它和现有的分布式文件系统有很多共同点,例如典型的 Master-Slave 架构(这里不准备展开介绍),也有不同点,HDFS 是一个具有高度容错性的系统,适合部署在廉价的机器上。关于HDFS 这里主要想说两点,默认副本数的设置以及机架感知(Rack Awareness)。

HDFS 默认副本数是 3,这是因为 Hadoop 有着高度的容错性,从数据冗余以及分布的角度来看,需要在同一机房不同机柜以及跨数据中心进行数据存储以保证数据最大可用。因此,为了达到上述目的,数据块需要至少存放在同一机房的不同机架(2 份)以及跨数据中心的某一机架(1 份)中,共 3 份数据。

机架感知的目的是在计算中尽量让不同节点之间的通信能够发生在同一个机架之 内,而不是跨机架,进而减少分布式计算中数据在不同的网络之间的传输,减少网络带 宽资源的消耗。例如当集群发生数据读取的时候,客户端按照由近到远的优先次序决定 哪个数据节点向客户端发送数据,因为在分布式框架中,网络 I/O 已经成为主要的性能瓶颈。

只有深刻理解了这两点,才能理解为什么 Hadoop 有着高度的容错性。高度容错性是Hadoop 可以在通用硬件上运行的基础。

02 Yarn

Yarn 是继 Common、HDFS、MapReduce 之 后 Hadoop 的又一个子项目, 它是在MapReduceV2 中提出的。

在 Hadoop1.0 中,JobTracker 由资源管理器(由 TaskScheduler 模块实现)和作业控制 (由 JobTracker 中多个模块共同实现)两部分组成。

在 Hadoop1.0 中,JobTracker 没有将资源管理相关功能与应用程序相关功能拆分开,逐 渐成为集群的瓶颈,进而导致集群出现可扩展性变差、资源利用率下降以及多框架支持不 足等多方面的问题。

在 MapReduceV2 中,Yarn 负责管理 MapReduce 中的资源(内存、CPU 等)并且将其 打包成 Container。这样可以使 MapReduce 专注于它擅长的数据处理任务,而不需要考虑资源调度。这种松耦合的架构方式实现了 Hadoop 整体框架的灵活性。

03 Hive

Hive 是基于Hadoop 的数据仓库基础构架,它利用简单的 SQL 语句(简称 HQL)来查询、分析存储在 HDFS 中的数据,并把 SQL 语句转换成 MapReduce 程序来进行数据的处理。Hive与传统的关系型数据库的主要区别体现在以下几点。

  • 存储的位置, Hive 的数据存储在 HDFS 或者 HBase 中,而后者的数据一般存储在裸设备或者本地的文件系统中,由于 Hive 是基于 HDFS 构建的,那么依赖 HDFS 的容错特性,Hive 中的数据表天然具有冗余的特点。

  • 数据库更新, Hive 是不支持更新的,一般是一次写入多次读写(这部分从 Hive 0.14之后开始支持事务操作,但是约束比较多),但是由于 Hive 是基于 HDFS 作为底层存储的, 而 HDFS 的读写不支持事务特性,因此 Hive 的事务支持必然需要拆分数据文件以及日志文 件才能支持事务的特性。

  • 执行 SQL 的延迟,Hive 的延迟相对较高,因为每次执行都需要将 SQL 语句解析成MapReduce 程序。

  • 数据的规模上,Hive 一般是 TB 级别,而后者规模相对较小。

  • 可扩展性上,Hive 支持 UDF、UDAF、UDTF,后者相对来说可扩展性较差。

04 HBase

HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。它底层的文件系统使用 HDFS, 使用ZooKeeper 来管理集群的 HMaster 和各RegionServer 之间的通信,监控各RegionServer 的状态,存储各 Region 的入口地址等。

  1. 特点
    HBase 是 Key-Value 形式的数据库(类比 Java 中的 Map)。既然是数据库那肯定就有 表,HBase 中的表大概有以下几个特点。

1)大:一个表可以有上亿行,上百万列(列多时,插入变慢)。

2)面向列:面向列(族)的存储和权限控制,列(族)独立检索。

3)稀疏:对于空(null)的列,并不占用存储空间,因此,表可以设计得非常稀疏。

4)每个单元格中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入 时的时间戳。

5)HBase 中的数据都是字节,没有类型定义具体的数据对象(因为系统需要适应不同 类型的数据格式和数据源,不能预先严格定义模式)。

这里需要注意的是,HBase 也是基于 HDFS,所以也具有默认 3 个副本、数据冗余的特 点。此外 HBase 也是利用 WAL 的特点来保证数据读写的一致性。

  1. 存储
    HBase 采用列式存储方式进行数据的存储。传统的关系型数据库主要是采用行式存储 的方式进行数据的存储,数据读取的特点是按照行的粒度从磁盘上读取数据记录,然后根 据实际需要的字段数据进行处理,如果表的字段数量较多,但是需要处理的字段较少(特 别是聚合场景),由于行式存储的底层原理,仍然需要以行(全字段)的方式进行数据的查 询。在这个过程中,应用程序所产生的磁盘 I/O、内存要求以及网络 I/O 等都会造成一定的 浪费;而列式存储的数据读取方式主要是按照列的粒度进行数据的读取,这种按需读取的 方式减少了应用程序在数据查询时所产生的磁盘 I/O、内存要求以及网络 I/O。

此外,由于相同类型的数据被统一存储,因此在数据压缩的过程中压缩算法的选用以 及效率将会进一步加强,这也进一步降低了分布式计算中对于资源的要求。

列式存储的方式更适合 OLAP 型的应用场景,因为这类场景具有数据量较大以及查询字段较少(往往都是聚合类函数)的特点。例如最近比较火的 ClickHouse 也是使用列式存储的方式进行数据的存储。

05 Spark及Spark Streaming

Spark 由 Twitter 公司开发并开源,解决了海量数据流式分析的问题。Spark 首先将数据 导入 Spark 集群,然后通过基于内存的管理方式对数据进行快速扫描,通过迭代算法实现 全局 I/O 操作的最小化,达到提升整体处理性能的目的。这与 Hadoop 从“计算”找“数据” 的实现思路是类似的,通常适用于一次写入多次查询分析的场景。

Spark Streaming 是基于 Spark 的一个流式计算框架,它针对实时数据进行处理和控制, 并可以将计算之后的结果写入 HDFS。它与当下比较火的实时计算框架 Flink 类似,但是二者在本质上是有区别的,因为 Spark Streaming 是基于微批量(Micro-Batch)的方式进行数据处理,而非一行一行地进行数据处理。

关于作者

李杨,资深数据架构师,在数据相关领域有10年以上工作经验。头部保险资管公司科技平台交易系统团队开发组负责人,负责多个应用以及数据平台的建设、优化以及迁移工作。曾担任某数据公司技术合伙人,负责多个金融机构的数据仓库或数据平台相关的工作。《企业级数据架构:核心要素、架构模型、数据管理与平台搭建》作者。

本文摘编于《企业级数据架构:核心要素、架构模型、数据管理与平台搭建》作者。(书号:9787111746829),经出版方授权发布,转载请标明文章出处。

推荐理由

一部从企业架构视角系统讲解企业级数据架构的著作,系统梳理和阐述了企业架构的基础知识,以及数据架构的组成要素、架构模型、数据治理和数据资产管理的理论知识。
在这里插入图片描述

后记

本文详细介绍了Hadoop生态系统的三大核心部件:Hadoop分布式文件系统(HDFS)、Hadoop分布式计算框架(MapReduce)和Hadoop分布式存储和计算平台(YARN)。通过这三个部件的协作,Hadoop生态系统能够实现高效、可扩展的大数据处理和分析。

首先,我们了解了HDFS,它为海量数据的存储提供了可靠的解决方案。HDFS采用分布式存储的方式,将数据划分为块并在集群中进行分布存储,从而实现了数据的高可用性和高吞吐量。

其次,我们介绍了MapReduce框架。MapReduce是一种分布式计算模型,能够将大规模的数据分割成小块,并通过并行处理来提高计算速度。通过Map和Reduce两个阶段的任务分配和结果汇总,MapReduce能够有效地进行数据处理和分析。

最后,我们了解了YARN平台。YARN是Hadoop的资源管理系统,它负责集群中的资源调度和任务管理。YARN将计算和存储分离,使得Hadoop集群能够更好地适应不同类型的应用需求,并提高集群资源的利用率。

通过研究和理解Hadoop生态系统的这三大部件,我们可以更好地利用Hadoop生态系统来应对大数据挑战。无论是数据存储、计算还是资源管理,Hadoop生态系统提供了一套完整的解决方案,帮助企业和个人实现高效的大数据处理和分析。随着技术不断发展,Hadoop生态系统也在不断演进和壮大,为大数据行业的发展做出了巨大贡献。相信通过不断探索和实践,Hadoop生态系统将在未来的数据世界中发挥更加重要的作用。

赠书活动

🎁本次送书1~4本,【取决于阅读量,阅读量越多,送的越多】👈
⌛️活动时间:截止到2024年4月12日
✳️参与方式:关注博主+三连(点赞、收藏、评论)

转载自:https://blog.csdn.net/u014727709/article/details/137130937
欢迎 👍点赞✍评论⭐收藏,欢迎指正

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/783734.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】进程实践项目 —— 自主shell编写

送给大家一句话: 不管前方的路有多苦,只要走的方向正确,不管多么崎岖不平,都比站在原地更接近幸福。 —— 宫崎骏《千与千寻》 自主shell命令编写 1 前言2 项目实现2.1 创建命令行2.2 获取命令2.3 分割命令2.4 运行命令 3 源代码…

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo

非NVIDIA平台下的CUDA的替代方案OpenCL,第一步如何获取PlatformInfo、DeviceInfo 介绍 当谈到高性能计算,NVIDIA的CUDA框架无疑是一个强大的工具。OpenC(Open Computing Language)是一个更为通用的解决方案,或者你使用…

Vscode连接远程服务器中的docker容器进行开发

0.预安装 1.本地windows或其他环境中安装了Vscode,Vscode中安装了Remote-SSH拓展(用于利用SSH连接docker容器) 2.远程服务器中安装了docker,并且拉取了自己需要的镜像 3.有root权限,能使用sudo命令 1. 在服务器端启…

javaWeb项目-学生考勤管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JAVA技术 JavaSc…

蓝桥杯省赛刷题——题目 2656:刷题统计

刷题统计OJ链接:蓝桥杯2022年第十三届省赛真题-刷题统计 - C语言网 (dotcpp.com) 题目描述 小明决定从下周一开始努力刷题准备蓝桥杯竞赛。他计划周一至周五每天做 a 道题目,周六和周日每天做 b 道题目。请你帮小明计算,按照计划他将在第几…

MS Edge浏览器坏了?网页播放视频的速度不对

前言 小白是MS Edge浏览器的重度用户。电脑上必须有的两个浏览器:Google Chrome和Microsoft Edge。 前段时间小白在使用MS Edge的时候出了问题:播放视频或者音频的时候总是被莫名其妙加速或者减速,类似于播放视频时候的0.5x或者2.0x。 当时…

C++入门知识详细讲解

C入门知识详细讲解 1. C简介1.1 什么是C1.2 C的发展史1.3. C的重要性1.3.1 语言的使用广泛度1.3.2 在工作领域 2. C基本语法知识2.1. C关键字(C98)2.2. 命名空间2.2 命名空间使用2.2 命名空间使用 2.3. C输入&输出2.4. 缺省参数2.4.1 缺省参数概念2.4.2 缺省参数分类 2.5. …

Abaqus周期性边界代表体单元Random Sphere RVE 3D (Mesh)插件

插件介绍 Random Sphere RVE 3D (Mesh) - AbyssFish 插件可在Abaqus生成三维具备周期性边界条件(Periodic Boundary Conditions, PBC)的随机球体骨料及骨料-水泥界面过渡区(Interfacial Transition Zone, ITZ)模型。即采用周期性代表性体积单元法(Periodic Representative Vol…

python distribute是什么

Python的包管理工具常见的有easy_install, setuptools, 还有pip, distribute,那麽这几个工具有什么关系呢,看一下下面这个图就明白了: 可以看到distribute是setuptools的替代方案,pip是easy_install的替代方案。 Distribute提供一…

【QT学习】2.补充:connect中的lambda表达式

一.简单实例&#xff1a; 1.实例要求 点击按钮&#xff0c;实现 >o<与#-#的转换。 2.步骤 补充&#xff1a;​​​​​​​ 1.如果我想在lambda中修改数据&#xff0c;怎么办&#xff1f; 写上mutable就行。

vue基础教程(5)——构建项目级登录页

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、创建首页二、登录页代码讲解三、对应的vue知识点&#xff1a;四、附件-各文件代码总结 前言 前面我们已经把vue自带的页面删除&#xff0c;也搭建了最简单的router路由&#xff0c;下面就可以真正开发我们自己的项目…

【独立开发前线】Vol.29 专注于电子邮件签名,也可以依靠SEO年入70万美元

今天要给大家分享的案例是MySignature&#xff0c;一个专注于电子邮件签名的产品&#xff1b; 它的官网是&#xff1a;MySignature: Free Email Signature Generator 提到电子邮件签名&#xff0c;很多人想到的肯定是“那不是电子邮件结尾的几行图文介绍吗&#xff0c;这也能做…

ZNC3罗德与施瓦茨ZNC3网络分析仪

181/2461/8938产品概述&#xff1a; 罗德与施瓦茨 ZNC3 网络分析仪的工作频率范围为 9 kHz 至 3 GHz&#xff0c;面向移动无线电和电子产品行业的应用。它具有双向测试装置&#xff0c;用于测量有源和无源 DUT 的所有四个 S 参数。此外&#xff0c;它还提供适合开发和生产中各…

最新2024年增强现实(AR)营销指南(完整版)

AR营销是新的最好的东西&#xff0c;就像元宇宙和VR营销一样。利用AR技术开展营销活动可以带来广泛的利润优势。更不用说&#xff0c;客户也喜欢AR营销&#xff01; 如果企业使用AR&#xff0c;71%的买家会更多地购物。40%的购物者准备在他们可以在AR定制的产品上花更多的钱。…

【Linux】详解文件系统以及周边知识

一、磁盘的基本知识 磁盘中可以被划分成一个一个的环&#xff0c;每个环都是一个磁道。每个磁道又可以被均分成一个一个的扇区&#xff0c;扇区是磁盘IO的基本单位&#xff08;想要修改扇区中的一个比特位就必须把该扇区的全部比特位都加载到内存中&#xff09;。磁盘中的盘面&…

【Linux】详解软硬链接

一、软硬链接的建立方法 1.1软链接的建立 假设在当前目录下有一个test.txt文件&#xff0c;要对其建立软链接&#xff0c;做法如下&#xff1a; ln就是link的意思&#xff0c;-s表示软链接&#xff0c;test.txt要建立软链接的文件名&#xff0c;后面跟上要建立的软链接文件名…

魔改一个过游戏保护的CE

csdn审核不通过 网易云课堂有配套的免费视频 int0x3 - 主页 文章都传到github了 Notes/外挂/魔改CE at master MrXiao7/Notes GitHub 为什么要编译自己的CE 在游戏逆向的过程中&#xff0c;很多游戏有保护&#xff0c;我们运行原版CE的时候会被检测到 比如我们开着CE运…

MySQL数据库MHA高可用集群

前言 MySQL 数据库 MHA&#xff08;Master High Availability&#xff09;高可用集群是一种用于提高 MySQL 数据库可用性的解决方案。它通过自动故障切换和监控来确保数据库系统在主服务器发生故障时能够快速切换到备用服务器&#xff1b;在 MHA 高可用集群中&#xff0c;Mast…

单细胞分析|映射和注释查询数据集

reference映射简介 在本文中&#xff0c;我们首先构建一个reference&#xff0c;然后演示如何利用该reference来注释新的查询数据集。生成后&#xff0c;该reference可用于通过cell类型标签传输和将查询cell投影到reference UMAP 等任务来分析其他查询数据集。值得注意的是&…

2024年 前端JavaScript 进阶 第2天 笔记

2.1-内容和创建对象方式 2.2-164-构造函数 2.3-new实例化执行过程 2.4-实例成员和静态成员 2.5-基本包装类型 2.6-0bject静态方法 2.7-数组reduce累计方法 对象数组 加0 2.7-数组find、every和转换为真 --说明手册文档 MDN Web Docs 2.8-字符串常见方法 2.3 String 1.常见实例…