标签:Task Application worker RDD executor 基本操作 Spark 原理
一.请用图文阐述Spark生态系统的组成及各组件的功能。
1. Spark Core
Spark Core是整个Spark生态系统的核心组件,是一种大数据分布式处理框架,实现了MapReduce同时还提供了filter、join、groupByKey等更丰富的算子。
2. Mesos、Yarn
资源管理、资源任务调度
3. Spark Streaming
Spark Streaming是构建在Spark上的实时计算框架,它扩展了Spark处理大规模流式数据的能力。吞吐量大,并提供丰富的API用于流数据计算。
4. Spark SQL、Hive
Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制
Spark SQL重新实现了SQL解析等原来Hive完成的工作,Spark SQL在功能上全覆盖了原有的Shark,且具备更优秀的性能。
二.请详细阐述Spark的几个主要概念及相互关系:
Master, Worker;
RDD,DAG;
Application, job,stage,task;
driver,executor
Claster Manager DAGScheduler, TaskScheduler.
1.master和worker
master节点常驻master守护进程,负责管理worker节点,从master节点提交应用。
worker节点常驻worker守护进程,与master节点通信,并且管理executor进程。
2.RDD和DAG
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集
RDD算子构建了RDD之间的关系,整个计算过程形成了一个由RDD和关系构成的DAG
3.Application、job、stage、task
RDD任务切分中间分为:Application、Job、Stage和Task
(1)Application:初始化一个SparkContext即生成一个Application;
(2)Job:一个Action算子就会生成一个Job;
(3)Stage:Stage等于宽依赖的个数加1;
(4)Task:一个Stage阶段中,最后一个RDD的分区个数就是Task的个数。
4.driver,executor
Driver进程应用main()函数并且构建sparkContext对象,当我们提交了应用之后,便会启动一个对应的Driver进程,driver本身会根据我们设置的参数占有一定的资源就是executor,然后集群管理者会分配一定数量的executor,每个executor都占用一定数量的cpu和memory。
executor进程宿主在worker节点上,一个worker可以有多个executor。每个executor持有一个线程池,每个线程可以执行一个task,executor执行完task以后将结果返回给driver,
5.Claster Manager DAGScheduler, TaskScheduler.
TaskScheduler(是低级的调度器接口)。TaskScheduler负责实际每个具体Task的物理调度。
DagScheduler(是高级的调度)。DAGScheduler负责将Task拆分成不同Stage的具有依赖关系(包含RDD的依赖关系)的多批任务,然后提交给TaskScheduler进行具体处理
三.在PySparkShell尝试以下代码,观察执行结果,理解sc,RDD,DAG。请画出相应的RDD转换关系图。
测试代码查看
sc
lines = sc.textFile("file:///home/hadoop/wc/spark_test.txt")
lines
words=lines.flatMap(lambda line:line.split())
words
wordKV=words.map(lambda word:(word,1))
wordKV
lineKV=lines.map(lambda line:(1,line))
lineKV
lines.foreach(print)
words.foreach(print)
wordKV.foreach(print)
lineKV.foreach(print)
转换关系图解:
标签:Task,Application,worker,RDD,executor,基本操作,Spark,原理 来源: https://www.cnblogs.com/cinamashiro/p/15983948.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。