启动RSS模式
启动RSS模式成功后可使用ResourceManager Web UI查看启动结果,并提交Spark-SQL任务进行验证。
前提条件
已完成启动前准备。
操作步骤
- 添加RSS的Node Labels分区并建立节点映射。
- 添加Node Labels为RSS的分区。
yarn rmadmin -addToClusterNodeLabels "RSS"
- 列出Yarn节点列表,选择某个节点作为RSS节点。
yarn node -list
- 配置指定节点分区映射。
yarn rmadmin -replaceLabelsOnNode "agent04=RSS"
- 执行完成后可在ResourceManager Web UI界面进行结果验证。
- Nodes页面地址:http://IP_Adress:8088/cluster/nodes
图1 Nodes页面
- Node Labels页面地址:http://IP_Adress:8088/cluster/nodelabels
图2 Node Labels页面
- Nodes页面地址:http://IP_Adress:8088/cluster/nodes
- 添加Node Labels为RSS的分区。
- 使用CapacityScheuler配置分区。
capacity-scheduler.xml修改如下配置,并分发该文件至所有节点,“/usr/local/hadoop”为hadoop安装路径。
for i in {1..4};do scp -r /usr/local/hadoop/etc/hadoop/capacity-scheduler.xml agent0$i:/usr/local/hadoop/etc/hadoop/;done
表1 配置项说明 配置项
值
说明
yarn.scheduler.capacity.<queue-path>.accessible-node-labels
逗号分割的分区列表。
指定队列的可访问分区列表。
yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.capacity
值规则可参考yarn.scheduler.capacity.<queue-path>.capacity。
指定队列在指定可访问分区的资源容量。
重要
必须配置其所有祖先队列的容量才能生效。
yarn.scheduler.capacity.<queue-path>.accessible-node-labels.<label>.maximum-capacity
值规则可参考yarn.scheduler.capacity.<queue-path>.maximum-capacity,默认值为100。
指定队列在指定可访问分区的可使用的最大资源容量。
yarn.scheduler.capacity.<queue-path>.default-node-label-expression
分区名,默认为空字符串代表DEFAULT分区。
指定队列所提交作业中没有特别指定分区的容器请求所使用的默认分区。
- 配置RSS的capacity,配置文件中的hadoop_user为用户配置的hadoop用户名。
<!-- 在XML中Node Label相关新增配置项 --> <property> <!-- 配置default队列可访问RSS分区,必须 --> <name>yarn.scheduler.capacity.hadoop_user.default.accessible-node-labels</name> <value>RSS</value> </property> <property> <!-- 配置default队列所有祖先队列RSS分区容量,必须 --> <name>yarn.scheduler.capacity.hadoop_user.accessible-node-labels.RSS.capacity</name> <value>100</value> </property> <property> <!-- 配置default队列在RSS分区容量,必须 --> <name>yarn.scheduler.capacity.root.default.accessible-node-labels.RSS.capacity</name> <value>100</value> </property> <property> <!-- 配置default队列在RSS分区最大容量,可选,默认为100 --> <name>yarn.scheduler.capacity.hadoop_user.default.accessible-node-labels.RSS.maximum-capacity</name> <value>100</value> </property>
图3 capacity配置完成配置并保存后,在Yarn状态页使用ResourceManager组件中的refreshQueues热更新调度器队列配置,并在控制台上观察任务是否成功。成功后使用ResourceManager Web UI验证结果。
执行以下命令更新队列。
yarn rmadmin -refreshQueues
图4 队列更新结果 - RSS启动前配置。
- 配置Yarn启动脚本“/home/ockadmin/opt/ock/ucache/24.0.0/linux-aarch64/sbin/ock-launch-cluster.sh”中的ock_memory大于mf.conf中的ock.mf.mem_size,并设置分区标签为RSS。
ock-launch-cluster.sh示例如下:
#launch server 所在的Yarn分区标签,修改为ESS模式则需将此处置空 ock_master_partition_label="RSS" ... #OCK占用的占用的内存空间,单位为MB ock_memory="61440"
mf.conf示例如下:
#mf占用的内存空间,单位为bit ock.mf.mem_size = 53687091200
- 写入所有节点的hostname到“/home/ockadmin/opt/ock/conf/ock_node_list”,示例如下。
agent01 agent02 agent03
修改完成后,分发至所有节点。
- 配置Yarn启动脚本“/home/ockadmin/opt/ock/ucache/24.0.0/linux-aarch64/sbin/ock-launch-cluster.sh”中的ock_memory大于mf.conf中的ock.mf.mem_size,并设置分区标签为RSS。
- 执行启动脚本。
sh /home/ockadmin/opt/ock/ucache/24.0.0/linux-aarch64/sbin/ock-launch-cluster.sh
如图5所示,设置为RSS标签的节点启动了2个container,分别为10GB的Yarn启动进程和60GB的启动ockd进程的container。
查看日志
- 在RSS节点查看OCK启动日志。
tail -f /home/ockadmin/opt/ock/logs/ockd.agent04.log
图6 OCK启动日志ps -ef | grep /ockd
图7 OCKD进程 - 提交Spark-SQL任务并执行,查看driver日志。
sh /testdemo/ock_rss_test.sh 1 1000
在Web界面查看除RSS节点以外的3个计算节点,启动了大量container进行计算。
图8 Web界面SQL任务执行成功后,查看driver日志。
tail -f /home/action/driver1/log_rss1
图9 dirver日志