spark说明手册阅读笔记

来源:互联网 发布:php技术论坛 编辑:程序博客网 时间:2024/06/07 06:18
Use method to avoid creatingintermediate variables:
即把程序写成下列形式:
Sc.textfile().map().reduceBykey()
这样就不需要储存如map()返回值这样的中间向量。

transformation属于惰性方法,对于一个使用了transformation的RDD,只有当接下来要用这个被transformation处理过的RDD来进行action时,才能真正调用这个transformation操作 

对于sparkRDD的三种聚合操作:
reduceByKey:仅仅只按照键值进行简单的加法
foldByKey:除了把相同键值的相加,还要加上一个初始值
aggregateByKey:把键值和对应数值聚合成一个集合 

对于传统的mapreduce,由于每一次迭代都相当于一个独立的mapreducejob,所以每次迭代的结果都要被写回到硬盘。而对于spark,由于有跨集群的缓存,因此读取速度更快。

Spark的大致工作流程:
当一个RDD上触发了一次action操作,则SparkContext上的runJob函数被调用。该函数会将对应的SC提交到scheduler上,首先经过DAGscheduler,把本次工作划分为一个有向无环图,然后taskscheduler按照该有向无环图,把每一步的任务提交到集群上。对于taskscheduler,具体步骤是这样的:当它接收到一系列任务时,把这些任务根据优先度分配给各个处理器。一个处理器执行任务的流程如下:首先确认JAR和文件依赖,然后为所有需要用到之前处理器的文件依赖建立一个本地缓存,只有当这些依赖改变的时候,才需要从对应的处理器下载。然后解码并执行任务代码。

如何管理各个处理器:
本地模式:只有一个处理器,并和驱动一起运行在相同的JVM上。适合于小型的项目。
Standalone模式:由一个master和多个worker组成,当一项作业输入后,master会让workers唤起各自的executor来处理这一项作业。
Mesos模式:一个广义上的集群资源管理器。以此能在不同程序之间共享资源。
YARN模式:hadoop的资源管理器。每个spark程序都有与之对应的yarn程序,每个处理器也有与之对应的yarn容器。
Mesos和Yarn集群管理器要优于standalone管理器。前两者会考虑到集群上运行的其他程序,而standalone只能使用集群分配的固定资源。