spark-learn-01

spark是基于内存计算的分布式大数据计算框架;

spark执行特点

  1. 中间结果输出到内存,而非硬盘;
  2. 抽象出分布式内存存储结构RDD;
  3. RDD支持粗粒度写操作,同时对读操作,能细化到每条记录;
  4. 能控制数据在不同节点上的分区,即自定义分区策略;
  5. 不同stage之间会shuffle,shuffle是连接有依赖的stage的桥梁,上游stage输出到下游stage必须经过shuffle,shuffle将相同的分组数据拆分后重聚到同一节点再进行处理,spark shuffle支持基于hash和基于排序的聚合机制;
  6. spark采用了事件驱动的类库AKKA来启动任务,通过线程池的复用线程来避免系统启动和切换的开销;

spark的优势

  1. 能打造全栈多计算范式的高效数据流水线
    支持复杂查询和数据分析任务,除了能进行简单的Map和Reduce外,spark还能进行SQL查询,流式计算,机器学习和图计算,用户可以在同一数据流中,无缝搭配这些计算范式;
  2. 轻量级快速处理
    Scala代码简洁强大,spark使用External API充分利用和集成Hadoop等这些第三方组件,spark基于内存计算,中间结果输出缓存到内存,减少了磁盘的IO,提高了效率;
  3. 易于使用,支持多语言
    shell交互,Java,Python,Scala
  4. 多数据源支持
    HDFS,Hive,Hbase…

spark目前的不足

  1. RDD模型适合的是粗粒度的全局数据并行计算,不适合细粒度的,需要异步更新的计算;
  2. 特定需求下,组件比其他组件性能稍差,例如,spark streaming&&storm,GraphX&&GraphLab

spark生态系统

美国伯克利大学BADS

  • Spark(核心组件)

  • Spark Streaming(流式计算)

  • Spark SQL(结构化数据sql查询和分析)

  • Spark MLlib(分布式机器学习库)

  • Spark GraphX(并行图计算框架)

  • Mesos(资源管理框架)

  • Tachyon(内存分布式文件系统)

  • BlinkDB(近似查询引擎)
    spark-learn-01_第1张图片
    spark不仅实现了MapReduce的算子:map函数和reduce函数,还提供了更丰富的算子:filter,join,groupByKey,reduceByKey…
    spark-learn-01_第2张图片
    spark SQL和shark一样,都提供了在大数据上的SQL查询功能,即,SQL on spark,不同的是,shark的查询编译和优化器使用hive,spark SQL则使用catalyst,同时底层使用spark作为执行引擎来实现SQL算子,效率比shark高,并且,spark SQL支持不同的数据持久层,比如HBASE,hive,HDFS等;

    spark streaming将流数据按指定时间片累积为RDD,然后将每个RDD进行批处理,这样就实现了大规模的流数据处理;

    spark MLlib是分布式的机器学习库,支持常见的机器学习算法,比如,分类,聚类,回归,协同过滤等;

spark架构和运行逻辑

架构

  • Driver(运行application的main函数并且创建sparkContext,即驱动程序)
  • Client(提交作业的客户端)
  • Worker(集群中任何可以运行application作业的逻辑节点,worker是在物理节点上运行的进程,一个worke进程可以运行一个或多个executor进程)
  • Executor(运行在worker上的task执行器,executor是真正处理作业的进程,executor启动线程池来处理task,并且将数据源存储到内存或磁盘,每个application都会申请各自独立的一组executor来执行作业,即不同application的executor是隔离的)
  • SparkContext(整个应用的上下文,控制应用的生命周期)
  • RDD(spark的基本计算单元,一组RDD形成DAG)
  • DAG Scheduler(根据job构建基于stage的DAG工作流,并且将stage提交给Task Scheduler)
  • Task Scheduler(将task分发给executor)
  • SparkEnv(线程级别的上下文,提供运行时的重要组件的引用)

运行逻辑

  • 作业提交流程
    spark-learn-01_第3张图片

  • 作业运行逻辑
    spark-learn-01_第4张图片
    spark-learn-01_第5张图片

你可能感兴趣的:(spark)