⼤数据平台基础架构及解决⽅案
持续输出 敬请关注
大数据架构 湖仓一体化 流批一体 离线+实时数仓
各种大数据解决方案 各种大数据新技术实践
持续输出 敬请关注
第一篇 ⼤数据平台基础架构及解决⽅案
提示:基础架构重在基础平台选型,重在基础软件。
目录
1.1 ⼤数据架构发展历程
1.1.1 基础架构变迁史
1.1.1.1 前Hadoop时代(2003-2007)
1.1.1.2 后Hadoop时代(2008-2014)
1.1.1.3 Hadoop商业发⾏版时代( 2011-2020)
1.1.1.4 国产化开源发⾏版时代(2021开始)
1.1.1.5 总结
1.1.2 ⼤数据计算引擎技术变迁
1.1.2.1 ⼀代:离线处理引擎
1.1.2.2 ⼆代:⽀持DAG的计算引擎
1.1.2.3 三代:内置DAG的计算引擎
1.1.2.4 四代:统⼀计算引擎
1.1.3 流处理引擎变迁
1.1.3.1 ⼀代: Storm
1.1.3.2 ⼆代: Spark Streaming
1.1.3.3 三代: Flink
1.1.4 流处理技术横向对⽐
1.1.4.1 不同流派流处理技术对⽐
1.1.4.2 Flink VS Spark
1.2 常⻅Hadoop发⾏版
1.2.1 Apache原⽣版本
1.2.2 CDH+HDP=CDP
1.2.2.1 CDH的套路
1.2.2.2 HDP难逃⼀“死”
1.2.2.3 CDH+HDP=CDP
1.3 云原⽣套件
1.3.1 阿⾥云
1.3.2 腾讯云
1.3.3 百度云
1.3.4 华为云
1.4 Ambari + Bigtop Stack
【下一篇】新⼀代USDP开源套件
1.1 ⼤数据架构发展历程
1.1.1 基础架构变迁史
1.1.1.1 前Hadoop时代(2003-2007)
标志事件是⾕歌三⼤论⽂及Doug Cutting发布Hadoop、 HBase。这个时代的⼀些⼤事件如下:1998年9⽉4⽇, Google公司在美国硅⾕成⽴,以做搜索引擎起家。⼏乎是同⼀时期,美国有个名不⻅经传的⼯程师名叫Doug Cutting,他疯狂迷恋搜索引擎技术,于是他做了⼀个⽤于⽂本搜索的函数库(姑且理解为软件的功能组件),命名为Lucene。
Lucene是用Java写的,⽬标就是为各种中⼩型应⽤轻松加⼊全⽂检索的功能,因为开源⼜好⽤,因此⾮常受程序员欢迎。早期的时候,这个项⽬被发布在Doug Cutting的个⼈⽹站和SourceForge(⼀个开源软件⽹站)。 2001年底,Lucene成为了Apache软件基⾦会Jakarta项⽬的⼀个⼦项⽬(https://baike.baidu.com/item/Jakarta/15952232?fr=aladdin)。
2004年, Doug Cutting在Lucene的基础上开发⼀款当时可以媲美主流搜索引擎的开源搜索引擎,命名为Nutch。
Nutch基于Lucene实现全⽂检索,并增加了⽹络爬⾍和⼀些⽹⻚相关的功能,就像⾕歌搜索引擎⼀样。 Nutch的影响⼒甚⾄超过Luncene。
随着时间推移,⽆论⾕歌还是Nutch都⾯临海量数据的问题,尤其是⾕歌,作为互联⽹搜索引擎,需要存储⼤量⽹⻚,所以需要不断优化算法。在这个过程中⾕歌找到不少好办法,并以论⽂的形式⽆私分享出来。
2003年,也就是Nutch诞⽣的前⼀年,⾕歌发表技术论⽂,公开介绍了⾃⼰的⽂件系统GFS (Google File System),这就是⾕歌为存储海量搜索数据⽽设计的专⽤⽂件系统。
2004年, Doug Cutting基于⾕歌的GFS论⽂实现了分布式⽂件系统,取名NDFS( Nutch Distributed File System)。
还是2004年, Google发表学术论⽂,介绍⾃⼰的MapReduce编程模型,这个模型⽤于⼤规模分布式计算。
2005年, Doug Cutting基于MapReduce在Nutch中实现了该功能。
2006年, Yahoo公司招安了Doug Cutting。招安的背景是,雅⻁2004年之前⼀直使⽤⾕歌的搜索引擎作为⾃⼰的搜索服务, 2004年开始⾃研搜索引擎。
加盟Yahoo之后, Doug cutting将NDFS和MapReduce进⾏升级改造,重命名为Hadoop(他⼉⼦的⼀个玩具⼤象的名字)。
还是在2006年, Google⼜发论⽂了,这次介绍的是⾃⼰的BigTable,⼀种分布式的数据存储系统,⽤于存储海量数据的⾮关系型数据库。
Doug Cutting当然没放过,在⾃⼰的Hadoop系统基于BigTable的思想开发了HBase。
Doug Cutting后来成为了ASF理事,搜索引擎专家,任职Cloudera, 被誉为Hadoop之⽗。
1.1.1.2 后Hadoop时代(2008-2014)
后Hadoop时代以Hadoop、 Hive、 HBase为代表,各种⼤数据组件层出不穷。
标志性时间是Hadoop在2008年成功上位,成为Apache基⾦会顶级项⽬。同年, Facebook贡献Hive到开源社区。
2008年, Hadoop商业公司Cloudera成⽴,发布套件CDH。
2010年HBase成为顶级项⽬。
2012年, Yarn正式亮相。
2014年, Spark、 Flink、 Storm纷纷成为Apache顶级项⽬,流处理⼤⾏其道。
1.1.1.3 Hadoop商业发⾏版时代( 2011-2020)
2011年Hortonworks成⽴,开始跟Cloudera展开竞争,发布套件HDP。各种商业的云原⽣Hadoop套件也相继出现,主要是”四⼤云“:
1.1.1.4 国产化开源发⾏版时代(2021开始)
2018年Cloudera和Hortonworks公司宣布合并。
2020年2⽉, Cloudera宣布,从CDH 6.3.3版本开始,将不会再提供免费版。国内使⽤CDH和HDP的⼤部分公司,以后将⽆法再使⽤免费的午餐。
可喜的是, Ucloud团队发布了可以免费试⽤的Hadoop发⾏版。
1.1.1.5 总结
发展阶段 | 关键词 | 特点 |
前Hadoop时代 (2003-2007) |
三⼤论⽂、 DougCutting、 Hadoop |
萌芽阶段,谈不上架构 |
后Hadoop时代 (2008-2014) |
Hadoop、 HBase、 Hive、 Pig、 Sqoop等百花⻬放,眼花缭乱 |
各种组件层出不穷,相互之间的兼容性管理 混乱,使⽤者可选择性多,但是很乱 |
Hadoop商业发⾏版 时代( 2011-2020) |
商业发⾏版、 CDH、 HDP、 Mapr 等等,云原⽣套件出现 |
标准的发⾏版⼤⾏其道,提供免费版本,云 原⽣商业版如⽕如荼 |
国产化开源发⾏版时 代(2021开始) |
USDP |
标准发⾏版纷纷收费,国产化开源发⾏版势 在必⾏ |
1.1.2 ⼤数据计算引擎技术变迁
众所周知,在开源世界第⼀个流⾏的⼤数据处理引擎是Hadoop MapReduce。实际上经过这么多年的发展,⼤数据处理引擎已经发展到了第四代。
1.1.2.1 ⼀代:离线处理引擎
以Hadoop MapReduce为代表,采⽤分⽽治之的思想将计算分为两个阶段,分别为 Map 和 Reduce。 Hive严格意义上来说不能算是独⽴的计算引擎,它只是MapReduce的SQL引擎层,起到翻译SQL为MapReduce进⽽降低开发成本的作⽤。
Job拆分为Map 和 Reduce虽然解决了⼤数据计算的问题,但对于上层应⽤来说,就不得不想⽅设法去拆分算法,甚⾄不得不在上层应⽤实现多个 Job 的串联,以完成⼀个完整的算法,例如迭代计算。
1.1.2.2 ⼆代:⽀持DAG的计算引擎
DAG框架( Tez) + MapReduce为代表。 MapReduce逼着上层应⽤拆分算法的弊端催⽣了⽀持DAG计算框架的产⽣。因此,⽀持 DAG 的框架被划分为第⼆代计算引擎。如Tez+MapReduce ,或者多个MapReduce通过Oozie/Azkaban这些调度引擎来配置DAG 。弊端是⼤多还是批处理。
1.2.2.3三代:内置DAG的计算引擎
以 Spark 为代表的第三代的计算引擎的特点主要是 Job 内部的 DAG ⽀持(不跨越 Job),批处理、流处理、 SQL⾼层API⽀持,内存迭代计算、性能较之前⼤幅提升。
当然,Storm在整个计算引擎中也可以归到第三代,只不过它专注于流处理,内⽀持DAG。
1.2.2.4 四代:统⼀计算引擎
主要是Flink,这个“统⼀的引擎”包括流、批处理、机器学习、图计算等等。 Flink被归在了第四代主要表现在 Flink对流计算的⽀持更加完善,性能更⾼,尤其是窗⼝计算,状态和容错。当然 Flink 也可以⽀持 Batch 的任务,以及DAG 的运算。Spark随着⾃身发展,新的版本也出现了第四代的影⼦,甚⾄在机器学习算法库⽅⾯暂时⽐Flink还要领先。
1.1.3 流处理引擎变迁
如果单看流处理引擎,⽬前发展经过了三代:
1.1.3.1 ⼀代: Storm
第⼀个流⾏的流处理引擎是Apache Storm,它提供了低延迟的流处理,但是为了实时性牺牲了吞吐量,且很难原⽣实现exactly-once语义(恰好⼀次),需要借助外部组件相当⼤的开销才能保证正确级别。
1.1.3.2 ⼆代: Spark Streaming
在低延迟的同时保证⾼吞吐,还得保证正确性和容错性是⾮常困难的。很快⼈们想到⼀种折中的办法:将流处理中连续的事件流分割成微⼩的批处理作业(微批处理),只要分的⾜够⼩就可以接近流处理,借此实现秒级甚⾄亚秒级延迟。 Spark处理引擎在这个思路下推出了Spark Streaming,这就是第⼆代流处理引擎。
另外, Spark Streaming微批处理在容错⽅⾯有了进步,可以实现exactly-once语义。如果某⼀个微批处理job失败,它只需要重新计算这⼀⼩批数据即可,开销降低很多。
Storm Trident是对Storm的扩展和改进的产物,他也是微批处理引擎的代表,同样实现了exactly-once语义,延迟上也损伤不⼩。
Spark Streaming和Storm Trident的微批处理⽅案只能按照时间的倍数对事件进⾏切分,对于乱序、延迟敏感的作业需要开发者额外花费⼤量时间来处理,开发运维成本⾼。
1.1.3.3 三代: Flink
第三代流处理引擎Flink避免了前两代的弊端,兼具各家所⻓做到了:⾼吞吐+低延迟+⾼压⼒下的容错性+多语义窗⼝。
特别说明:分代各有各的⻅解,我觉得其实这并不重要,重要的是体会各个框架的差异,以及更适合的场景。技术⽆好坏,没有银弹可以覆盖所有场景,就像Spark 没有完全取代Hadoop,当然 Flink也不可能完全取代 Spark,它们都将在各⾃适合的场景发挥更加的价值。
1.1.4 流处理技术横向对⽐
1.4.1.1 不同流派流处理技术对⽐
在⽐较Flink和Spark两⼤巨头之前,先把不同流派的流处理技术做⼀个对⽐:
1.4.1.2 Flink VS Spark
(1)API对比
(2)⽣态系统对比
⽣态系统上Flink已经追上了Spark。
(3)运⾏时环境对比
运⾏时环境⼆者处于伯仲之间。
(4)社区⽀持对比
Spark 社区在规模和活跃程度上都是领先的,毕竟多了⼏年发展时间,同时背后的商业公司Databricks由于本⼟优势使得Spark在美国的影响⼒明显优于Flink。
⽽Flink作为⼀个德国公司, Data Artisans 想在美国扩⼤影响⼒要更难⼀些。不过 Flink 社区也有⼀批稳定的⽀持者,达到了可持续发展的规模。
在中国情况可能会稍有不⼀样。⽐起美国公司,中国公司做事情速度更快,更愿意尝试新技术。中国的⼀些创新场景也对实时性有更⾼的需求。这些都对 Flink 更友好⼀些。尤其是Flink收购Flink⺟公司Data Artisans之后,对Flink的社区⽀持⼒度不断加⼤。
(5)对⽐结论
Spark 和 Flink 都是通⽤的开源⼤规模处理引擎,⽬标是在⼀个系统中⽀持所有的数据处理以带来效能的提升。
两者都有相对⽐较成熟的⽣态系统。是下⼀代⼤数据引擎最有⼒的竞争者。
Spark 的⽣态总体更完善⼀些,在机器学习的集成和易⽤性上暂时领先。
Flink 在流计算上有明显优势,核⼼架构和模型也更透彻和灵活⼀些。
没有谁强谁弱,只有哪个更适合当前的场景以及⼿头可⽤的开发资源。
1.2 常⻅Hadoop发⾏版
注意:这⾥的Hadoop的是⼴义的Hadoop,代表整个⼤数据基础平台。
1.2.1 Apache原⽣版本
Hadoop⽣态的组件绝⼤部分都是Apache开源项⽬,各⾃都有⾃⼰的开发者群体在维护,因此在版本相互之间的兼容性⽅⾯很难把控。
1.2.2 CDH+HDP=CDP
1.2.2.1 CDH的套路
在今年2⽉份的时候, Cloudera宣布,从CDH 6.3.3版本开始,将不会再提供免费(Cloudera Express):https://community.cloudera.com/t5/ProductAnnouncements/ANNOUNCE-Cloudera-Enterprise-6-3-3-Released/td-p/289016
其实现在来看,完全就是⼀个温⽔煮⻘蛙的过程,我们看⼀下他的套路:免费版不限制节点数量 -> CDH 6.x 免费版限制节点数量 -> CDH 6.3.3 没有免费版,只能试⽤90天,最终就是要花钱。
1.2.2.2 HDP难逃⼀“死”
另⼀个免费午餐, Hortonworks 的 HDP,在 Cloudera 和 Hortonworks 合并之后,恐怕是危矣,虽然⽬前没有什么确切的消息指明 HDP 的更新⼀定会停⽌,但事实上现在所有指向 HDP 的官⽅链接,都在⽆时⽆刻的向你推销,告诉你赶紧升级到 CDP。
从商业的⻆度看,合并之后如果还继续更新 HDP,是增加内耗,毕竟本来就是为了报团取暖才进⾏的合并。
1.2.2.3 CDH+HDP=CDP
Cloudera 和 Hortonworks 合并之后推出的产品,上来就是收费的。
1.3 云原⽣套件
1.3.1 阿⾥云
1.3.2 腾讯云
1.3.3 百度云
1.3.4 华为云
1.4 Ambari + Bigtop Stack
Apache Ambari⼤家都⽐较熟悉,作为 Hortonworks 贡献给社区的项⽬, HDP虽然没了,但是Ambari 是Apache的,不可能收费,所以完全可以使⽤Ambari 降低了集群的安装、部署、运维的难度,且可以 扩展Ambari去⽀持更多的组件。
什么是 Stack 呢?实际上就是⼀组预定义好的组件服务和命令脚本的集合。⽽ Apache Ambari 和 Cloudera Manager ⼀样,都属于⼀个“管理界⾯⼯具”,在 Apache Ambari 的架构中,实际上 Ambari Stack 是完全可以将HDP Stack 替换为第三⽅提供的 Stack,或者是你⾃⼰定义的 Stack 的。
⾃⼰定义的 Stack是⾮常难的, Hadoop ⽣态圈的项⽬众多,各种编译依赖⼜特别复杂,并且不同组件版本之间还有乱作⼀团麻的版本兼容性问题,如果你再考虑到⽬标硬件平台的话,个⼈开发者肯定是没有办法从头去构建⼀个⾃定义的 Stack 的。
这个时候就需要使⽤到 Apache BigTop ( https://bigtop.apache.org/)了。
【下一篇】大开眼界,新⼀代USDP开源套件
⼤数据平台基础架构及解决⽅案相关推荐
- 大数据平台基础架构指南
之前的文章,整理了一下,补充了一些内容,做了一些更新,现已出版上市了.无耻的推广一下哈 :) 淘宝,JD都有现货,Amazon,搜书名 < 大数据平台基础架构指南 > 链接:https:/ ...
- 【珍藏版】⼤数据中台架构及解决⽅案
持续输出 敬请关注 大数据架构 湖仓一体化 流批一体 离线+实时数仓 各种大数据解决方案 各种大数据新技术实践 持续输出 敬请关注 ⼤数据平台基础架构及解决⽅案_大数据研习社的博客-CSDN ...
- 数据中心基础架构 22 年演进
01 前言 当今世界正处在信息技术(IT)创新的黄金时代.由机器学习.物联网和大规模可扩展应用支持的云计算.移动应用.大数据分析的巨大力量正在重塑商业和社会的方方面面.而这场IT复兴的中心,则是超大规 ...
- 深度解密京东登月平台基础架构
近日,京东发布登月机器学习平台,并在京东云上线,正式对外提供人工智能服务.登月机器学习平台的上线代表着京东人工智能技术从应用级服务到基础算法的全面对外开放,实践着京东RaaS(零售即服务)的发展策略. ...
- 京东登月平台基础架构技术解析
本文转自公众号:京东大数据<深度解密京东登月平台基础架构>. 近日,京东发布登月机器学习平台,并在京东云上线,正式对外提供人工智能服务.登月机器学习平台的上线代表着京东人工智能技术从应用级 ...
- 腾讯公司数据平台高级架构师 郭玮:TDW在Hadoop上的实践分享
腾讯是一个巨无霸公司,我们日常的生活中已与它产生了千丝万缕的联系,不可避免的也产生了海量的数据,如何正确而快速地处理这些海量数据,腾讯数据平台高级架构师郭玮通过发表主题为"TDW在Hadoo ...
- 【SDCC讲师专访】吕毅:链家网大数据平台的架构演进
2016年11月18日-20日,由CSDN重磅打造的年终技术盛会,SDCC 2016中国软件开发者大会将在北京举行,大会面向国内外的中高端技术人员,聚焦最前沿技术及一线的实践经验,从而助力企业的技术升 ...
- 移动大数据平台的架构、实践与数据增值(1)
转转:感谢分享http://developer.51cto.com/art/201512/500294.htm APP是进入移动互联网的重要载体,故得到越来越多开发者的关注.打造APP,无论是开发.产 ...
- 移动大数据平台的架构、实践与数据增值
吴磊,友盟公司数据平台负责人.目前主要负责Umeng移动数据分析平台的软件研发和系统架构.拥有10多年的软件开发经验,先后在大型通讯系统,通用搜索引擎以及海量数据分析等领域工作.在基础平台架构和海量数 ...
最新文章
- php读取access编码格式,php+access如何设置编码格式
- 素数个数(信息学奥赛一本通-T1151)
- 去中心化NFT交易生态系统Mochi.Market将在DAO Pad进行SHO
- 程序驱动防止消息钩子入侵
- 模拟电子技术基础》期中考试试题,仅供参考
- RTthread IO设备的创建
- 在JavaScript中实现继承的几种方式
- android默认打开方式修改,教你修改安卓智能手机默认打开方式
- Java基础-子类和父类之间的诡异事件
- 小白刷LeeCode(算法篇)
- 【综合类型第 26 篇】WebStorm 2019.2.2 下载、安装教程
- 垂暮黄昏——回顾CSP2021
- 数据挖掘十大经典算法 整理
- RDD与MapReduce对比
- C++实现的BP神经网络(代码与详解)
- python将两张图片拼接成一张图_python实现两张图片拼接为一张图片并保存
- Ubuntu下Android开发——配置环境,刷机,push
- 沈阳二本计算机工资,想进国家电网?这两所二本超过很多985!
- HTML5之HTML+CSS3代码(一)
- MT6765中断处理IO口配置流程
热门文章
- html5生成excel,H5纯前端生成Excel表格
- 格林公式中对偏微分的积分
- android+代码调用+相册+小米,Android调用系统相册选择图片,支持小米4云相册
- js通用获取本周起始日期
- P4208 [JSOI2008]最小生成树计数
- 16 个百度网盘搜索引擎
- 新手小白如何画中世纪骑士铠甲?有什么需要注意?
- html网页公式编辑软件,如何在网页中插入MathType公式
- 前端期末大作业 HTML+CSS 动漫主题网页作业 (1)
- Linux与数据结构 2019-4-14