陈超-Spark Summit China

陈超-Spark Summit China

ID:42474301

大小:1.90 MB

页数:39页

时间:2019-09-15

陈超-Spark Summit China_第1页
陈超-Spark Summit China_第2页
陈超-Spark Summit China_第3页
陈超-Spark Summit China_第4页
陈超-Spark Summit China_第5页
资源描述:

《陈超-Spark Summit China》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Spark内核探索与性能优化陈超@CrazyJvmSparkSummitChinaDidyouknow?cache/persistislazy!unpersistiseager!Didyouknow?groupByKey:notcombinelocally!reduceByKey:combinelocallyDidyouknow?vallevel=MEMORY_AND_DISKwillnotspilldatatodiskimmediatelyafteryoucallsc.persist(level)!Didyouknow?Howtodecidetaskn

2、umber?!if…elseif…else…Let’sgo!!!再看RDD!分区protecteddefgetPartitions:Array[Partition]!依赖protecteddefgetDependencies:Seq[Dependency[_]]=deps!函数defcompute(split:Partition,context:TaskContext):Iterator[T]!最佳位置(可选)protecteddefgetPreferredLocations(split:Partition):Seq[String]=Nil!分区策略(可

3、选)@transientvalpartitioner:Option[Partitioner]=None7HadoopRDD•分区:每个HDFSblock•依赖:无•函数:读取每一个block•最佳位置:HDFSblock所在位置•分区策略:无8FilteredRDD•分区:与父RDD一致•依赖:与父RDD一对一•函数:计算父RDD的每个分区并过滤•最佳位置:无(与父RDD一致)•分区策略:无9JoinedRDD•分区:每个reduce任务一个分区•依赖:依赖所有父RDD•函数:读取shuffle数据并计算•最佳位置:无可以指定Partitioner•分区策

4、略:HashPartitioner(partitions:Int)10ClusterOverviewWorkerNodeExecutorCacheTaskTaskDriverProgramSparkContextClusterManagerWorkerNodeExecutorCacheTaskTask11核心组件Sparkclient!(appmaster)SparkworkerRDDgraphYourprogramCluster!TaskThreadsSchedulermanagervalsc=newSparkContext!valdata=sc.te

5、xtFile(“…”)!data.filter(…).countTaskThreadsBlocktrackerShuffletrackerHDFS,HBase,…12CODEvalconf=newSparkConf()conf.setMaster(“spark://....”).setAppName(“Analysis”).setSparkHome(“…”).setJars(“…”)valsc=newSparkContext(conf)vallines=sc.testFile(“hdfs://...“)!valerrors=lines.filter(_.sta

6、rtsWith(“ERROR”))!errors.cache()!mysql_error=errors.filter(_.contains(“MySQL”)).count!http_errors=errors.filter(_.contains(“Http”)).countRDD图每个partition都会分配一个task数据层面Partition层面HadoopRDDfile:path=hdfs://…FilteredRDDerrors:func=_.contains(…)rdd.cacheTask1Task2Task3……14数据本地性第一次运行时数据不在

7、内存中,所以文件系统本地性从HDFS上取,任务最好运行在数据所在的节点上!内存本地性第二次运行,数据已经在内存中,所以任务最好运行在该数据所在内存的节点上。LRU置换万一有数据被置换出内存,则仍然从HDFS上取。15任务调度!16DAGScheduler目标RDD计算每个分区的函数结果侦听器!!DAGScheduler•根据DAG构建Stage,决定每个任务的最佳位置•将taskset传给底层调度器TaskScheduler•重新提交shuffle输出丢失的stage17调度器优化灰颜色代表之前已经算好的分区!••一个Stage内的窄依赖进行pipelin

8、e操作1+1+1+1=4①1+1=2;2+1=3;3+1=4②•重用已经缓存过的

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。