摘要: 资源参数调优 了解完了Spark作业运行的基本原理之后,对资源相关的参数就容易理解了。所谓的Spark资源参数调优,其实主要就是对Spark运行过程中各个使用资源的地方,通过调节各种参数,来优化资源使用的效率,从而提升Spark作业的执行性能。以下参数就是Spark中主要的资源参数,每个参数都对应着 阅读全文
posted @ 2016-11-08 11:18 bonelee 阅读(4882) 评论(0) 推荐(1)
摘要: 调优概述 在开发完Spark作业之后,就该为作业配置合适的资源了。Spark的资源参数,基本都可以在spark-submit命令中作为参数设置。很多Spark初学者,通常不知道该设置哪些必要的参数,以及如何设置这些参数,最后就只能胡乱设置,甚至压根儿不设置。资源参数设置的不合理,可能会导致没有充分利 阅读全文
posted @ 2016-11-08 11:17 bonelee 阅读(10967) 评论(0) 推荐(2)
摘要: RDD底层实现原理 RDD是一个分布式数据集,顾名思义,其数据应该分部存储于多台机器上。事实上,每个RDD的数据都以Block的形式存储于多台机器上,下图是Spark的RDD存储架构图,其中每个Executor会启动一个BlockManagerSlave,并管理一部分Block;而Block的元数据 阅读全文
posted @ 2016-11-07 17:24 bonelee 阅读(6797) 评论(1) 推荐(0)
摘要: 注意:此文的stage划分有错,stage的划分是以shuffle操作作为边界的,可以参考《spark大数据处理技术》第四章page rank例子! 参考:http://litaotao.github.io/deep-into-spark-exection-model 我们用一个例子来说明,结合例子 阅读全文
posted @ 2016-11-07 16:37 bonelee 阅读(18339) 评论(1) 推荐(0)
摘要: Driver的任务提交过程 1、Driver程序的代码运行到action操作,触发了SparkContext的runJob方法。2、SparkContext调用DAGScheduler的runJob函数。3、DAGScheduler把Job划分stage,然后把stage转化为相应的Tasks,把T 阅读全文
posted @ 2016-11-07 16:23 bonelee 阅读(8780) 评论(0) 推荐(1)
摘要: 在MapReduce框架中,shuffle是连接Map和Reduce之间的桥梁,Map的输出要用到Reduce中必须经过shuffle这个环节,shuffle的性能高低直接影响了整个程序的性能和吞吐量。Spark作为MapReduce框架的一种实现,自然也实现了shuffle的逻辑。 Shuffle 阅读全文
posted @ 2016-11-07 15:46 bonelee 阅读(12560) 评论(1) 推荐(0)
摘要: RDD操作闭包外部变量原则 RDD相关操作都需要传入自定义闭包函数(closure),如果这个函数需要访问外部变量,那么需要遵循一定的规则,否则会抛出运行时异常。闭包函数传入到节点时,需要经过下面的步骤: 注意:外部变量在闭包内的修改不会被反馈到驱动程序。 简而言之,就是通过网络,传递函数,然后执行 阅读全文
posted @ 2016-11-07 15:15 bonelee 阅读(1267) 评论(0) 推荐(0)
摘要: Accumulator简介 Accumulator是spark提供的累加器,顾名思义,该变量只能够增加。 只有driver能获取到Accumulator的值(使用value方法),Task只能对其做增加操作(使用 +=)。你也可以在为Accumulator命名(不支持Python),这样就会在spa 阅读全文
posted @ 2016-11-07 15:09 bonelee 阅读(6189) 评论(1) 推荐(0)
摘要: 通过spark的action操作函数:collect函数可以提取出所有rdd里的数据项! 阅读全文
posted @ 2016-11-06 10:03 bonelee 阅读(6792) 评论(0) 推荐(0)
摘要: spark dirver本质是一个spark集群的驱动程序,你要调用spark集群的计算功能,必须要通过它! 然后,在tmp下放置一个文件tmp.txt,运行: ./bin/spark-submit my_example/test.py 即可看到效果! 注意:从根本上说,spark sumbit也是 阅读全文
posted @ 2016-11-05 19:21 bonelee 阅读(560) 评论(0) 推荐(0)