新闻资讯  快讯  焦点  财经  政策  社会
互 联 网   电商  金融  数据  计算  技巧
生活百科  科技  职场  健康  法律  汽车
手机百科  知识  软件  修理  测评  微信
软件技术  应用  系统  图像  视频  经验
硬件技术  知识  技术  测评  选购  维修
网络技术  硬件  软件  设置  安全  技术
程序开发  语言  移动  数据  开源  百科
安全防护  资讯  黑客  木马  病毒  移动
站长技术  搜索  SEO  推广  媒体  移动
财经百科  股票  知识  理财  财务  金融
教育考试  育儿  小学  高考  考研  留学
您当前的位置:首页 > 互联网百科 > 大数据

深度解析大数据处理系统关键层次架构

时间:2019-05-15 11:04:09  来源:  作者:

在数据存储层,还有很多类似的系统和某些系统的变种,这里,仅仅列出较为出名的几个。

深度解析大数据处理系统关键层次<a href=http://www.solves.com.cn/it/cxkf/jiagou/ target=_blank class=infotextkey>架构</a>

 

一、数据存储层

宽泛地讲,据对一致性(consistency)要求的强弱不同,分布式数据存储策略,可分为ACID和BASE两大阵营。

ACID是指数据库事务具有的四个特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。ACID中的一致性要求比较强,事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

BASE对一致性要求较弱,它的三个特征分别是:基本可用(Basically Available), 软状态/柔性事务(Soft-state,即状态可以有一段时间的不同步), 最终一致性(Eventual consistency)。BASE还进一步细分基于键值的,基于文档的和基于列和图形的 – 细分的依据取决于底层架构和所支持的数据结构(注:BASE完全不同于ACID模型,它以牺牲强一致性,获得基本可用性和柔性可靠性,并要求达到最终一致性)。在数据存储层,还有很多类似的系统和某些系统的变种,这里,我仅仅列出较为出名的几个。如漏掉某些重要系统,还请谅解。

1、BASE

(1)键值存储(Key Value Stores)

Dynamo:这是由亚马逊工程师们设计的基于键值的高可用的分布式存储系统(注:Dynamo放弃了数据建模的能力,所有的数据对象采用最简单的Key-value模型存储,可简单地将Dynamo理解为一个巨大的Map。Dynamo是牺牲了部分一致性,来换取整个系统的高可用性)。

Cassandra:这是由Facebook工程师设计的一个离散的分布式结构化存储系统,受亚马逊的Dynamo启发,Cassandra采用的是面向多维的键值或面向列的数据存储格式(注:Cassandra可用来管理分布在大量廉价服务器上的巨量结构化数据,并同时提供没有单点故障的高可用服务)。

Voldemort:这又是一个受亚马逊的Dynamo启发的分布式存储作品,由全球最大的职业社交网站LinkedIn的工程师们开发而成。

(2)面向列的存储(Column Oriented Stores)

BigTable:Bigtable是一个基于google文件系统的分布式数据存储系统,是为谷歌打拼天下的“三驾马车”之一,另外两驾马车分别是分布式锁服务系统Chubby和下文将提到的MapReduce。

HBase:Hbase是一个分布式的、面向列的开源数据库。其设计理念源自谷歌的 BigTable,用JAVA语言编写而成。

Hypertable:Hypertable也是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable类似的模型。

(3)面向文档的存储(Document Oriented Stores)

CouchDB:这是一款面向文档的、开源数据存储管理系统。

MongoDB:是目前非常流行的一种非关系型(NoSQL)数据库。

(4)面向图(Graph)的存储

Neo4j:Neo4j是一款目前最为流行的高性能NoSQL 图数据库,它使用图来描述数据模型,把数据保存为图中的节点以及节点之间的关系。这是最流行的图数据库。

Titan:Titan是一款Apache许可证框架下的分布式的开源图数据库,特别为存储和处理大规模图而做了大量优化。

2、ACID

Megastore:这是一个构建于BigTable之上的、高可用的分布式存储系统。

Spanner:这是由谷歌研发的、可扩展的、全球分布式的、同步复制数据库,支持SQL查询访问。

MESA:亦是由谷歌研发的、跨地域复制(geo-replicated)、高可用的、可容错的、可扩展的近实时数据仓库系统。

CockroachDB:该系统是由Google前工程师Spencer Kimball领导开发的Spanner 的开源版本。

二、资源管理器层(Resource Managers)

