Spark[3]:handoop生态与Spark架构启动等相关概念

Posted little_miya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark[3]:handoop生态与Spark架构启动等相关概念相关的知识,希望对你有一定的参考价值。

一、handoop

开源的大数据框架。

框架的核心组件

  • HDFS: Hadoop Distributed File System
  • MapReduce: processing unit
  • YARN: Yet Another Resource Negotiator
  • Hadoop Common:collection of common utilities and libraries that support other Hadoop modules.

HDFS

  • starage layer of Hadoop
  • split files into blocks, creates replicas of the blocks, stores them on different machines(block是读写的最小单位,默认的大小根据系统,可能是64M或者128M)
  • provide access to streaming data(streaming意思是数据流是持续的,而非批量式的)
  • 使用命令行工具与Hadoop交互
  • write once read many

HDFS中的Nodes概念:

rack:40-50个data nodes(secondary node)的集合

rack awareness in HDFS指的是选择node的时候要选择挨得最近的rack,这样可以减少network traffic. 实现这一目标是依赖name node(primary node),其中保存着rack的相关信息。这种做法同样有利于replication

HDFS的架构:

mapreduce

并行计算框架,包含两个主要任务,map和reduce。能够应对各种数据类型:关系,半关系,非关系型。

handoop 生态系统

  • Ingest: Flume & Sqoop
  • Store:HDFS & HBase(allow dynamic change)
  • Process and Analyze:Pig & Hive
  • Access:Impala & Hue

举个例子:

我们传入一个word文件,查看文件中有多少个字。下图说明数据具体流程。

二、spark 相关概念

特性

  • in memory
  • be written in Scala and work in JVM
  • distributed computing

spark的组件:

spark架构

Driver是公司的CEO,Cluster是部门负责人,executor是打工仔,跟真实的物理层打交道。

Spark context将任务分解到cluster上,

Cluster Manager来管理cluster上资源的分配。

Driver program驱动程序

单进程,driver program 运行用户的程序给cluster分配工作(Job);
Spark Context 将job 分解为tasks ,将data分解为partitions,小的tasks面向partitions可以在Cluster上的多个worker node平行执行。

driver program有两种deploy Modes

Executor
多进程,平行处理cluster的工作。
每个worker node可以启动执行程序Executor,来处理task,每个executor会给分配几个core,每个core运行一个task。
所以提高并行效果,需要增多cores或者Executors.
执行完成之后,要么生成新的RDD(transform)要么返回给driver(Action)

stage and shuffles

stage的概念其实是和shuffle绑定在一起的。当有shuffle的时候,就将整个job分割开为一系列tesks,分割的界限就是shuffle操作。

shuffle是耗费时间的,因为需要序列化,以及需要和io打交道。但是有些操作是必须和其他的partitions打交道,比如groupby().

举个例子:

stage1可能是个map操作.

建议在collection之前使用reduce,因为在大数据上使用collection,很容易占满内存

cluster manager

cluster manager is essential for scaling big data. 有如下几种:

  • Spark Standalone: Spark启动就有,最适合simple cluster的应用场景

    设置流程如下所示:

  • Apache Hadoop YARN

  • Apache Mesos

  • Kubernetes:用来运行容器应用的开源系统,主要解决集群资源调度的问题。
    使用Kubernetes的优势:

  1. Kubernetes runs containerized applications on a cluster ​providing flexible, automated deployments.
  2. Kubernetes provides developers with a portable, consistent experience whether working with an application on-premises or in the cloud.
  3. Kubernetes benefits application performance with features including network service discovery, cluster load balancing, automated scaling, and orchestrated storage.
    在K8s上启动Spark Application:

Local Mode


使用local mode 启动方法:

如何运行一个Apache Spark Application

unifies interface: spark-submit

或者使用spark shell一键启动。

02 Spark架构与运行流程

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

Spark的设计遵循“一个软件栈满足不同应用场景”的理念,逐渐形成一套完整生态系统,既能够提供内存计算框架,也可以支持SQL即席查询、实时流式计算、机器学习和图计算等。Spark可以部署在资源管理器YARN之上,提供一站式的大数据解决方案。因此,Spark所提供的生态系统同时支持批处理、交互式查询和流数据处理。

 

2、用图文描述你所理解的Spark运行架构,运行流程

基本概念:

Application:用户编写的Spark应用程序。
Driver:Spark中的Driver即运行上述Application的main函数并创建SparkContext,创建SparkContext的目的是为了准备Spark应用程序的运行环境,在Spark中有SparkContext负责与ClusterManager通信,进行资源申请、任务的分配和监控等,当Executor部分运行完毕后,Driver同时负责将SparkContext关闭。
Executor:是运行在工作节点(WorkerNode)的一个进程,负责运行Task。
RDD:弹性分布式数据集,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
DAG:有向无环图,反映RDD之间的依赖关系。
Task:运行在Executor上的工作单元。
Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。
Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表一组关联的,相互之间没有Shuffle依赖关系的任务组成的任务集。
Cluter Manager:指的是在集群上获取资源的外部服务。目前有三种类型
1) Standalon : spark原生的资源管理,由Master负责资源的分配
2) Apache Mesos:与hadoop MR兼容性良好的一种资源调度框架
3) Hadoop Yarn: 主要是指Yarn中的ResourceManager


Spark运行基本流程:

 

1、为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控
2、资源管理器为Executor分配资源,并启动Executor进程
3、SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理。
Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。
4、Task在Executor上运行把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。


Spark运行架构特点:

1、每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。
2、Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。
3、Task采用数据本地性和推测执行等优化机制。

以上是关于Spark[3]:handoop生态与Spark架构启动等相关概念的主要内容,如果未能解决你的问题,请参考以下文章

学习Scala 进击大数据Spark生态圈

3:spark设计与运行原理

我的新书《Hadoop+Spark生态系统操作与实战指南》已经上架

我的新书《Hadoop+Spark生态系统操作与实战指南》已经上架

hadoop生态搭建(3节点)-10.spark配置

想学大数据?一篇长文带你走进大数据 | Spark的基础知识与操作