- spark-shell(测试)和spark-submit(生产)
- main方法里面创建一个sparkContext就是driver端
- Application 应用程序 = 1 Driver进程 + N Executors进程
- Driver:Process, main()创建SparkContext
client:
cluster: - Executor:Process,执行task,task(线程)是由分区来决定的,一个分区对应一个task(map/filter)
Worker ==> NodeManager
算子 - Job 包含很多个task ==> 一个action对应一个job
- Stage ==> 一个Job可能会被切分成多个stage
Spark1:3个executor data
Spark2:3个executor data
Storage: data
sc.textFile(“hdfs://…”)
sc.textFile(“alluxio://…”)
rdd = 100 partition
1 partiton = 10000个元素
总的元素个数: 100w
map:rdd保存到数据库 connection 100W
mappartition:一个partition处理一次 : 100 connection
Jack
100partition
rdd.filter().filter()…filter().coalesce(5).save…
窄依赖 narrow dependency
一个父RDD的partition至少会被子RDD的某个partition使用一次
宽依赖 wide dependency
一个父RDD的partition会被子RDD的partition使用多次
Stage:遇到shuffle就产生新的stage
groupByKey vs reduceByKey
(hello, <1,1,1,1,1,1>)