阿里巴巴飞天大数据架构体系与Hadoop生态系统

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: 先说Hadoop 什么是Hadoop? Hadoop是一个开源、高可靠、可扩展的分布式大数据计算框架系统,主要用来解决海量数据的存储、分析、分布式资源调度等。Hadoop最大的优点就是能够提供并行计算,充分利用集群的威力进行高速运算和存储。

很多人问阿里的飞天大数据平台、云梯2、MaxCompute、实时计算到底是什么,和自建Hadoop平台有什么区别。

先说Hadoop

什么是Hadoop?
Hadoop是一个开源、高可靠、可扩展的分布式大数据计算框架系统,主要用来解决海量数据的存储、分析、分布式资源调度等。Hadoop最大的优点就是能够提供并行计算,充分利用集群的威力进行高速运算和存储。

Hadoop的核心有两大板块:HDFS和MapReduce。

HDFS全称Hadoop Distributed File System,是一种分布式文件存储系统。分布式文件系统是指将固定于某个地点的某个文件系统,扩展到任意多个文件系统,众多的节点组成一个文件系统网络。每个节点可以分布在不同的地点,通过网络进行节点间的通信和数据传输。人们在使用分布式文件系统时,无需关心数据是存储在哪个节点上、或者是从哪个节点获取的,只需要像使用本地文件系统一样管理和存储文件系统中的数据。HDFS有着高容错性,可以部署在低廉的硬件;提供高吞吐量来访问应用程序的数据;可以有效解决超大数据量存储和管理难题的分布式文件系统属性的特点。因此HDFS天然适合有着超大数据集的应用程序,或者说本身就是为超大规模数据量处理的应用程序而设计的。

MapReduce是一个分布式离线并行计算框架,能够对大数据集进行并行处理。MapReduce就是将一个超大规模计算量的任务或者说数据量分割成无数小的计算任务与计算文件,然后再将计算结果进行合并的过程。MapReduce主要分为Map和Reduce两个阶段。Map是计算阶段,计算足够小的计算任务。Reduce是汇总阶段,将map阶段的计算结果汇总合并起来。

Hadoop的初始版本或者说核心就是这两大板块:HDFS为海量数据提供了存储,而MapReduce为海量数据提供了计算框架。

Hadoop的历史

1998年9月4日,Google公司在美国硅谷成立。

与此同时,一位名叫Doug Cutting的美国工程师,也迷上了搜索引擎。他做了一个用于文本搜索的函数库,命名为Lucene。Lucene是用JAVA写成的,因为好用而且开源,非常受程序员们的欢迎。

2001年底,Lucene成为Apache软件基金会jakarta项目的一个子项目。

2004年,Doug Cutting在Lucene的基础上和Apache开源伙伴Mike Cafarella合作开发了一款开源搜索引擎,命名为Nutch。Nutch是一个建立在Lucene核心之上的网页搜索应用程序,类似于Google。

随着时间的推移,互联网发展迅速,数据量暴增,搜索引擎需要检索的对象的数据量也在不断增大。尤其是Google,需要不断优化自己的搜索算法,提升搜索效率。在这个过程中Google提出了不少的新方法与思路。

2003年,Google发表了一篇技术学术论文,公开了自己的谷歌文件系统GFS(Google File System)。这是Google公司为了存储海量搜索数据而设计的专用文件系统。

第二年,2004年,Doug Cutting基于Google的GFS论文,实现了分布式文件存储系统,并将它命名为NDFS(Nutch Distributed File System)。

2004年,Google又发表了一篇技术学术论文,公开了自己的MapReduce编程模型。MapReduce用于大规模数据集的并行分析运算。

第二年,2005年,Doug Cutting又基于MapReduce,在Nutch搜索引擎实现了大规模数据集的并行分析运算。

2006年,Doug Cutting将NDFS和MapReduce进行了升级改造,并重新命名为Hadoop。NDFS也改名为HDFS(Hadoop Distributed File System)。

此后,大名鼎鼎的大数据框架系统——Hadoop诞生。而Doug Cutting也被人们称为Hadoop之父。

