下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

软件设计:Spark

作者:wuzixihe     来源: https://www.cnblogs.com/guobm/p/10612001.html点击数:829发布时间: 2020-04-04 18:24:33

标签: Hadoop数据处理软件设计

  ApacheSpark是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UCBerkeleyAMPlab(加州大学伯克利分校的AMP实验室)所开源的类HadoopMapReduce的通用并行框架,Spark,拥有HadoopMapReduce所具有的优点;但不同于MapReduce的是--Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。

  1spark是做什么的

  数据处理:用来快速处理数据。

  迭代计算:有效应对多步的数据处理逻辑。

  2常用进程

  JDBCServer:常驻Spark的应用,通过连接JDBCServer,执行sql语句。

  JobHistory:单节点进程,用于展示历史应用的执行情况。

  3核心概念

  3.1application:spark用户程序,用户提交一次应用为一个app,一个app产生一个sparkcontext。

  3.2job:一个app可被划分为多个job,划分标记为action动作,有collect\\count等。

  3.3stage:每个job被划分多层stage,划分标记为shffle过程,stage按照父子关系依次执行。

  3.4task:具体的执行任务单位,被分发到executor上执行具体任务。

  3.5ClusterManager集群资源管理服务,包含主节点和多个运行节点,支持运行模式有Standalone\\mesos\\Yarn。

  3.6Driver:运行app的大脑,负责job的初始化,将job转换成task并提交执行。

  3.7DAGScheduler:是一个面向Stage层面的调度器,按照Stage提交task集合给TaskScheduler。

  3.8TaskScheduler:提交task给Executor运行,并管理执行结果。

  3.9BlockManager:管理app运行周期的中间数据。

  3.10Executor:是app运行在workernode上的一个进程,负责运行task,生命周期同app。

  4运行过程

  1)构建SparkApplication运行环境(启动SparkContext)

  2)SparkContext向资源管理器(ClusterManager)申请运行Executor资源,并启动StandaloneExecutorBackend。

  3)Executor向SparkContext注册。

  4)SparkContext启动应用程序DAG调度,Stage划分,TaskSet生成。

  5)TaskScheduler调度TaskSet,将task分发给Executor运行。

  6)task在Executor上运行,运行完毕释放所有资源。

  Spark是一种与Hadoop相似的开源集群计算环境,但是两者之间还存在一些不同之处,这些有用的不同之处使Spark在某些工作负载方面表现得更加优越,换句话说,Spark启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。

赞(12)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程