如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Spark技术内幕张安站2015什么是Spark?•分布式计算框架•基于内存的调度和运算模型•兼容Hadoop生态环境–数据存储格式–WorkswithHdfs/Yarn/Hive/Hbase/kafka…etc.•丰富的应用场景–batch/streaming–SQL/机器学习/图计算快速发展的生态环境•快速从ApacheIncubator项目毕业成为Apache顶级项目•大数据解决方案提供商的支持–Cloudera/MapR/Hortonworks/Pivotal/SAP…–华为/星环科技•应用–百度/阿里/腾讯/爱奇艺/优酷/京东…•2014年大数据领域最活跃的开源项目核心组件代码规模BDAS整体架构Spark的目标•高效和通用的编程模型–相比MapReduce,更加适用于两种类型的应用•迭代算法类(机器学习,图计算)•交互式数据挖掘–相似的编程接口•良好的用户体验•编程效率:基于Scala的核心模块,并提供Java/python编程接口•功能强大的API,丰富的操作算子•交互式的解释执行接口(调试,学习)相似的编程接口valconf=newSparkConf()valsc=newSparkContext(conf)vallines=sc.textFile(args(1))valwords=lines.flatMap(_.split(""))valresult=words.map(x=>(x,1)).reduceByKey(_+_).collect()valconf=newSparkConf()valssc=newStreamingContext(conf,Seconds(1))vallines=ssc.textFileStream(args(1))valwords=lines.flatMap(_.split(""))valresult=words.map(x=>(x,1)).reduceByKey(_+_).collect()ssc.start()仅仅是因为内存?ClientStepStepStepStepStepClientStepStepStepStepStep从WordCount开始•代码实现•RDD•资源分配•任务划分•任务调度•任务执行–Shuffle的具体实现WordCount的代码实现RDD•Resilientdistributeddataset,弹性分布式数据集•不可变的,按分区组织的数据对象•支持多种转换+动作•可以通过多种数据源创建RDD•缓存+检查点•容错,数据本地性,可扩展性RDD的缓存BaseRDDTransformedCacheRDD1lines=spark.textFile(“hdfs://...”)Workresultsererrors=lines.filter(_.startsWith(“ERROR”))messages=errors.map(_.split(„\t‟)(2))DrivetasksBlock1cachedMsgs=messages.cache()rActioncachedMsgs.filter(_.contains(“wordseg”)).countCachecachedMsgs.filter(_.contains(“wordrank”)).countWork2...erCache3WorkBlock2erBlock3RDD的不同依赖窄依赖:宽依赖:map,filtergroupByKeyjoinwithinputsco-unionpartitionedjoinwithinputsnotco-partitioned资源的分配任务调度RDDObjectsDAGSchedulerTaskSchedulerWorkerClustermanagerThreadsDAGTaskSetTaskBlockmanagerrdd1.join(rdd2)splitgraphintolaunchtasksviaexecutetasks.groupBy(…)stagesoftasksclustermanager.filter(…)submiteachretryfailedorstoreandservebuildoperatorDAGstageasreadystragglingtasksblocksagnosticdoesn’ttostageknowaboutfai