ETL理解
设计分为3部分
对3部分的理解
对于ETL工具的理解
sqoop
DataX
Kettle
canal
StreamSets
数据孤岛理解
架构的提出
Lambda架构的优势
Lambda架构组成
Lambda缺点
目的在于约束N个人对齐认知,按照一个标准或流程进行开发,以保证数据一致性,流程清晰且稳定。
提高开发效率,提升质量,降低沟通对齐成本,降低运维成本等
Flume是一个分布式、可靠、和高可用的海量日志采集、汇聚和传输的系统。
Flume可以采集文件,socket数据包(网络端口)、文件夹、kafka、mysql数据库等各种形式源数据,又可以将采集到的数据(下沉sink)输出到HDFS、hbase、hive、kafka等众多外部存储系统中
一般的采集、传输需求,通过对flume的简单配置即可实现;不用开发一行代码!
Flume针对特殊场景也具备良好的自定义扩展能力,因此,flume可以适用于大部分的日常数据采集场景
Client
Event
一个数据单元,由消息头和消息体组成
Events可以是日志记录、avro对象等
Flow
Agent
一个独立的Flume进程,是Flume最小的运行单位,包含组件Source、Channel、Sink
Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks
Source
数据收集组件
source从Client收集数据,然后将数据封装成Event传递给Channel
支持多种Source格式
Channel
中转Event的一个临时存储,保存由Source组件传递来的Event(缓存,生产者消费者)
Channel连接 sources 和 sinks ,这个有点像一个消息队列
为了数据的安全和效率,可以考虑多种缓存的手段
Sink
数据的输出方,可以根据自己的需求将Event输出到任意的位置
从Channel中读取并移除Event,然后将Event传递到FlowPipeline中的下一个Agent(如果有的话)
Sink从Channel收集数据,运行在一个独立线程。
Interceptor
将Agent1中的Event传递给下一个Agent到Agent2
理解Agent
Agent的作用
Agent的三个组件
理解Source
Flume内置的source格式
几个常用的数据源的介绍
理解
Channel的类型
几种常用的Channel
理解
输出目的地
Sink类型
几个常用的Sink
拦截器作用
拦截器的位置
几种常见的拦截器
理解
对于跨代理的处理
1 Source 接受数据
2 Channel Processor 处理 Event
3 Channel Processor 将 Event 传递给interceptor链对 Event 进行过滤操作
4 过滤完之后再把 Event 发送回 Channel Prodessor
5 Channel Processor把 Event 发送给Channel selectors
6 Channel selector返回Event 属于哪个Channel
7 根据第6步返回的结果,将Event发送到指定的Channel
8 SinkProcessor从Channel中拉去数据
9 最后把数据Sink出去