MapReduce1.x
JobTracker 资源的管理和作业的调度 TaskTracker
JobTracker是瓶颈
仅支持MapReduce
资源利用率 空闲时没有利用好资源
Hadoop2.x YARN
ApplicationMaster 职责 : 管理Task作业
RM 要配HA,但可能存在问题:有时候一个挂掉,另外一个起不来。所以要对RM改造成真正的HA。
2)Spark on YARN
2.1 Spark on YARN的区别就是:Driver端运行在哪里
cluster:driver run in am am in nm (AM不仅要申请资源,还要分发作业)
client:driver run in client(本地应用程序,AM仅仅需要申请资源。因为作业分发,是由driver端完成的)
2.2 Spark on YARN有没有worker?
没有,worker只有standalone的模式才有。
2.3 对于Spark on YARN来说,excutor运行在nm里面的container里面
3)配置参数
3.1 Spark on YARN启动时,会有以下提示,并把本地的jar包提交到yarn,因为耗性能所以要调整
spark-env.sh
spark.yarn.jars hdfs:xxx:xxxx/.../*.jar 把spark用到的jar都放到该hdfs目录
3.2 其他jar包
spark.executor.extraClassPath /xxx/.jar
spark.driver.extraClassPath /xxx/.jar
3.3 最大端口数量
spark.port.maxRetires 16 生产必须调大,spark访问最大值
3.4 --properties-file FILE参数:不同业务线取不同配置,文件形式读取 /***/a.conf
--master
--deploy-mode
简写:yarn client ==> yarn / yarn-client
简写:yarn cluster ==> yarn-cluster
设置完config并成功启动后,必须到UI页面确保配置是否生效成功
SparkSubmitArguments *****源码 在这里找配置才是最全的
executorMemory = Option(executorMemory)
.orElse(sparkProperties.get("spark.executor.memory"))
.orElse(env.get("SPARK_EXECUTOR_MEMORY"))
.orNull
def getDefaultPropertiesFile(env: Map[String, String] = sys.env): String = {
// 系统环境变量中设置: export SPARK_CONF_DIR=$SPARK_HOME/conf
env.get("SPARK_CONF_DIR")
// /home/hadoop/app/spark-2.2.0-bin-2.6.0-cdh5.7.0/conf/spark-default.conf
.orElse(env.get("SPARK_HOME").map { t => s"$t${File.separator}conf" })
.map { t => new File(s"$t${File.separator}spark-defaults.conf")}
.filter(_.isFile)
.map(_.getAbsolutePath)
.orNull
}
client
CoarseGrainedExecutorBackend * 2
SparkSubmit
ExecutorLauncher
转载:http://www.cnblogs.com/MOBIN/p/5857314.html
请使用spark-submit提交我们的wc分别在client和cluster模式下测试
注意两者在运行过程中进程的差别
-----------------------------------------------------------
// TODO...
Spark on YARN
HistoryServer
job = n stage = n task
开启historyserver
1) 开关
2) 日志记到什么地方去
A
B
3) 展示
--spark.eventLog.enabled=true 把UI的日志存在机器上
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://hadoop000:8020/spark_log"
spark.history.cleaner.enabled false
spark.history.fs.cleaner.interval 1d
spark.history.fs.cleaner.maxAge 7d
这3个参数一定要打开 不然hdfs会有压力
UI监控:
/api/v1/applications 返回spark json
/api/v1/applications/id/jobs 返回spark作业的json
SQL : thriftserver/beeline
bin/beeline -u jdbc:hive2://localhost:10000 -n hadoop !q退出