Spark架构,运行原理,任务调度和资源调度分析,内存管理分析,SparkSQL,SparkSreaming与kafaka,数据倾斜的解决,调优。
Spark是美国加州大学伯克利分校的AMP实验室(主要创始人lester和Matei)开发的通用的大数据处理框架。
Apache Spark™是用于大规模数据处理的快速通用引擎。
Apache Spark是一个开源集群计算系统,旨在使数据分析快速,快速运行和快速写入
Spark应用程序可以使用R语言,Java,Scala和Python进行编写,极少使用R语言编写的Spark程序,Java和Scala语言编写的Spark程序的执行效率是相同的,但Java语言写的代码量多,Scala简洁优雅,但清晰性不如Java,Python语言编写的Spark程序的执行效率不如Java和Scala。
Spark有4中运行模式:
DAG计算模型在迭代计算上还是比MR的更有效率。
在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG)
DAG计算模型在星火任务调度中详解!
星火计算比MapReduce的快的根本原因在于DAG计算模型。一般而言,DAG相比MapReduce的在大多数情况下可以减少洗牌次数.Spark的DAGScheduler相当于一个改进版的MapReduce,如果计算不涉及与其他子系统进行数据交换,Spark可以在内存中一次性完成这些操作,也就是中间结果无须落盘,减少了磁盘IO的操作。但是,如果计算过程中涉及数据交换,Spark也是会把shuffle的数据写磁盘的!有一个错误区,Spark是基于内存的计算,所以快,这不是一直,要对数据做计算,必然得加载到内存,Hadoop也不会,只不过Spark支持将需要反复用到的数据给Cache到内存中,减少数据加载耗时,所以Spark跑机器学习算法比较在行(需要对数据进行反复重复)。Spark基于磁盘的计算也是比Hadoop快。刚刚提到了Spark的DAGScheduler是个改进版的MapReduce,所以Spark天 适合做批处理的任务.Hadoop的MapReduce的虽然不如火花性能好,但是HDFS仍然是业界的大数据存储标准。
分区列表
用于计算每个分区的函数
依赖于其他RDD的列表
可选地,用于键值RDD的分区器
可选地,用于计算每个拆分的首选位置的列表
可以从HDFS,NoSQL数据库中加载数据集
变换子是一系列懒执行的函数
Transformations算子对RDD的操作会被先记录,当动作算子触发后才会真正执行
伪代码示例:
|
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3131915/ ,如需转载,请注明出处,否则将追究法律责任。