第一代Hadoop的生态系统,其资源管理是以整体单一的调度器起家的,其代表作品为YARN。而当前的调度器则是朝着分层调度的方向演进(Mesos则是这个方向的代表作),这种分层的调度方式,可以管理不同类型的计算工作负载,从而可获取更高的资源利用率和调度效率。

YARN:这是新一代的MapReduce计算框架,简称MRv2,它是在第一代MapReduce的基础上演变而来的(注:MRv2的设计初衷是,为了解决第一代Hadoop系统扩展性差、不支持多计算框架等问题。

Mesos:这是一个开源的计算框架,可对多集群中的资源做弹性管理。

这些计算框架和调度器之间是松散耦合的,调度器的主要功能就是基于一定的调度策略和调度配置,完成作业调度,以达到工作负载均衡,使有限的资源有较高的利用率。

三、调度器(Schedulers)

(1)作业调度器,通常以插件的方式加载于计算框架之上,常见的作业调度器有4种:

计算能力调度器

公平调度器

延迟调度

公平与能力调度器

(2)协调器(Coordination)

在分布式数据系统中,协调器主要用于协调服务和进行状态管理。

Paxos:Google的Chubby和Apache的Zookeeper,都是用Paxos作为其理论基础实现的。

Chubby:本质上就是前文提到的Paxos的一个实现版本,主要用于谷歌分布式锁服务。

Zookeeper:这是Apache Hadoop框架下的Chubby开源版本。它不仅仅提供简单地上锁服务,而事实上,它还是一个通用的分布式协调器,其设计灵感来自谷歌的Chubby。

四、计算框架(Computational Frameworks)

(0)运行时计算框架

可为不同种类的计算,提供运行时(runtime)环境。最常用的是运行时计算框架是Spark和Flink。

Spark:Spark是一个基于内存计算的开源的集群计算系统,其目的在于,让数据分析更加快速。Spark是由加州大学伯克利分校的AMP实验室采用Scala语言开发而成。Spark的内存计算框架,适合各种迭代算法和交互式数据分析,能够提升大数据处理的实时性和准确性,现已逐渐获得很多企业的支持,如阿里巴巴、百度、网易、英特尔等公司均是其用户。

Flink:这是一个非常类似于Spark的计算框架,但在迭代式数据处理上,比Spark更给力(注:目前大数据分析引擎Flink,已升级成为Apache顶级项目)。

Spark和Flink都属于基础性的大数据处理引擎。具体的计算框架,大体上,可根据采用的模型及延迟的处理不同,来进行分门别类。

(1)批处理(Batch)

MapReduce

(2)迭代式(BSP)

Pregel:Pregel是一种面向图算法的分布式编程框架,其采用的是迭代式的计算模型。它被称之为Google后Hadoop时代的新“三驾马车”之一。另外两驾马车分别是:“交互式”大数据分析系统Dremel和网络搜索引擎Caffeine。

Giraph:该系统建模于谷歌的Pregel,可视为Pregel的开源版本,它是一个基于 Hadoop架构的、可扩展的分布式迭代图处理系统。

GraphX:这是一个同时采用图并行计算和数据并行的计算框架,GraphX最先是加州大学伯克利分校AMPLab实验室的一个分布式图计算框架项目,后来整合到Spark中,成为其中的一个核心组件。GraphX最大的贡献在于,在Spark之上提供一栈式数据解决方案,可方便高效地完成图计算的一整套流水作业。

Hama:是一个构建Hadoop之上的基于BSP模型的分布式计算引擎,Hama的运行环境需要关联 Zookeeper、HBase、HDFS 组件。Hama中最关键的技术,就是采用了BSP模型(Bulk Synchronous Parallel,即整体同步并行计算模型,又名大同步模型)。

(3)流式(Streaming)

Storm:Storm有时也被人们称为实时处理领域的Hadoop,它大大简化了面向庞大规模数据流的处理机制,从而在实时处理领域扮演着重要角色。

Samza:这是一款由Linkedin公司开发的分布式的流式数据处理框架(注:所谓流式数据,是指要在处理单位内得到的数据,这种方式更注重于实时性,流式数据有时也称为快数据)。

Spark流:Spark Streaming是Spark 核心API的一个扩展,它并不会像Storm那样逐个处理数据流,而是在处理前,按时间间隔预先将其切分为很多小段的批处理作业。

(4)交互式(Interactive)

Dremel该论文是多个基于Hadoop的开源SQL系统的理论基础。

Impala:这是一个大规模并行处理(MPP)式 SQL 大数据分析引擎,Impala像Dremel一样,其借鉴了MPP(Massively Parallel Processing,大规模并行处理)并行数据库的思想,抛弃了MapReduce这个不太适合做SQL查询的范式,从而让Hadoop支持处理交互式的工作负载。

Drill:这是谷歌 Dremel的开源版本,Drill是一个低延迟的、能对海量数据(包括结构化、半结构化及嵌套数据)实施交互式查询的分布式数据引擎。

Shark:Shark即“Hive on Spark”的含义,本质上是通过Hive的HQL解析,把HQL翻译成Spark上的RDD操作。然后通过Hive的元数据获,取数据库里的表信息。HDFS上的数据和文件,最后会由Shark获取,并放到Spark上运算。Shark基于 Scala语言的算子推导,可实现良好的容错机制,对执行失败的长/短任务,均能从上一个“快照点(Snapshot)”进行快速恢复。

Dryad:Dryad是一个通用的粗颗粒度的分布式计算和资源调度引擎,其核心特性之一,就是允许用户自己构建DAG调度拓扑图。

Tez:其核心思想来源于Dryad,可视为利用Yarn(即MRv2)对Dryad的开源实现。Apache Tez是基于Hadoop Yarn之上的DAG计算框架。

BlinkDB:可在抽样数据上实现交互式查询,其呈现出的查询结果,附带有误差标识。BlinkDB 是一个用于在海量数据上运行交互式 SQL 查询的大规模并行查询引擎。BlinkDB允许用户通过适当降低数据精度,对数据进行先采样后计算,其通过其独特的优化技术,实现了比Hive快百倍的交互式查询速度,而查询进度误差仅降低2~10%。

(5)实时系统(RealTime)

Druid:这是一个开源的分布式实时数据分析和存储系统,旨在快速处理大规模的数据,并能做到快速查询和分析。

Pinot:这是由LinkedIn公司出品的一个开源的、实时分布式的 OLAP数据分析存储系统,非常类似于前面提到的Druid,LinkedIn 使用它实现低延迟可伸缩的实时分析。

五、数据分析层(Data Analysis)

数据分析层中的工具,涵盖范围很广,从诸如SQL的声明式编程语言,到诸如Pig的过程化编程语言,均有涉及。另一方面,数据分析层中的库也很丰富,可支持常见的数据挖掘和机器学习算法,这些类库可拿来即用,甚是方便。

(1)工具(Tools)

Pig:Pig Latin原是一种儿童黑话,属于是一种英语语言游戏,形式是在英语上加上一点规则使发音改变,让大人们听不懂,从而完成孩子们独懂的交流。雅虎的工程师们于2008年发表在SIGMOD的一篇论文,论文的题目是“Pig Latin:并不是太老外的一种数据语言”,言外之意,他们发明了一种数据处理的“黑话”——Pig Latin,一开始你可能不懂,等你熟悉了,就会发现这种数据查询语言的乐趣所在。

Hive:Hive是一个建立于 Hadoop 上的数据仓库基础构架。它用来进行数据的提取、转化和加载(即Extract-Transform-Load ,ETL),它是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。

Phoenix:它是 HBase 的 SQL 驱动,Phoenix可将 SQL 查询转成 HBase 的扫描及相应的动作。

(2)库(Libraires)

MLlib:这是在Spark计算框架中对常用的机器学习算法的实现库,该库还包括相关的测试和数据生成器。

SparkR:这是AMPLab发布的一个R开发包,为Apache Spark提供轻量级的前端。

Mahout:这是一个功能强大的数据挖掘工具,是一个基于传统Map Reduce的分布式机器学习框架,Mahout的中文含义就是“驭象之人”,而Hadoop的Logo正是一头小黄象。很明显,这个库是帮助用户用好Hadoop这头难用的大象。

六、数据集成层(Data Integration)

数据集成框架提供了良好的机制,以协助高效地摄取和输出大数据系统之间的数据。从业务流程线到元数据框架,数据集成层皆有涵盖,从而提供全方位的数据在整个生命周期的管理和治理。

(1)摄入/消息传递(Ingest/Messaging)

Flume:这是Apache旗下的一个分布式的、高可靠的、高可用的服务框架,可协助从分散式或集中式数据源采集、聚合和传输海量日志。

Sqoop:该系统主要用来在Hadoop和关系数据库中传递数据,Sqoop目前已成为Apache的顶级项目之一。

Kafka:这是由LinkedIn开发的一个分布式消息系统,由Scala编写而成。由于可水平扩展、吞吐率高等特性,得到广泛应用。

(2)ETL/工作流

ETL是数据抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)的过程,是构建数据仓库的重要一环。

