Logstash + DataHub + MaxCompute/StreamCompute 进行实时数据分析
来源:互联网 发布:js兼容性注释 编辑:程序博客网 时间:2024/06/05 23:48
Logstash是一款开源日志收集处理框架,有各种不同的input、filter、output插件,用户使用这些插件可以将各种数据源导入到其他系统。
logstash-output-datahub插件,实现将数据导入DataHub的功能,通过简单的配置即可完成数据采集和向DataHub的传输任务。
结合StreamCompute(Galaxy)用户可以方便的完成流式数据从采集,传输,开发到结果数据存储与展示的整套解决方案。
同时,还可以通过创建Collector同步任务将数据同步到MaxCompute(ODPS),之后在MaxCompute上进行完备的数据开发工作。
接下来,会将各个流程步骤在文章中作详细描述,以帮助用户使用Logstash+DataHub+StreamCompute/MaxCompute快速构建起自己的流式数据应用。
数据通道
DataHub服务是阿里云的基于飞天开发的pubsub服务;
创建用于数据采集与传输的DataHub Topic是我们的第一步。
Endpoint列表
公共云DataHub服务Endpoint列表:
基本概念
首先,明确DataHub中的几个概念,具体可参见DataHub基本概念:
- Shard: Shard表示对一个Topic进行数据传输的并发通道,每个Shard会有对应的ID。每个Shard会有多种状态 : "Opening" - 启动中,"Active" - 启动完成可服务
- Lifecycle: 表示一个Topic中写入数据可以保存的时间,以天为单位
- Record: 用户数据和DataHub服务端交互的基本单位
- Schema: 描述Record必须遵守的格式,以及每个字段的类型,包括:bigint、string、boolean、double和timestamp
创建Topic
目前DataHub提供的工具包括Datahub Java SDK和DataHub webconsole,另外console还处于试用阶段,若有需要可联系我们提供。
- Webconsole
用户可在webconsole上完成对所属资源的基本操作,包括创建、查看、删除Topic以及数据抽样等。在webconsole中创建Topic如下所示:
- SDK
依次调用以下接口来完成Project和Topic的创建,SDK的一些基本接口可参考SDK基本说明。
<dependency> <groupId>com.aliyun.datahub</groupId> <artifactId>aliyun-sdk-datahub</artifactId> <version>2.3.0-public</version></dependency>public class DatahubClient { /** * 初始化DatahubClient, * @param conf Datahub的配置信息,包括用户的账号信息和datahub endpoint */ public DatahubClient(DatahubConfiguration conf); /** * 创建Datahub topic * @param projectName 该topic所属的project * @param topicName 要创建的topic名字 * @param shardCount 指定该topic的shard数量 * @param lifeCycle 数据回收时间 * @param recordType 该topic的record类型,包括TUPLE和BLOB * @param recordSchema 当recordType为TUPLE时,需要指定schema * @param desc topic的描述信息 */ public createTopic(String projectName, String topicName, int shardCount, int lifeCycle, RecordType recordType, RecordSchema recordSchema, String desc);}
数据采集
由于DataHub提供创建具有schema的Topic的功能,所以用户在使用logstash将数据采集到datahub时,可同时完成对原始数据清洗工作。这样在后续的数据分析工作中,用户能更加方便的进行数据开发。
安装
- 安装logstash-output-datahub插件(下载地址),
$ {LOG_STASH_HOME}/bin/plugin install --local logstash-output-datahub-1.0.0.gem
- 直接下载免安装版logstash(下载地址)。 解压即可使用。
$ tar -xzvf logstash-with-datahub-2.3.0.tar.gz$ cd logstash-with-datahub-2.3.0
配置信息
我们以一条典型的日志为例,说明如何配置logstash和datahub topic.
示例日志为:
20:04:30.359 [qtp1453606810-20] INFO AuditInterceptor - [13pn9kdr5tl84stzkmaa8vmg] end /web/v1/project/fhp4clxfbu0w3ym2n7ee6ynh/statistics?executionName=bayes_poc_test GET, 187 ms
对应的Datahub Topic的schema定义为:
Logstash配置文件为:
input { file { path => "${APP_HOME}/log/bayes.log" start_position => "beginning" }}filter{ # 对每一条日志message进行分割,并将各分片指定对应的tag # 若将整条日志作为Topic的一个字段,可创建只包含(message string)字段的Topic,从而不用配置grok filter grok { match => { "message" => "(?<request_time>\d\d:\d\d:\d\d\.\d+)\s+\[(?<thread_id>[\w\-]+)\]\s+(?<log_level>\w+)\s+(?<class_name>\w+)\s+\-(?<detail>.+)" } }}output { datahub { access_id => "" access_key => "" endpoint => "" project_name => "project" topic_name => "topic" #shard_id => "0" #shard_keys => ["thread_id"] dirty_data_continue => true dirty_data_file => "/Users/u1/trash/dirty.data" dirty_data_file_max_size => 1000 }}
启动logstash数据采集
使用命令启动logstash开始数据采集
logstash -f 上述配置文件地址
可使用参数 -b 指定每次batch大小,即每次请求的记录条数,可进行性能调试
# 缓存1000条数据后发送,不指定时默认为125(logstash的默认配置)logstash -f 上述配置文件地址 -b 1000
数据分析
目前DataHub和计算引擎StreamCompute(Galaxy)和MaxCompute(ODPS)已打通。
在StreamCompute中,可以通过配置DataHub数据源,直接进行数据开发,写入DataHub的数据会被StreamCompute订阅并进行实时计算。
同时,通过创建同步到MaxCompute的Collector,可以将DataHub数据同步到MaxCompute,从而在MaxCompute中进行数据开发。
StreamCompute
在StreamCompute中注册DataHub数据源(帮助文档)。
在StreamCompute中查看或使用DataHub数据(帮助文档)。
MaxCompute
可以通过创建Connector,将DataHub数据导入到MaxCompute(ODPS).
在Webconsole创建Connector是一件方便的事情,(webconsole地址)。如果有很多topic或者topic的field很多,不方便在页面上手动操作,也可以使用SDK。
创建Connector
创建Connector之前,用户必须已创建好MaxCompute的Table,并且所使用的账号必须具备该MaxCompute Project的CreateInstance权限和归档ODPS表的Desc、Alter、Update权限。
在webconsole创建Connector步骤可参考创建Connector.
欢迎加入MaxCompute钉钉群讨论
原文链接:
- Logstash + DataHub + MaxCompute/StreamCompute 进行实时数据分析
- 5分钟学会使用DataHub接入实时数据到MaxCompute(原ODPS)
- 使用Flume+Logstash+Kafka+Spark Streaming进行实时日志处理分析【公安大数据】
- 【数据架构解读】基于阿里云数加StreamCompute和MaxCompute构建的访问日志统计分析
- 【Best Practice】基于阿里云数加·StreamCompute快速构建网站日志实时分析大屏
- logstash+kafka进行日志的实时采集
- 使用MaxCompute进行数据质量核查
- 学会DataHub服务让您可以轻松构建基于流式数据的分析和应用
- 学会DataHub服务让您可以轻松构建基于流式数据的分析和应用
- 如何抓取网页中的实时监测数据进行分析
- 如何用SQL对MaxCompute数据进行修改和删除
- 基于 Blink SQL 的阿里实时计算平台StreamCompute介绍
- ElasticSearch + Logstash + Kibana 实时日志收集、查询和分析系统
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- 21.ELK实时日志分析平台之Logstash简介
- 22.ELK实时日志分析平台之Logstash安装
- ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台
- Kibana和logstash实时日志查询、收集与分析系统
- Mybatis的ResultMap的使用
- [编程题]推箱子
- 通过代码实现EXE文件图标的替换
- centos6.5 yum安装redis
- .NET Core配置文件加载与DI注入配置数据
- Logstash + DataHub + MaxCompute/StreamCompute 进行实时数据分析
- 反省
- popupwindow控制点击空白处是否隐藏
- unity 插件curvy做出来的效果以及 curvy的部分BUG(也算不上BUG吧)
- SQLite简单使用 总结
- 【Java】多态
- HTML标记文字
- java List
- mac登录N个QQ的方法