全部产品

Spark对接LogHub快速入门

更新时间:2019-06-19 16:09:11

简介

日志服务(Log Service,简称 LOG)是针对日志类数据一站式服务,在阿里巴巴集团经历了大量大数据场景锤炼而成。用户无需开发就能快捷完成数据采集、消费、投递以及查询分析等功能,帮助提升运维、运营效率,建立 DT 时代海量日志处理能力。
这里主要介绍通过“数据工作台”使用SparkStreaming对接日志服务的LogHub获取日志的方法。

前置条件

  1. LogHub项目已创建。
    本例的业务场景为使用SparkStreaming对接LogHub读取ECS机器上的一个日志文件。ECS 机器上需要安装Logtail,具体参考:Logtail安装。LogHub项目详细信息如下表:

    参数 说明
    Project名称 spark-on-loghub-test
    所属地域 华南1(深圳)
    Logstore名称 spark-on-loghub-logstore
    ConsumerGroup名称 consumer_group01
    Endpoint cn-shenzhen-intranet.log.aliyuncs.com
    数据来源 文本文件,来自Ecs上的一个文本,本例为:/opt/test/testlog/test.log
    日志样例 日志样例:hello world
    模式 分隔符模式,分隔符为空格
    日志内容抽取结果 分两列:c1,c2,分别对应hello和world
  2. 发送数据到文件test.log。
    使用如下脚本持续向日志文件test.log写日志:

    1. #!/bin/bash
    2. n=10000
    3. for((i=1;i<n;i++))
    4. do
    5. echo "hello${i} word${i}" >> /opt/test/testlog/test.log
    6. echo "write the hello${i} word${i}"
    7. sleep 3
    8. done

使用“数据工作台”>“作业管理”运行样例

步骤 1:通过“资源管理”上传样例代码Jar包

下载样例代码jar包“sparkstreaming-0.0.1-SNAPSHOT.jar”包以及依赖的jar包到本地目录。

  1. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_example/sparkstreaming-0.0.1-SNAPSHOT.jar
  2. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/ezmorph-1.0.6.jar
  3. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/commons-validator-1.4.0.jar
  4. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/fastjson-1.2.47.jar
  5. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/json-lib-2.4.jar
  6. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/loghub-spark-0.6.13_2.4.3-1.0.4.jar
  7. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/aliyun-log-0.6.11.jar
  8. wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/loghub-client-lib-0.6.13.jar

说明:sparkstreaming-0.0.1-SNAPSHOT.jar为样例代码编译出的Jar包,其它Jar包为运行时依赖的Jar包。若用户修改了样例代码,运行时记得添加依赖的Jar包。依赖的Jar包对应的Pom文件请参考样例代码工程中对应的pom文件,样例代码路径见本文最后。
在“数据工作台”>“资源管理”中添加文件夹“spark_on_loghub”。
上传下载的jar包到此文件夹。如下图:

步骤 2:通过“作业管理”创建并编辑作业内容

在“数据工作台”>“作业管理”中创建Spark作业,作业内容如下:

  1. --class com.aliyun.spark.SparkStreamingOnLogHub
  2. --jars /spark_on_loghub/ezmorph-1.0.6.jar,/spark_on_loghub/commons-validator-1.4.0.jar,/spark_on_loghub/fastjson-1.2.47.jar,/spark_on_loghub/json-lib-2.4.jar,/spark_on_loghub/loghub-spark-0.6.13_2.4.3-1.0.4.jar,/spark_on_loghub/loghub-client-lib-0.6.13.jar,/spark_on_loghub/aliyun-log-0.6.11.jar
  3. --driver-memory 1G
  4. --driver-cores 1
  5. --executor-cores 2
  6. --executor-memory 2G
  7. --num-executors 2
  8. --name spark_on_loghub
  9. /spark_on_loghub/sparkstreaming-0.0.1-SNAPSHOT.jar
  10. spark-on-loghub-test spark-on-loghub-logstore consumer_group01 cn-shenzhen-intranet.log.aliyuncs.com xxx1 xxx2

作业内容参数说明:

参数 说明
spark-on-loghub-test 日志服务的Project名称。
spark-on-loghub-logstore 日志服务的Logstore名称。
consumer_group01 日志服务的ConsumerGroup名称。
xxx1 xxx2 分别是访问阿里云API的AccessKey ID和AccessKey Secret。需要具备访问日志服务的权限

步骤 3:通过“作业管理”运行作业并查看结果

作业编辑完成后点击“运行”,选择Spark集群。运行状态会在下侧显示,如图:


运行成功后点击“SparkUI”,点击“Streaming”标签查看消费情况。如下图显示消费成功:

小结