python on spark: 使用spark提供的pyspark库来编写spark应用程序

一 基本概念辨析

1 RDD: resilient distributed dataset 弹性分布式数据集,提供高度受限的共享内存模型,RDD一旦生成不允许修改,是只读的
2 DAG: directed acyclic graph,有向无环图,反映不同的RDD之间的依赖关系
3 Executor: 运行多个任务各个线程的进程
4 application: 用户编写的Spark应用程序,如词频统计程序
5 任务 : 运行在Executor进程下各个进程的工作单元,
**6 作业 job:**一个spark应用程序会分成多个作业,每个作业又会被切成多个任务子集,每个任务子集即一个阶段。一个作业包括多个RDD及在RDD上的操作。
7 阶段 stage: 作业的基本调度单位,一个作业会切成很多个stage,一个stage就是一个任务,然后分发到各个机器上去执行。

在spark中进行数据处理时,即把数据包装成一个个的RDD,然后对RDD进行一系列的操作,最后输出结果的RDD。整个过程会生成DAG,即有向无环图

二 架构设计

  • Driver 节点:会生成SparkContext,即任务的控制节点,应用程序的指挥所
  • 集群资源管理器:Cluster Manager,可以是spark自己的,也可以是hadoop的yarn等,负责CPU,内存和带宽等的配置
  • 工作节点:Worker node,一个工作节点会驻扎一个executor进程,会派生出多个线程,每个线程去执行相关的任务----运行架构

    三 Spark的部署
  • 单机版
  • 集群版
1 Standalone-独立模式(spark自带的集群管理器),但效率不高-使用率低
 2 Yarn-Hadoop集群上的资源调度,所以可以同时在hadoop上部署spark
 3 Mesos-可选

即 hadoop提供底层的数据存储HDFS和资源调度Yarn功能,上层接Spark进行数据运算(实时性好,批处理方面表现较优),取代hadoop原有的MapReduce数据计算功能。

spark核心是SparkContext,用Spark SQL 做查询计算,Streaming做流计算(2.3版加了Structured Streaming功能,可以进行毫秒级的流计算),MLlib做机器学习计算,GraphX做图计算(5个组件可以较好的满足数据Fenix功能)

如何用spark 循环 pyspark循环遍历rdd数据_应用程序