zoukankan      html  css  js  c++  java
  • 01 Spark架构与运行流程

    1. 阐述Hadoop生态系统中,HDFS, MapReduce, Yarn, Hbase及Spark的相互关系,为什么要引入Yarn和Spark。

    HDFS是Hadoop体系中数据存储管理的基础,它是一个高度容错的系统,能检测和应对硬件故障,在低成本的通用硬件上运行。

    HBase构建在HDFS之上的分布式,面向列的NoSQL数据库。HBase中保存的数据可以使用MapReduce来处理,它将数据存储和并行计算完美地结合在一起。

    Yarn是一个分布式资源统一管理器,可以在上面运行各种计算框架(包括MapReduce、Spark、Storm、MPI等)。

    Spark是一个快速、通用的大规模数据处理引擎,和MapReduce在同一个层级,主要解决分布式计算框架的问题。Spark可以说是对Hadoop MapReduce的改进,同时又兼容Hadoop家族,它可以运行在Yarn之上,负责存储的仍然是HDFS,它替代的是MapReduce计算框架,获取更高更快更强的计算速度。

    Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而只适用于离线批处理的应用场景。Spark最大的特点就是将计算数据、中间结果都存储在内存中,大大减少了I/O开销。因此,Spark更适合于迭代运算比较多的数据挖掘与机器学习运算。

    2. Spark已打造出结构一体化、功能多样化的大数据生态系统,请简述Spark生态系统。

    Spark的生态系统主要包含了Spark Core、Spark SQL、Spark Streaming、Structured Streaming、MLlib和GraphX等组件,各个组件的具体功能如下:

    Spark Core:Spark Core包含Spark最基础和最核心的功能,如内存计算、任务调度、部署模式、故障恢复、存储管理等,主要面向批数据处理。

    Spark SQL:Spark SQL是用于结构化数据处理的组件,允许开发人员直接处理RDD,同时也可查询Hive,HBase等外部数据源。

    Spark Streaming:Spark Streaming是一种流计算框架,可以支持高吞吐量、可容错处理的实时流数据处理,其核心思路是将流数据分解成一系列短小的批处理作业,每个短小的批处理作业都可以使用Spark Core进行快速处理。

    Structrued Streaming:Structured Streaming是一种基于Spark SQL引擎构建的、可扩展且容错的流处理引擎。

    MLlib:MLlib提供了常用机器学习算法的实现,包括聚类、分类、回归、协同过滤等,降低了机器学习的门槛,开发人员只需具备一定的理论知识就能进行机器学习的工作。

    GraphX:GraphX是Spark中用于图计算的API,可认为是Pregel在Spark上的重写和优化,GraphX性能良好,拥有丰富的功能和运算符,能在海量数据上自如地运行复杂的图算法。

    3. 用图文描述你所理解的Spark运行架构,运行流程。

    Spark运行架构由四部分组成:

    1.集群资源管理器(Cluster Manager):YARN或者Mesos等资源管理框架

    2.运行作业任务的工作节点(Worker Node)

    3.每个应用的任务控制节点(Driver Program/Driver)

    4.每个工作节点上负责具体任务的执行进程(Executor)

    Spark的运行基本流程 :

    1、当一个Spark应用被提交时,首先需要为这个应用构建起基本的运行环境,即由任务控制节点(Driver)创建一个SparkContext对象,由Sparkcontext负责和资源管理器的通信以及进行资源的申请、任务的分配和监控等,SparkContext会向资源管理器注册并申请运行Executor的资源,SparkContext可以看成是应用程序连接集群的通道。

    2、资源管理器为Executor分配资源,并启动Executor进程,Executor运行情况将随着"心跳"发送到资源管理器上。

    3、SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAG调度器进行解析,将DAG图分解成多个‘阶段’(每个阶段都是一个任务集),并且计算出各个阶段之间的依赖关系,然后把一个个“任务集”提交给底层的任务调度器进行处理;Executor向SparkContext申请任务,任务调度器将任务分发给Executor运行,同时,SparkContext将应用程序代码发放给Executor。

    4、任务在Executor上运行,把执行结果反馈给任务调度器,然后反馈给DAG调度器,运行完毕后写入数据并释放所有资源。

  • 相关阅读:
    友盟冲突解决com.umeng.weixin.handler.UmengWXHandler cannot be cast to com.umeng.socialize.handler.UMWXHandler
    插入mysql失败,因为java数据类型是个实体类,加上.id就好了
    app升级注意事项version
    关于ehcache缓存中eternal及timeToLiveSeconds和timeToIdleSeconds的说明
    WinFom解决最小化最大化后重绘窗口造成闪烁的问题
    Redis 发布订阅
    Redis 发布订阅
    ASPxGridView
    ASPxGridView
    C#-WebRequest 超时不起作用
  • 原文地址:https://www.cnblogs.com/0311Chrome/p/14856587.html
Copyright © 2011-2022 走看看