Crunch:这是Apache旗下的一套Java API函数库,它能够大大简化编写、测试、运行MapReduce 处理工作流的程序。

Falcon:这是Apache旗下的Falcon大数据管理框架,可以帮助用户自动迁移和处理大数据集合。

Cascading:这是一个架构在Hadoop上的API函数库,用来创建复杂的可容错的数据处理工作流。

Oozie:是一个工作流引擎,用来协助Hadoop作业管理,Oozie字面含义是驯象之人,其寓意和Mahout一样,帮助用户更好地搞定Hadoop这头大象。

(3)元数据(Metadata)

HCatalog: 它提供了面向Apache Hadoop的数据表和存储管理服务,Apache HCatalog提供一个共享的模式和数据类型的机制,它抽象出表,使用户不必关心数据怎么存储,并提供了可操作的跨数据处理工具。

(4)序列化(Serialization)

Protocol Buffers:由Google推广的一种与语言无关的、对结构化数据进行序列化和反序列化的机制。

Avro:这是一个建模于Protocol Buffers之上的、Hadoop生态系统中的子项目,Avro本身既是一个序列化框架,同时也实现了RPC的功能。

七、操作框架(Operational Frameworks)

最后,我们还需要一个操作性框架,来构建一套衡量标准和测试基准,从而来评价各种计算框架的性能优劣。在这个操作性框架中,还需要包括性能优化工具,借助它来平衡工作负载。

