本文为您介绍如何通过阿里云日志服务收集Spark作业的日志。

前提条件

  • 已在E-MapReduce on ACK控制台创建Spark集群,详情请参见创建集群
  • 已开通阿里云日志服务SLS,详情请参见快速入门

操作步骤

  1. 启用日志服务组件Logtail,详情请参见步骤一:启用日志服务组件Logtail
    说明 如果已启用日志服务组件Logtail,则直接执行步骤2
  2. 进入日志服务对应Project的控制台。
    1. 登录容器服务管理控制台
    2. 在控制台左侧导航栏中,单击集群
    3. 集群列表页面,单击目标集群名称或者目标集群右侧操作列下的详情
    4. 集群信息页面,单击上方的集群资源页签。
    5. 单击日志服务Project所在行的链接。
      进入日志服务对应Project的控制台。
  3. 日志库页签中,新建两个Logstore。
    本文示例新建的两个Logstore分别命名为spark-driver-log和spark-executor-log。创建Logstore详情,请参见步骤二:创建Project和Logstore
  4. 在spark-driver-log的Logstore中,执行以下操作。
    1. 新增Logtail配置,接入数据选择Kubernetes标准输出,在配置流程中选择已有的Kubernetes机器组。
    2. 选择数据接入 > logtail配置下已有的Kubernetes机器组。
    3. 单击右上角的修改,在插件配置文本框内,输入以下内容。
      {
          "inputs": [
              {
                  "detail": {
                      "IncludeEnv": {
                          "SPARKLOGENV": "spark-driver"
                      },
                      "Stderr": true,
                      "Stdout": true,
                      "BeginLineCheckLength": 10,
                      "BeginLineRegex": "\\d+/\\d+/\\d+.*"
                  },
                  "type": "service_docker_stdout"
              }
          ]
      }
  5. 在spark-executor-log的Logstore中,参照步骤4插件配置文本框中,输入以下内容。
    {
        "inputs": [
            {
                "detail": {
                    "IncludeEnv": {
                        "SPARKLOGENV": "spark-executor"
                    },
                    "Stderr": true,
                    "Stdout": true,
                    "BeginLineCheckLength": 10,
                    "BeginLineRegex": "\\d+/\\d+/\\d+.*"
                },
                "type": "service_docker_stdout"
            }
        ]
    }
  6. 开启日志库Logstore索引,详情请参见配置索引
    完成以上步骤,即可在SLS上查询到作业的日志了。result