目录
Hadoop
看下图,传统的操作系统主要是文件系统和处理器,迁移到集群模式对应Hadoop的HDFS和YARN(Yet Another Resource Negotiator),Yarn负责执行,调度,决定可以做什么以及在哪里进行。
Yarn
YARN(Yet Another Resource Negotiator)是个集群管理器,负责整个集群资源的调度和任务的执行。
组件 | 功能 |
---|---|
RM ResourceManager 资源管理器 | 一个集群一个,负责集群的统一管理和调度 处理客户端的请求: 提交一个作业、杀死一个作业 监控NM,一旦某个NM挂了,那么该NM上运行的任务需要告诉AM来如何进行处理 |
NM NodeManager 节点管理器 | 一个集群中有多个, 负责当前节点资源管理和使用 |
AM ApplicationMaster 应用(任务)管理器 | 每个应用程序对应一个:MR、Spark,负责应用程序的管理 为应用程序向RM申请资源(core、memory),分配给内部task 需要与NM通信:启动/停止task,task是运行在container里面,AM也是运行在container里面 |
Container 容器 | 一个节点上有多个Container,由NM管理分配给application 封装了CPU、Memory等资源的一个容器 |
Client 客户端 | 提交作业 submit 查询作业的运行进度 杀死作业 kill |
Spark
Apache Spark被认为是对原始大数据技术Hadoop的强大补充。 Apache Spark是一种更易于访问、功能强大的工具,用于解决与大数据有关的各种任务,它已成为大数据的主流和最需要的框架,从2.0版开始,Spark已成为Hadoop的一部分。
Apache Spark是一个用于批处理和流处理的开源云计算框架,旨在用于快速内存数据处理。它运行在其它系统之上,可以在EC2,Hadoop YARN,Mesos或Kubernetes上使用独立集群模式运行Spark。我将告诉您最流行的构建:Hadoop Yarn的Spark。
spark架构
spark on yarn
提交任务
spark客户端提交任务如下,提交了一个样例程序
--master参数指定主服务器的地址,在YARN模式下,ResourceManager RM的地址从Hadoop配置中获取的,--master参数是yarn;
--deploy-mode有两种模式,cluster模式是指spark driver运行在AM内,而client模式是指driver运行在客户端;
--executor-cores、memory指的是container的核数和内存资源
--queue
$ ./bin/spark-submit --class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--driver-memory 4g \
--executor-memory 2g \
--executor-cores 1 \
--queue thequeue \
examples/jars/spark-examples*.jar \
10
当客户端提交一个任务时,
RM会分配一个Container容器作为任务的ApplicationMaster AM,
AM会向RM注册自身并申请资源(内存、处理器),
申请到资源后AM启动container,并上报配置给NM,
NM监控container并将任务状态上报给RM,
客户端与AM交互,获取任务状态;
当任务执行结束,AM向AM deregister自身,并释放contaner资源。