(1)监测管理框架(Monitoring Frameworks)

OpenTSDB:这是构建于HBase之上的实时性能评测系统。

Ambari:这是一款基于Web的系统,支持Apache Hadoop集群的供应、管理和监控。

(2)基准测试(Benchmarking)

YCSB:YCSB是雅虎云服务基准测试(Yahoo! Cloud Serving Benchmark)的简写。见名知意,它是由雅虎出品的一款通用云服务性能测试工具。

GridMix:该系统通过运行大量合成的作业,对Hadoop系统进行基准测试,从而获得性能评价指标。

结语

感谢您的观看,如有不足之处,欢迎批评指正。
 



Tags:大数据   点击:()  评论:()
声明:本站部分内容来自互联网,内容观点仅代表作者本人,如有任何版权侵犯请与我们联系,我们将立即删除。
▌相关评论
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
▌相关推荐
人的一生有三分之一的时间在睡眠。中国睡眠研究会的调研结果显示,超过3亿中国人有睡眠障碍,且这个数据仍在逐年攀升。睡眠,或将成为饮食、育儿之后另一个值得特别关注的健康市...【详细内容】
2020-03-18   大数据  点击:(7)  评论:(0)  加入收藏
3月12日,百度发布《2020年百度3&middot;15搜索大数据报告》(下称“报告”)显示,2019年全年网民搜索维权相关内容的热度同比2018年上涨19%,其中网络购物和金融服务成为消费侵权的...【详细内容】
2020-03-16   大数据  点击:(2)  评论:(0)  加入收藏
最近技术群的一个问题,引起了我的思考:今年,还存在金三银四吗?大家都知道程序员涨薪主要还是要靠跳槽来完成!但是我们都知道,无论是考试,还是求职,这个难度,参加人数是影响难度的一个...【详细内容】
2020-03-14   大数据  点击:(13)  评论:(0)  加入收藏
随着数据越来越大,传统的数据仓库已经难以有效应对数据处理和分析的挑战,以hadoop(NoSQL)为代表的分布式计算框架应运而生,它们能有效解决海量的离线分析的需求,这就是所谓的传统...【详细内容】
2020-03-13   大数据  点击:(10)  评论:(0)  加入收藏
疫情的地图数据可视化大家都看过吧,支付宝和各大新闻app里都有: 在这次疫情防控中,足以可见大数据和数据可视化的重要作用,利用大数据追踪每个人每辆车的行踪,利用数据可视化对重...【详细内容】
2020-03-12   大数据  点击:(7)  评论:(0)  加入收藏
5G的到来将催生万物互联,从互联网到移动互联网再到5G物联网,全新的生产生活方式即将到来;5G的市场规模过万亿,大数据、人工智能、自动驾驶、物联网、云计算、AR/VR等将基于5G得...【详细内容】
2020-03-12   大数据  点击:(8)  评论:(0)  加入收藏
大数据技术一种规模大到在获取、存储、管理、分析方面大大超出传统数据库软件工具能力范围的数据集合技术,具有海量的数据规模、快速的数据流转、多样的数据类型和价值密度低...【详细内容】
2020-03-12   大数据  点击:(4)  评论:(0)  加入收藏
我今年30岁了,已经工作了快8年,上有老下有小,但是我看不到自己工作的未来,想辞职又不敢,这种情况下可以转行吗?一般情况下,我不告诉当事人晚或者不晚这个非黑即白的答案。因为懂的...【详细内容】
2020-03-11   大数据  点击:(4)  评论:(0)  加入收藏
汽车大数据精准营销数据特点还是有很多的,首先这些汽车大数据具有一定的时效性,通常都是最新的数据。由于每个客户的情况不一样,所以汽车大数据精准营销对于每个客户都是独家合...【详细内容】
2020-03-09   大数据  点击:(4)  评论:(0)  加入收藏
文/周雄飞编辑/单一远古人类是怎样生活的?要解答这个问题,通过看远古时期保留至今的壁画或许是最好的方法。而对于这些壁画的诞生,现代人类的祖先“智人”在距今3万多年前已经...【详细内容】
2020-02-27   大数据  点击:(5)  评论:(0)  加入收藏
这篇文章主要是入门大数据,不涉及到高深的知识点和理论,我相信每个人都看得懂。如果文章有错误的地方,不妨在评论区友善指出~一、什么是大数据?1.1 前置知识众所周知,我们能存多...【详细内容】
2020-02-10   大数据  点击:(7)  评论:(0)  加入收藏
想像阅读书本一样阅读数据流?这只有在电影中才有可能发生。 在现实世界中,企业必须使用数据可视化工具来读取原始数据的趋势和模式。大数据可视化是进行各种大数据分析解决...【详细内容】
2020-01-10   大数据  点击:(50)  评论:(0)  加入收藏
今天跟大家讲讲云计算、大数据和人工智能。为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据、谈人工智能的时候会...【详细内容】
2020-01-07   大数据  点击:(22)  评论:(0)  加入收藏
二者区别Hive:Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能。 Hive本身不存储和计算数据,它完全依赖于HDFS和MapR...【详细内容】
2019-12-26   大数据  点击:(35)  评论:(0)  加入收藏
22%美国坦普尔大学研究人员发现,30岁~49岁研究对象中,常使用社交媒体的人感到“精神接近崩溃”的概率比其他人高22%。遭遇中年危机的人会对生活感到惶恐,并且爱思考人生意义和...【详细内容】
2019-12-24   大数据  点击:(35)  评论:(0)  加入收藏
玩转大数据首先要明确自己将要学习的方向,没有人能一下子吃透大数据里面所有的东西。在大数据的世界里面主要有三个学习方向,大数据开发师、大数据运维师、大数据架构师。哪个...【详细内容】
2019-12-12   大数据  点击:(15)  评论:(0)  加入收藏
1. Spark是什么?Spark,是一种通用的大数据计算框架,正如传统大数据技术Hadoop的MapReduce、Hive引擎,以及Storm流式实时计算引擎等。Spark包含了大数据领域常见的各种计算框架:比...【详细内容】
2019-12-11   大数据  点击:(27)  评论:(0)  加入收藏
人们在面对非结构性的数据时,常常是没有控制权的,能做的就是接收它们。像是文本数据、视频数据、音频数据等等都是这样。图像是独立像素用特定的方式组合起来的,只不过组合的方...【详细内容】
2019-12-03   大数据  点击:(60)  评论:(0)  加入收藏
flume hdfs 大数据 数据采集以下是关于一个agent的exec-hdfs.properties采集配置文件 # 定义这个agent中各组件的名字a1.sources = r1a1.sinks = k1a1.channels = c1#【Sou...【详细内容】
2019-12-02   大数据  点击:(45)  评论:(0)  加入收藏
Hadoop向用户提供了三种能力:分布式文件系统HDFS、分布式计算模式MapReduce和资源调度框架YARN。由于Hadoop的影响力较大,在大数据圈里一直把“应用 on YARN”作为一个门槛条...【详细内容】
2019-12-02   大数据  点击:(43)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条