大数据实时监控预警

文章目录

    • 1. 通过flume采集数据发送到Kafka
      • 1)自定义source
      • 2)自定义拦截器Interceptor
      • 3)自定义sink
    • 2.kafka->spark->es
    • 3.kafka->spark->hbase
    • 4.kafka->spark->hdfs
    • 5.kafka->spark->redis(warn预警)

1. 通过flume采集数据发送到Kafka

自定义source ->不断采集监控目录的文件数据,采集成功后将文件移动到一个新文件目录里,目录名自定义了日期格式,然后将数据推送到channel或者拦截器
自定义拦截器->解析出source推送过来的数据,效验字段和内容是否匹配,以及字段中的格式效验(比如手机号,经纬度之类的),如果数据错误,将其转成json的格式,然后通过post的请求更新到ES中。
自定义sink->手动提交事务,发送到kafka,失败回滚,限制发送数据量阈值,分批处理。

1)自定义source

固定写法,自定义Source 直接继承 AbstractSource 和 实现 Configurable, PollableSource 接口
可参照官网自定义例子 http://flume.apache.org/releases/content/1.9.0/FlumeDeveloperGuide.html#source

项目主要实现方法
configure():获取flume.conf的参数

从flume.conf配置里初始化参数,例如
tier1.sources.source1.successfile=/usr/chl/data/filedir_successful/
通过
successfile = context.getString(FlumeConfConstant.SUCCESSFILE)
FlumeConfConstant.SUCCESSFILE就是successfile,常量类里的

process(): 主要的业务代码,不断采集监控目录的文件数据,采集成功后将文件移动到一个新文件目录里,目录名自定义了日期格式,然后将数据推送到channel或者拦截器

2)自定义拦截器Interceptor

自定义拦截器 直接实现Interceptor接口

public Event intercept(Event event):处理单条数据业务逻辑
public List<Event> intercept(List<Event> events):批处理

内部启动类
public static class Builder implements Interceptor.Builder {
        @Override
        public void configure(Context context) {
        }
        @Override
        public Interceptor build() {
            return new DataCleanInterceptor();
        }
    }

3)自定义sink

写法:extends AbstractSink implements Configurable

2.kafka->spark->es

3.kafka->spark->hbase

4.kafka->spark->hdfs

5.kafka->spark->redis(warn预警)

你可能感兴趣的:(校招)