Spark核心编程之wordcount程序运行原理窥探 | AiTi修炼|重剑无锋,拈花微笑
Header
Header

Spark核心编程之wordcount程序运行原理窥探

    本文接着上一篇spark的wordcount编程实现,对spark集群中wordcount程序运行的原理以及逻辑过程进行分析、窥探。

     在spark集群中运行wordcount程序其主要业务逻辑比较简单,涵盖一下3个过程:

     1、读取存储介质上的文本文件(一般存储在hdfs上);

     2、对文本文件内容进行解析,按照单词进行分组统计汇总;

     3、将过程2的分组结果保存到存储介质上。(一般存储在hdfs或者RMDB上)

虽然wordcount的业务逻辑非常简单,但其应用程序在spark中的运行过程却巧妙得体现了spark的核心精髓——分布式弹性数据集、内存迭代以及函数式编程等特点。下图对spark集群中wordcount的运行过程进行剖析,加深对spark技术原理窥探。

   该图横向分割下面给出了wordcount的scala核心程序实现,该程序在spark集群的运行过程涉及几个核心的RDD,主要有textFileRDD、flatMapRDD、mapToPairRDD、shuffleRDD(reduceByKey)等。

   应用程序通过textFile方法读取hdfs上的文本文件,数据分片的形式以RDD为统一模式将数据加载到不同的物理节点上,如上图所示的节点1、节点2到节点n;并通过一系列的数据转换,如利用flatMap将文本文件中对应每行数据进行拆分(文本文件中单词以空格为分割符号),形成一个以每个单词为核心新的数据集合RDD;之后通过MapRDD继续转换形成形成(K,V)数据形式,以便进一步使用reduceByKey方法,该方法会触发shuffle行为,促使不同的单词到对应的节点上进行汇聚统计(实际上在夸节点进行数据shuffle之前会在本地先对相同单词进行合并累加),形成wordcount的统计结果;最终通过saveAsTextFile方法将数据保存到hdfs上。具体的运行逻辑原理以及过程上图给出了详细的示意说明。

rscala.com版权所有,本文Spark核心编程之wordcount程序运行原理窥探转载请注明出处:http://rscala.com/index.php/295.html

该文章归档分类于 scala实践, spark实践, 大数据进阶

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注

*

code