Spark对接LogHub快速入门_Spark ETL&Streaming数据源连接器_X-Pack Spark计算服务_云数据库 HBase 版
Spark对接LogHub快速入门
简介
日志服务(Log Service,简称 LOG)是针对日志类数据一站式服务,在阿里巴巴集团经历了大量大数据场景锤炼而成。用户无需开发就能快捷完成数据采集、消费、投递以及查询分析等功能,帮助提升运维、运营效率,建立 DT 时代海量日志处理能力。
这里主要介绍通过“数据工作台”使用SparkStreaming对接日志服务的LogHub获取日志的方法。
前置条件
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 发送数据到文件test.log。
使用如下脚本持续向日志文件test.log写日志:#!/bin/bash
n=10000
for((i=1;i<n;i++))
do
echo "hello${i} word${i}" >> /opt/test/testlog/test.log
echo "write the hello${i} word${i}"
sleep 3
done
使用“数据工作台”>“作业管理”运行样例
步骤 1:通过“资源管理”上传样例代码Jar包
下载样例代码jar包“sparkstreaming-0.0.1-SNAPSHOT.jar”包以及依赖的jar包到本地目录。
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_example/sparkstreaming-0.0.1-SNAPSHOT.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/ezmorph-1.0.6.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/commons-validator-1.4.0.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/fastjson-1.2.47.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/json-lib-2.4.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/loghub-spark-0.6.13_2.4.3-1.0.4.jar
wget https://spark-home.oss-cn-shanghai.aliyuncs.com/spark_connectors/aliyun-log-0.6.11.jar
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作业,作业内容如下:
--class com.aliyun.spark.SparkStreamingOnLogHub
--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
--driver-memory 1G
--driver-cores 1
--executor-cores 2
--executor-memory 2G
--num-executors 2
--name spark_on_loghub
/spark_on_loghub/sparkstreaming-0.0.1-SNAPSHOT.jar
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”标签查看消费情况。如下图显示消费成功:
小结
- 本例代码可参考:SparkStreamingOnLogHub.scala
- 更多样例代码可参考:Spark样例代码
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。
评论