所以说Hadoop的核心就两大部分:为大数据提供存储的HDFS和为大数据计算的MapReduce。

 20190908204146662

HDFS与MapReduce的核心工作原理

HDFS

HDFS主要有两个角色:NameNode、DataNode和Client。

NameNode是HDFS的守护程序,也是是Master节点,主节点。NameNode中会存储文件的元数据信息,记录文件是如何分割成数据块的,以及这些数据块被存储到哪些节点上,可以对内存和I/O进行集中管理。NameNode单点在发生故障时将使集群崩溃。

DataNode是Slave节点,从节点。DataNode负责把HDFS数据块读写到本地文件系统,是真正存储文件的节点。一个文件会被切割成一个或者多个block块,这些block块会被存储在一系列的DataNode节点中,并且每一个块可能会在多个DataNode上存在备份。

Client:用户与HDFS的桥梁。主要用于切分用户提交的文件,与NameNode交互,获得文件位置信息。然后直接与DataNode交互,读取和写入数据。

HDFS写入流程(参考的现有文档):

1、用户向Client(客户机)提出请求。例如,需要写入200MB的数据。

2、Client制定计划:将数据按照64MB为块,进行切割;所有的块都保存三份。

3、Client将大文件切分成块(block)。

4、针对第一个块,Client告诉NameNode(主控节点),请帮助我,将64MB的块复制三份。

5、NameNode告诉Client三个DataNode(数据节点)的地址,并且将它们根据到Client的距离,进行了排序。

6、Client把数据和清单发给第一个DataNode。

7、第一个DataNode将数据复制给第二个DataNode。

8、第二个DataNode将数据复制给第三个DataNode。

9、如果某一个块的所有数据都已写入,就会向NameNode反馈已完成。

10、对第二个Block,也进行相同的操作。

11、所有Block都完成后,关闭文件。NameNode会将数据持久化到磁盘上。

 

HDFS读取流程:

1、用户向Client提出读取请求。

2、Client向NameNode请求这个文件的所有信息。

3、NameNode将给Client这个文件的块列表,以及存储各个块的数据节点清单(按照和客户端的距离排序)。

4、Client从距离最近的数据节点下载所需的块。

 

MapReduce

MapReduce主要也有两个角色:JobTracker和TaskTracker。

 JobTracker,类似于 NameNode。JobTracker是 Hadoop 集群中惟一负责控制 MapReduce应用程序的系统,位于Master节点上。在用户计算作业的应用程序提交之后,JobTracker决定有哪些文件参与处理,使用文件块信息确定如何创建其他 TaskTracker 从属任务,同时监控task并且于不同的节点上重启失败的task。TaskTracker位于slave从节点上与dataNode结合管理各自节点上由jobtracker分配的task,每个节点只有一个tasktracker,但一个tasktracker可以启动多个JVM,用于并行执行map或reduce任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。

(实际上MapReduce计算逻辑非常复杂,以上只是简化描述)

 

HDFS和MapReduce的组合只是Hadoop的1.0版本,这个版本有一些比较大的缺陷:

1、可伸缩性问题:JobTracker负载较重,JobTracker 必须不断跟踪数千个 TaskTracker、数百个作业,以及数万个 map 和 reduce 任务。相反,TaskTracker 通常只运行十来个任务。JobTracker存在单点故障,成为性能瓶颈。

2、可靠性差,NameNode只有一个,万一挂掉,整个系统就会崩溃。

为了解决一些问题,2012年5月,Hadoop推出了 2.0版本 。

2.0版本中,在HDFS与MapReduce之间,增加了YARN资源管理框架层。

 20190908204201288

YARN全称Yet Another Resource Negotiator是一个资源管理模块,负责整个集群资源的管理和调度,例如对每个作业,分配CPU,内存等等,都由yarn来管理。它的特点是扩展性,容错性,多框架资源统一调度。区别于hadoop1.0只支持MapReduce作业,yarn之上可以运行不同类型的作业。很多应用都可以运行在yarn之上,由yarn统一进行调度。

YARN的运行原理:

