第四章 Spark 内存计算

HDFS和MapReduce已经成为大规模机器学习的基石和驱动力.形成了稳定且通用的计算环境.满足图形处理,微批处理,SQL查询,数据仓库和机器学习等任务构建.但MapReduce在数据集的迭代,交互和按需计算上不太合适.

MapReduce主要应用与并行计算,为了保证协调性和容错性,MapReduce使用了拉执行模型,需要将中间数据写回HDFS,这是耗时的一大原因.另外,多数应用程序都需要MapReduce作业链才能完成,进一步增大了写数据带来的时间开销.

为解决这一问题,Hadoop采用了YARN,这一更加通用的资源管理框架进行计算.以前,MapReduce应用程序分配给作业的资源只能被mapper和reducer使用,而YARN为Hadoop应用程序提供了更通用的资源访问.因此,专用工具不再现需要分解为一些列MapRecue作业,可以变得更加复杂.

Spark是应运而生的第一个快速,通用的分布式计算范式,并且因其速度和适应性而迅速得到普及.Spark主要通过名为弹性分布式数据集(RDD)的新数据集实现高速运行.该数据集在计算时存储在内存中,避免了宝贵的写入操作时间.另外利用了DAG(有向无环图)执行引擎优化计算,特别是迭代运算.在速度方面的优势使得Spark可以进行交互式访问,支持以前不能实现的大数据探索.

NOTE:因为有向无环图通常用于描述数据流中的步骤,所以在讨论大数据处理时经常会使用DAG这一术语.DAG有向,是因为一个或多个步骤前一个步骤;不换,时因为单个步骤不重复.

Spark实现了许多应用程序,例如DataFrame,交互式noteBook和SQL,Hadoop新手用户首选Spark与集群进行交互.

4.1 Spark基础

Apache Spark是一个集群计算平台,类似于MapReduce模型的分布式编程提供了一个API,被设计用于快速的交互式插叙哦那和迭代.因为Spark与YARN兼容,所以它可以在现有的Hadoop集群上运行并访问任何Hadoop数据源,包括HDFS,S3,HBase和Cassandra.另外,Spark API不仅支持map和reduce,还提供了许多清大的分布式抽象.包括sample,filter,join和collect等.此外,虽然Spark时Scale实现的,但是Scale,Java,R和Python的编程API都可以轻松的使用Spark,并能够快速且充分的利用Spark引擎.

4.1.1 Spark栈

Spark是一种通用的分布式计算抽象,它只关心计算而不关心存储,当使用Hadoop构建Spark时,Spark可以访问HDFS,HBase,Hive等等.Spark 是一个计算框架,旨在利用集群管理平台(如YARN)和分布式数据存储(如 HDFS)

 因为组件库未集成到通用计算框架中,Spark Core模块非常灵活.如此一来,Spark不仅可以用来开发专业工具,还可以帮助新用户快速上手已经存在的Spark组件.

主要组件包括Spark SQL,Spark Streaming,MLlib,Graph X,这些组件与Spark编程模型结合,提供了 大量与集群资源交互的方法.这种丰富性和一致性源于Spark中的主要编程抽象,弹性分布式数据集(RDD).

4.1.2 RDD

RDD本质上是一种编程抽象,表示跨机器分区的对象的只读集合.RDD使用包括map和reduce的函数式编程结构体进行操作,并在其基础上进行扩展,并在其基础上进行扩展.程序员需要通过输入源加载数据,或转换现有集合来创建新的RDD.Spark API本质上式创建,转换和导出RDD操作的集合.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值