原理
注意:
- 在实际开发中, 大数据任务都有统一的资源管理和任务调度工具来进行管理! —Yarn使用的最多。
- 因为它成熟稳定, 支持多种调度策略:FIFO/Capcity/Fair
- 可以使用Yarn调度管理MR/Hive/Spark/Flink
安装
-
关闭之前的Spark-Standalone集群
/export/server/spark/sbin/stop-all.sh
-
配置Yarn历史服务器并关闭资源检查
vim /export/servers/hadoop/etc/hadoop/yarn-site.xml
<configuration>
<!-- 配置yarn主节点的位置 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node01</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 设置yarn集群的内存分配方案 -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>20480</value>
</property>
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!-- 开启日志聚合功能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置聚合日志在hdfs上的保存时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
<!-- 设置yarn历史服务器地址 -->
<property>
<name>yarn.log.server.url</name>
<value>http://node01:19888/jobhistory/logs</value>
</property>
<!-- 关闭yarn内存检查 -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
注:如果之前没有配置,现在配置了需要分发并重启yarn
cd /export/servers/hadoop/etc/hadoop
scp -r yarn-site.xml root@node02:$PWD
scp -r yarn-site.xml root@node03:$PWD
关闭yarn:
/export/server/hadoop/sbin/stop-yarn.sh
打开yarn:
/export/server/hadoop/sbin/start-yarn.sh
- 配置Spark的历史服务器和Yarn的整合
- 修改spark-defaults.conf
进入配置目录
cd /export/servers/spark/conf
修改配置文件名称
mv spark-defaults.conf.template spark-defaults.conf
vim spark-defaults.conf
添加内容:
spark.eventLog.enabled true
spark.eventLog.dir hdfs://node01:8020/sparklog/
spark.eventLog.compress true
spark.yarn.historyServer.address node01:18080
- 修改spark-env.sh
修改配置文件
vim /export/servers/spark/conf/spark-env.sh
增加如下内容:
## 配置spark历史日志存储地址
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node01:8020/sparklog/ -Dspark.history.fs.cleaner.enabled=true"
注意:sparklog需要手动创建
hadoop fs -mkdir -p /sparklog
- 修改日志级别
进入目录
cd /export/servers/spark/conf
修改日志属性配置文件名称
mv log4j.properties.template log4j.properties
改变日志级别
vim log4j.properties
修改内容如下:
- 分发-可选,如果只在node1上提交spark任务到yarn,那么不需要分发
cd /export/servers/spark/conf
scp -r spark-env.sh root@node02:$PWD
scp -r spark-env.sh root@node03:$PWD
scp -r spark-defaults.conf root@node02:$PWD
scp -r spark-defaults.conf root@node03:$PWD
scp -r log4j.properties root@node02:$PWD
scp -r log4j.properties root@node03:$PWD
- 配置依赖的Spark 的jar包
-
在HDFS上创建存储spark相关jar包的目录
hadoop fs -mkdir -p /spark/jars/
-
上传$SPARK_HOME/jars所有jar包到HDFS
hadoop fs -put /export/servers/spark/jars/* /spark/jars/
-
在node01上修改spark-defaults.conf
vim /export/servers/spark/conf/spark-defaults.conf
添加内容:
spark.yarn.jars hdfs://node01:8020/spark/jars/*
分发同步-可选
cd /export/servers/spark/conf
scp -r spark-defaults.conf root@node02:$PWD
scp -r spark-defaults.conf root@node03:$PWD
- 启动服务
- 启动HDFS和YARN服务,在node01执行命令
start-dfs.sh
start-yarn.sh
或
start-all.sh
-启动MRHistoryServer服务,在node01执行命令
mr-jobhistory-daemon.sh start historyserver
-
启动Spark HistoryServer服务,,在node01执行命令
/export/servers/spark/sbin/start-history-server.sh -
MRHistoryServer服务WEB UI页面:
http://node01:19888 -
Spark HistoryServer服务WEB UI页面:
http://node01:18080/