YARN的一个基本思想是讲资源管理和作业调度/监视的功能分解为独立的守护进程。其思想是有一个全局的ResourceManager (RM) 和每一个应用的ApplicationMaster (AM)。一个应用可以是单个的job,也可以是一组job。

YARN框架由ResourceManager节点和NodeManager组成。ResourceManager具有着应用系统中资源分配的最终权威。NodeManager是每台机器的一个框架代理,监控每台机器的资源使用情况(cpu、内存、磁盘、网络),同时上报给ResourceManager。每一个应用的ApplicationMaster是一个框架特定的库,它的任务是向ResourceManager协调资源并与NodeManager一起执行监视任务。

从流程上来说:当用户提交了一个计算任务,ResourceManager首先会在一个NodeManager为这个任务生成一个ApplicationMaster作为任务的管理者,ApplicationMaster向ResourceManager申请所需要的资源,ResourceManager会告诉NodeManager分配资源,NodeManager分配资源来供任务进行计算。NodeManager在不断的向ResourceManager汇报资源使用情况。

其实MapReduce与HDFS并不是一定要互相耦合工作的,两个都可以彼此独立工作,MapReduce也可以连接本地文件服务来进行计算,但是他们互相配合的时候才能发挥出最大的能力。

 

大数据架构体系——Hadoop生态系统

目前业界内最流行的大数据架构体系就是Hadoop的生态系统。目前,包括Yahoo、IBM、Facebook、亚马逊、阿里巴巴、华为、百度、腾讯等公司,都采用Hadoop构建自己的大数据系统,当然,是在Hadoop的基础上进行二次开发。

Hadoop生态系统是指以大数据分布式存储(HDFS),分布式计算(MapReduce)和资源调度(YARN)为基础联合其他各种组件在内的一整套软件。Hadoop生态系统的每一个子系统只解决某一个特定的问题域。不是一个全能系统,而是多个小而精的系统。

 20190908204224516

在这之前有个插曲:

2006年,Google又发论文了。这次,Google介绍了自己的BigTable,一种分布式数据存储系统,用来处理海量数据的非关系型数据库。

于是Doug Cutting在自己的Hadoop系统里面又引入了BigTable,并命名为HBase。

简单介绍Hadoop生态系统的主要构成组件:

HDFS: 基础的文件系统,Hadoop分布式文件系统

MapReduce:并行计算框架,运行在Yarn之上

HBase: 类似Google BigTable的分布式NoSQL列分布式数据库。适用于实时快速查询的场景。

Hive:数据仓库工具。处理的是海量结构化日志数据的统计问题。可以将结构化的数据文件映射为一张数据库表,通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

Zookeeper:分布式协调服务,“动物园管理员”角色,是一个对集群服务进行管理的框架,主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度。

Pig: 一个基于Hadoop的大规模数据分析工具,该语言的编译器会把类SQL的数据分析请求转换为一系列经过优化处理的MapReduce运算。

Sqoop:在Hadoop与传统的数据库间进行数据的传递。

Mahout:一个可扩展的机器学习和数据挖掘库,实现了很多数据挖掘的经典算法,帮助用户很方便地创建应用程序。

Oozie/Azkaban:一个工作流调度引擎,用来处理具有依赖关系的作业调度。

Presto/Kylin:一个交互式的查询引擎,实现低延时查询。

Flume:日志收集框架。将多种应用服务器上的日志,统一收集到HDFS上,这样就可以使用hadoop进行处理。

JanusGraph/GraphX:一个分布式图数据库的查询引擎,类似单机Neo4j,分别用于在线和离线场景。

对于大数据领域最早的应用者阿里巴巴对大数据的研究是一直走在前列的。感兴趣的用户可以看看一本书:《阿里巴巴大数据之路》书中很详细的介绍了阿里巴巴的整体大数据架构。

阿里巴巴飞天大数据平台是在开源Hadoop的基础上自研的一套体系,这种Serverless大数据服务成为当下主流趋势,可以减少企业本地服务器部署压力,显著提升企业工作效率的同时减少了企业在开发和人力方面的成本投入,让企业能更专注于业务发展,培养更多面向业务的技术人员。

