文档详情

大数据平台与编程第5章 Spark分布式计算框架.pptx

发布:2024-09-08约1.45千字共59页下载文档
文本预览下载声明

第5章Spark分布式计算框架;?Spark背景;Spark背景;Spark背景;;;JVM和任务管理优化:

Spark基于JVM(JavaVirtualMachine)进行了优化。Hadoop每次MapReduce操作,启动一个Task便会启动一次JVM,这是基于进程的操作;

而Spark每次MapReduce操作是基于线程的,只在启动Executor启动一次JVM,内存的Task操作是在线程复用的。

每次启动JVM的时间可能就需要几秒甚至十几秒,那么当Task多了,Hadoop就比Spark花了更多时间。;;;;?Spark生态系统;Spark生态系统;;(3)Spark引入弹性分布式数据集(ResilientDistributedDatasets,RDD),实现了应用任务的调度、RPC、序列化和压缩,并为运行在其上层的组件提供API,另外这些对象集合是弹性的,若有部分数据集丢失,它可根据“血统”对丢失部分进行重建,提高数据的容错性。

(4)Spark优先考虑使用各节点的内存作为存储,当内存不足时才会考虑使用磁盘,这极大地减少了访问磁盘次数,提升了任务执行的效率,使得Spark适用于实时计算、流式计算等场景。;;;;;Spark生态系统;;?Spark运行架构;Spark运行架构;;;;;;;;;;;;;;;;;;;;;;;?程序示例;程序示例;程序示例;程序示例;程序示例;;//将每一个单词,映射为(单词,1)的这种格式

JavaPairRDDString,Integerpairs=words.mapToPair(newPairFunctionString,String,Integer(){

privatestaticfinallongserialVersionUID=1L;

@Override

publicTuple2String,Integercall(Stringword)throwsException{

returnnewTuple2String,Integer(word,1);

}

});

//以单词作为key,统计每个单词出现的次数

JavaPairRDDString,IntegerwordCounts=pairs.reduceByKey(newFunction2lnteger,Integer,Integer(){

privatestaticfinallongserialVersionUID=1L;

@Override

publicIntegercall(Integerv1,Integerv2)throwsException{

returnv1+v2;

}

});

//输出WordCount结果

wordCounts.foreach(newVoidFunctionTuple2String,Integer(){

privatestaticfinallongserialVersionUID=1L;

@Override

publicvoidcall(Tuple2String,IntegerwordCount)throwsException{

System.out.println(wordCount);

}

});

sc.close();

}};;程序示例;程序示例;程序示例;?本章小结;;?本章习题;

显示全部
相似文档