作业调度
术语
Application
application(应用)其实就是用spark-submit提交的程序。比方说spark examples中的计算pi的SparkPi。一个application通常包含三部分:从数据源(比方说HDFS)取数据形成RDD,通过RDD的transformation和action进行计算,将结果输出到console或者外部存储(比方说collect收集输出到console)。
Drive
Spark中的driver感觉其实和yarn中Application Master的功能相类似。主要完成任务的调度以及和executor和cluster manager进行协调。
Job
一个算子,比如count,frist等
Stage
把多个Job组合为一个,同为宽(需要shuffle)\窄依赖的。
task
RDD一般是带有partitions的,每个partition的在一个executor上的执行可以任务是一个Task。
作业提交
在client节点配置中spark-env.sh添加Hadoop_HOME的配置目录即可提交yarn 任务
yarn-client:Drive在客户端启动,可直接在客户端看日志,但客户端和集群要频繁的网络交流,适合测试。
yarn-cluster:Drive在集群随机选择机器中的一台机器启动,不方便看日志,只能通过yarn查看日志。适合运行。
应用之间作业调度
由集群管理器实现,spark会向集群请求资源,集群按照自己的调度程序会选择给部分或全给。
应用内部
主要是调度stage产生的TaskSet
FIFO
FAIR,二级调度池,一级按照饥饿程度,二级自定义。
独立集群管理器
启动
- 每台集群spark
- 设置shh无密码登录
- 编辑主节点的conf/slaves 文件并填上所有工作节点的主机名。
- 在主节点上运行sbin/start-all.sh
提交
提交时使用的主机名和端口号必须精确匹配用户界面中的URL。如果名字和配置的不一样,提交也会失败。
配置资源
- 执行进程内存
- 使用核心数
yarn
设置环境变量HADOOP_CONF_DIR