6F86F87B_A3A5_406B_90F9_BEEABDBEF4C1_8632_000008C36172100F

7月25日,阿里云飞天大数据平台亮相阿里云峰会上海站,拥有中国唯一自主研发的计算引擎,是全球集群规模最大的计算平台,最大可扩展至10万台计算集群,支撑海量数据存储和计算。

MaxCompute__1908_yinlin

阿里巴巴飞天大数据架构体系的主要组件/产品介绍:

MaxCompute(ODPS) :阿里云大数据计算服务,它能提供快速、完全托管的PB级数据仓库解决方案,使您可以经济并高效的分析处理海量数据。https://www.aliyun.com/product/odps

Realtime Compute:实时计算(Alibaba Cloud Realtime Compute,Powered by Ververica)是阿里云提供的基于 Apache Flink 构建的企业级大数据计算平台。在 PB 级别的数据集上可以支持亚秒级别的处理延时,赋能用户标准实时数据处理流程和行业解决方案;支持 Datastream API 作业开发,提供了批流统一的 Flink SQL,简化 BI 场景下的开发;可与用户已使用的大数据组件无缝对接,更多增值特性助力企业实时化转型。https://data.aliyun.com/product/sc

GraphCompute:支持千亿规模(关系网络)图的可视化建模、自动并行化Gremlin毫秒级查询和自定义算法的一站式图分析平台。

Elasticsearch:提供100%兼容开源Elasticsearch的功能,以及Security、Machine Learning、Graph、APM等商业功能,致力于数据分析、数据搜索等场景服务。与开源社区背后商业公司Elastic战略合作,为客户提供企业级权限管控、安全监控告警、自动报表生成等场景服务。https://data.aliyun.com/product/elasticsearch

OpenSearch:开放搜索(OpenSearch)是阿里巴巴自主研发的大规模分布式搜索引擎平台,其核心引擎HA3(问天3)系统为包括淘宝、天猫在内的阿里集团核心业务提供搜索服务支持。通过集成智能查询语义理解、机器学习排序算法等能力,旨在为企业提供高搜索质量的一站式内容智能搜索服务。https://www.aliyun.com/product/opensearch

DataX (CDP):阿里云数据集成(Data Integration)是阿里集团对外提供的可跨异构数据存储系统的、可靠、安全、低成本、可弹性扩展的数据同步平台,为400对数据源提供不同网络环境下的全量/增量数据进出通道。https://www.aliyun.com/product/cdp

Hologres:阿里云交互式分析(Hologres)是一款兼容PostgreSQL协议的实时交互式分析产品。交互式分析与大数据生态无缝打通,支持对PB级数据进行高并发、低延时的分析处理,让您轻松而经济地使用现有BI工具对数据进行多维分析透视和业务探索。https://www.aliyun.com/product/hologram

机器学习:阿里云机器学习平台PAI(Platform of Artificial Intelligence),为传统机器学习和深度学习提供了从数据处理、模型训练、服务部署到预测的一站式服务。https://data.aliyun.com/product/learn

智能推荐:(Artificial Intelligence Recommendation,简称AIRec)基于阿里巴巴领先的大数据和人工智能技术,结合在电商、内容、新闻、视频直播和社交等多个行业领域的积累,为全球企业及开发者提供个性化推荐服务。https://www.aliyun.com/product/airec

Dataworks(D2):DataWorks是一个提供了大数据OS能力、并以all in one box的方式提供专业高效、安全可靠的一站式大数据智能云研发平台。 同时能满足用户对数据治理、质量管理需求,赋予用户对外提供数据服务的能力。https://data.aliyun.com/product/ide

DQC:数据质量是支持多种异构数据源的质量校验、通知、管理服务的一站式平台。数据质量依托DataWorks平台,为您提供全链路的数据质量方案,包括数据探查、数据对比、数据质量监控、SQL扫描和智能报警等功能。数据质量监控可以全程监控数据加工流水线,根据质量规则及时发现问题,并通过报警通知负责人及时处理。https://help.aliyun.com/document_detail/73660.html

