你必须要掌握的大数据计算技术,都在这了
发布时间:2022-08-25 11:48:04 所属栏目:大数据 来源:互联网
导读:01离线批处理 这里所说的批处理指的是大数据离线分布式批处理技术,专用于应对那些一次计算需要输入大量历史数据,并且对实时性要求不高的场景。目前常用的开源批处理组件有MapReduce和Spark,两者都是基于MapReduce计算模型的。 1.MapReduce计算模型 MapRed
|
01离线批处理 这里所说的批处理指的是大数据离线分布式批处理技术,专用于应对那些一次计算需要输入大量历史数据,并且对实时性要求不高的场景。目前常用的开源批处理组件有MapReduce和Spark,两者都是基于MapReduce计算模型的。 1.MapReduce计算模型 MapReduce是Google提出的分布式计算模型,分为Map阶段和Reduce阶段。在具体开发中,开发者仅实现map()和reduce()两个函数即可实现并行计算。Map阶段负责数据切片,进行并行处理,Reduce阶段负责对Map阶段的计算结果进行汇总。 这里举一个通俗的例子帮助你理解。假如现在有3个人想打一种不需要3~6的扑克牌游戏,需要从一副扑克牌中去掉这些牌,过程描述如下: 第一步,将这一副牌随机分成3份,分给3个人,然后每个人一张张查看手中的牌,遇到3~6的牌就挑出去; 第二步,等所有人都完成上面的步骤后,再将每个人手上剩余的牌收集起来。 在这个过程中,第一步操作属于Map阶段,相当于对每张牌做一次判断(映射、函数运算),是否保留;第二步属于Reduce阶段,将结果汇总。 MapReduce处理的数据格式为键-值格式,一个MapReduce作业就是将输入数据按规则分割为一系列固定大小的分片,然后在每一个分片上执行Map任务,Map任务相互独立,并行执行,且会在数据所在节点就近执行;当所有的Map任务执行完成后,通过缓存机制将分散在多个节点的键值相同的数据记录拉取到同一节点,完成之后的Reduce任务,最后将结果输出到指定文件系统,比如HDFS、HBase。基于以上解释和描述,可以看出MapReduce不适合实现需要迭代的计算,如路径搜索。 2.Spark Spark是基于内存计算的大数据并行计算框架,最初由美国加州大学伯克利分校的AMP实验室于2009年开发,于2010年开源,是目前最主流的批处理框架,替代了MapReduce。 整个Spark项目由四部分组成,包括SparkSQL、Spark Streaming、MLlib、Graphx,如图2所示。其中SparkSQL用于OLAP分析,Streaming用于流式计算的(微批形式),MLlib是Spark的机器学习库,Graphx是图形计算算法库。Spark可在Hadoop YARN、Mesos、Kubernetes上运行,可以访问HDFS、Alluxio、Cassandra、HBase等数据源。 Spark使用先进的DAG(Directed Acyclic Graph,有向无环图)执行引擎,支持中间结果仅存储在内存中,大大减少了IO开销,带来了更高的运算效率,并且利用多线程来执行具体的任务,执行速度比MapReduce快一个量级。 在Spark中,Spark应用程序(Application)在集群上作为独立的进程集运行,由主程序(称为Driver)的SparkContext中的对象协调,一个Application由一个任务控制节点(Driver)和若干个作业(Job)构成。Driver是Spark应用程序main函数运行的地方,负责初始化Spark的上下文环境、划分RDD,并生成DAG,控制着应用程序的整个生命周期。Job执行MapReduce运算,一个Job由多个阶段(Stage)构成,一个阶段包括多个任务(Task),Task是最小的工作单元。在集群环境中,Driver运行在集群的提交机上,Task运行在集群的Worker Node上的Executor中。Executor是运行在Spark集群的Worker Node上的一个进程,负责运行Task,Executor既提供计算环境也提供数据存储能力。在执行过程中,Application是相互隔离的,不会共享数据。Spark集群架构示意图如图3所示。 具体来说,当在集群上执行一个应用时,SparkContext可以连接到集群资源管理器(如YARN),获取集群的Worker Node的Executor,然后将应用程序代码上传到Executor中,再将Task发送给Executor运行。 Spark的核心数据结构是RDD(Resilient Distributed Dataset,弹性分布式数据集),只支持读操作,如需修改,只能通过创建新的RDD实现。 02实时流处理 当前实时处理数据的需求越来越多,例如实时统计分析、实时推荐、在线业务反欺诈等。相比批处理模式,流处理不是对整个数据集进行处理,而是实时对每条数据执行相应操作。流处理系统的主要指标有以下几个方面:时延、吞吐量、容错、传输保障(如支持恰好一次)、易扩展性、功能函数丰富性、状态管理(例如窗口数据)等。 目前市面上有很多成熟的开源流处理平台,典型的如Storm、Flink、Spark Streaming。三者的简单对比如下:Storm与Flink都是原生的流处理模型,Spark Streaming是基于Spark实现的微批操作;Spark Streaming的时延相对前两者高;Flink与Streaming的吞吐量高,支持的查询功能与计算函数也比Storm多。总体来说,Flink是这三者中综合性能与功能更好的流平台,当前的社区发展也更火热。 (编辑:珠海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


