启动RSS模式

启动RSS模式成功后可使用ResourceManager Web UI查看启动结果,并提交Spark-SQL任务进行验证。

  • RSS模式和ESS模式不可以混合使用。
  • BoostShuffle中executor端spark.conf中如果指定使用了RemoteShuffleManager(RSS模式)后,OmniShuffle进程中ock.conf中ock.ucache.rss.mode配置需要设置为true,否则不应加入集群中,反之亦然。
  • 如果需要ESS切换到RSS或者由RSS切换ESS模式需要把所有OCKD进程停止掉,然后更换spark.conf中的Shufflemanager类型以及ock.conf中ock.ucache.rss.mode进行匹配之后再启动。

前提条件

已完成启动前准备

操作步骤

  1. 添加RSS的Node Labels分区并建立节点映射。

    1. 添加Node Labels为RSS的分区。
      yarn rmadmin -addToClusterNodeLabels "RSS"
    2. 列出Yarn节点列表,选择某个节点作为RSS节点。
      yarn node -list
    3. 配置指定节点分区映射。
      yarn rmadmin -replaceLabelsOnNode "agent04=RSS"
    4. 执行完成后可在ResourceManager Web UI界面进行结果验证。
      • Nodes页面地址:http://IP_Address:8088/cluster/nodes
        图1 Nodes页面示例
      • Node Labels页面地址:http://IP_Address:8088/cluster/nodelabels
        图2 Node Labels页面示例

  2. 使用CapacityScheuler配置分区。

    capacity-scheduler.xml修改如下配置,并分发该文件至所有节点,${HADOOP_HOME}为hadoop安装路径。

    表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分区。

    指定队列所提交作业中没有特别指定分区的容器请求所使用的默认分区。

  3. 配置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 队列更新结果

  4. RSS启动前配置。

    1. 配置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
    2. 写入所有节点的hostname到“/home/ockadmin/opt/ock/conf/ock_node_list”,示例如下。
      agent01
      agent02
      agent03

      修改完成后,分发至所有节点。

  5. 执行启动脚本。

    sed -i '9i\export HCOM_CONNECTION_RECV_TIMEOUT_SEC=30' /home/ockadmin/opt/ock/ucache/24.0.0/linux-aarch64/sbin/ock-start-ockd.sh
    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。

    图5 启动结果

查看日志