TableStore:表格存储(TableStore)是阿里云自研的面向海量结构化数据存储的Serverless NoSQL多模型数据库,被广泛用于社交、物联网、人工智能、元数据和大数据等业务场景。提供兼容HBase的WideColumn模型、消息模型Timeline以及时空模型Timestream,可提供PB级存储、千万TPS以及毫秒级延迟的服务能力。https://www.aliyun.com/product/ots

Apsara Core :阿里巴巴大数据计算平台MaxCompute计算层(飞天内核);https://baike.baidu.com/item/%E9%A3%9E%E5%A4%A9/19964003

伏羲:阿里云飞天大数据系统内核的分布式资源调度系统;https://yq.aliyun.com/articles/66954

女娲:阿里云飞天大数据系统内核的分布式一致性协同服务系统;https://yq.aliyun.com/articles/65226

盘古:阿里云飞天大数据系统内核的分布式文件储存系统;https://yq.aliyun.com/articles/64374

————————————————
版权声明:本文为CSDN博主「wwdede」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wwdede/article/details/100637928

欢迎加入“MaxCompute开发者社区2群”,点击链接申请加入或扫描二维码
https://h5.dingtalk.com/invite-page/index.html?bizSource=____source____&corpId=dingb682fb31ec15e09f35c2f4657eb6378f&inviterUid=E3F28CD2308408A8&encodeDeptId=0054DC2B53AFE745
image

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
1月前
|
大数据
【赵渝强老师】大数据主从架构的单点故障
大数据体系架构中,核心组件采用主从架构,存在单点故障问题。为提高系统可用性,需实现高可用(HA)架构,通常借助ZooKeeper来实现。ZooKeeper提供配置维护、分布式同步等功能,确保集群稳定运行。下图展示了基于ZooKeeper的HDFS HA架构。
|
3天前
|
存储 SQL 分布式计算
大数据时代的引擎:大数据架构随记
大数据架构通常分为四层:数据采集层、数据存储层、数据计算层和数据应用层。数据采集层负责从各种源采集、清洗和转换数据,常用技术包括Flume、Sqoop和Logstash+Filebeat。数据存储层管理数据的持久性和组织,常用技术有Hadoop HDFS、HBase和Elasticsearch。数据计算层处理大规模数据集,支持离线和在线计算,如Spark SQL、Flink等。数据应用层将结果可视化或提供给第三方应用,常用工具为Tableau、Zeppelin和Superset。
55 8
|
3天前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
30 4
|
1月前
|
SQL 数据采集 分布式计算
【赵渝强老师】基于大数据组件的平台架构
本文介绍了大数据平台的总体架构及各层的功能。大数据平台架构分为五层:数据源层、数据采集层、大数据平台层、数据仓库层和应用层。其中,大数据平台层为核心,负责数据的存储和计算,支持离线和实时数据处理。数据仓库层则基于大数据平台构建数据模型,应用层则利用这些模型实现具体的应用场景。文中还提供了Lambda和Kappa架构的视频讲解。
172 3
【赵渝强老师】基于大数据组件的平台架构
|
3天前
|
存储 负载均衡 监控
揭秘 Elasticsearch 集群架构,解锁大数据处理神器
Elasticsearch 是一个强大的分布式搜索和分析引擎,广泛应用于大数据处理、实时搜索和分析。本文深入探讨了 Elasticsearch 集群的架构和特性,包括高可用性和负载均衡,以及主节点、数据节点、协调节点和 Ingest 节点的角色和功能。
13 0
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
114 2
|
1月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
78 1
|
18天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
28天前
|
Cloud Native Devops 云计算
云计算的未来:云原生架构与微服务的革命####
【10月更文挑战第21天】 随着企业数字化转型的加速,云原生技术正迅速成为IT行业的新宠。本文深入探讨了云原生架构的核心理念、关键技术如容器化和微服务的优势,以及如何通过这些技术实现高效、灵活且可扩展的现代应用开发。我们将揭示云原生如何重塑软件开发流程,提升业务敏捷性,并探索其对企业IT架构的深远影响。 ####
42 3
|
1月前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####

相关产品

  • 云原生大数据计算服务 MaxCompute