阿里巴巴飞天大数据架构体系与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。

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资源管理框架层。

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生态系统的每一个子系统只解决某一个特定的问题域。不是一个全能系统,而是多个小而精的系统。

在这之前有个插曲:

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进行处理

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

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

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


原文链接
本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

Linux7/Redhat7/Centos7 安装Oracle 12C_配置VNC远程安装数据库_03

文章目录1. yum安装VNC2. 在线安装时钟3. VNC配置4. 重新加载5. 加入开机自启动6. 启动vncserver7. vnc测试1. yum安装VNC # 在线安装vnc yum install tigervnc-server2. 在线安装时钟 # 在线安装时钟为了测试远程连接oracle主服务器图形化 yum install xclock3. VNC配置 # …

对不起,我把APP也给爬了

来源 | 凹凸数据责编 | Carol封图 | CSDN 付费下载于视觉中国最近群里很多小伙伴对爬取手机App和小程序感兴趣,今天本厨师将给大家呈现这道菜,供小伙伴们品尝。相信大家都对爬虫有一定的了解,我们爬PC端时候可以打开F12去观察url的变化&#…

从踩坑到填坑|淘宝Web 3D应用与游戏开发实战

导读:本文是淘宝前端技术专家——徐乾伟(烧鹅)分享的淘宝 Web 3D 应用与游戏开发实战,这个话题在业界被谈及得比较少。今天将会从移动、3D、游戏三种交叉的话题来和大家探讨。接下来和小编一起从初试 Web 3D、使用 WebGL、工作流相…

Warning: Missing charsets in String to FontSet conversion

当出现Warning: Missing charsets in String to FontSet conversion时 输入export LANGC即可解决

sstableloader工具使用及原理解析

sstableloader是cassandra提供的bulkload工具&#xff0c;可以将sstable文件导入到集群中。本文详细介绍其用法和实现原理。 用法 sstableloader工具在cassandra的bin目录下面&#xff0c;用法如下&#xff1a; bin/sstableloader <options> <dir_path> 具体的…

什么是工程师文化?

作者 | 王尊&#xff0c;帷幄 Whale CTO责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;什么是工程师文化&#xff1f;这篇文章的契机&#xff0c;是在 Whale All Hands 上团队成员提出的问题基础上展开的。All Hands 后我在…

Linux7/Redhat7/Centos7 安装Oracle 12C_安装Oracle软件_04

文章目录一、安装准备1. 下载oracle12c2. 上传oracle12c3. 赋予权限4. vnc远程连接主机5. 解压5. 安装二、安装流程2.1. 邮箱设置2.2. 只安装数据库软件2.2. 单实例数据库安装2.3. 企业级数据库2.4. 校验依赖2.5. 依赖安装2.6. root执行脚本2.7. OK2.8. 完成安装一、安装准备 …

从校招生到核心架构师,支付宝研究员李俊奎谈如何成为一名优秀的程序员

校招进入支付宝&#xff0c;11年时间&#xff0c;从一线工程师成长为支付宝安全核心架构师&#xff0c;这个技术牛人就是李俊奎。 李俊奎一直聚焦风控平台的技术和架构发展&#xff0c;并着手搭建了中国第一家云上的商业银行——网商银行。 在2016年双11和新春红包等活动中&a…

在 Apache Spark 中利用 HyperLogLog 函数实现高级分析

在 Apache Spark 中利用 HyperLogLog 函数实现高级分析 预聚合是高性能分析中的常用技术&#xff0c;例如&#xff0c;每小时100亿条的网站访问数据可以通过对常用的查询纬度进行聚合&#xff0c;被降低到1000万条访问统计&#xff0c;这样就能降低1000倍的数据处理量&#xf…

华为智能IP网络,加速联接智能化转型

[中国&#xff0c;深圳&#xff0c;2020年5月19日]在华为第17届全球分析师大会期间&#xff0c;华为“引领智能网络&#xff0c;加速联接智能化转型”峰会隆重召开&#xff0c;会上首次阐述了智能IP网络的三大特征——“智能超宽、智能联接、智能运维”&#xff0c;并分享智能I…

Linux7/Redhat7/Centos7 安装Oracle 12C_监听配置及DBCA安装数据库_05

文章目录一、监听配置二、创建数据库一、监听配置 # 切换到oracle用户 su - oracle# 启动监听图形化页面 netca二、创建数据库 dbca

Kubernetes-native 弹性分布式深度学习系统

9月11日&#xff0c;蚂蚁金服在 Google Developer Day Shanghai 2019 上宣布开源了基于 TensorFlow 2.0 eager execution 的分布式深度学习系统 ElasticDL。基于 TensorFlow 的支持弹性调度的深度学习系统&#xff0c;据我们所知&#xff0c;ElasticDL 是第一 个。项目负责人王…

递归(特别重要,小计算用)

递归&#xff08;特别重要,小计算用&#xff09; 递归就是&#xff1a;A方法调用B方法&#xff0c;就是自己调用自己。 利用递归可以简单的程序来解决一些复杂的问题。它通常把一个大型的问题层层转化为一个与原问题相似的规模较小的问题来求解&#xff0c;递归策略只需少量的…

达摩院送你100万,请坚持“看月亮”

首批青橙奖获奖者合影 30年前&#xff0c;随便走进一间中国的小学教室&#xff0c;问其中埋头苦读的孩子&#xff0c;长大以后要做什么&#xff1f; “做个科学家&#xff01;” 梦想改变世界的小娃娃眼神透亮&#xff0c;声音也透亮。 但少有人能够真正在成年之后&#xf…

深度剖析数据库国产化迁移之路

作者 | 吴夏&#xff0c;腾讯云 TDSQL 高级工程师责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;随着国家有关部门近年来陆续出台相关政策指导文件&#xff0c;推动探索安全可控的金融科技产品&#xff0c;加强银行业信息安…

常用排序算法总结

概述 在计算器科学与数学中&#xff0c;一个排序算法&#xff08;英语&#xff1a;Sorting algorithm&#xff09;是一种能将一串数据依照特定排序方式进行排列的一种算法。本文将总结几类常用的排序算法&#xff0c;包括冒泡排序、选择排序、插入排序、快速排序和归并排序&…

4. java——多态(java巅峰设计,超越了C++的理解,取其精华,去其糟粕)

多态指的是同—个行为具有多个不同表现形式 。是指—个类实例(对象&#xff09;的相同方法在不同情形下具有 不同表现形式。封装和继承是多态的基础&#xff0c;也就是说&#xff0c;多态只是—种表现形式而已。一个对象&#xff0c;同一个方法不同形态&#xff0c;方法必须重…

ETL异构数据源Datax_日期增量同步_13

文章目录一、全量同步1. 增量同步SQL2. 构建reader3. 构建writer4. 字段对应关系映射5. 构建json6. 选择同步模板7. 查询最早时间8. 修改任务信息9. 添加增量参数10. 数据清理11. 执行任务12. 查看执行日期13. 数据验证15. 查看同步脚本二、基于日期增量同步2.1. 新增新数据2.2…

如何使用 SQL Server FILESTREAM 存储非结构化数据?这篇文章告诉你!

作者 | ALEN İBRI译者 | 火火酱&#xff0c;责编 | Carol封图 | CSDN 付费下载于视觉中国 在本文中&#xff0c;我将解释如何使用SQL Server FILESTREAM来存储非结构化数据。同时&#xff0c;还会介绍FILESTREAM的优缺点。 在SQL Server的早期版本中&#xff0c;非结构化数据的…