大家好,又见面了,我是你们的朋友全栈君。
大数据中包含两种处理方式:流处理和批处理。
目前主流的流处理组件包括:Strom、Spark Streaming、KafKa、Flume、Flink、S3等,接下来将对上述组件做简要介绍。
Flume优势
1)Flume可以将源数据存储到任何集中存储器中,如:HDFS、HBase;
2)数据收集速度超过写入速度时,提供平衡机制;
3)提供上下文路由特征;
4)Flume管道基于事务,保证数据传送和接受的一致性;
5)Flume是可靠,高容错性的,提供定制。·
Flume结构
如图所示,数据发生器产生的数据被单个运行在数据发生器所在服务器上的agent所通过事件event的方式被收集,之后数据收容器从各个agent上汇聚数据存入HDFS或HBase。
Flume事件
事件是Flume内部数据传输的最基本单元,由一个转载数据的字节数组(该数据组是从数据源接入点传入,并传输给传输器,也就是HDFS/HBase)和一个可选头部构成。其结构如下图所示:
Flume Agent
Flume内部有一个或者多个Agent,每一个Agent就是一共独立的守护进程(JVM),它从客户端或其他Agent接收数据,然后迅速将获取的数据传给下一个目的节点sink或者agent。其结构如下图所示,主要由source、channel、sink三部分组成。
Source:
从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道channal,Flume提供多种数据接收的方式,比如Avro,Thrift等;
Channel:
channal是一种短暂的存储容器,它将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,它在source和sink间起着一共桥梁的作用,channal是一个完整的事务,这一点保证了数据在收发的时候的一致性。并且它可以和任意数量的source和sink链接,支持的类型有: JDBC channel ,File System channel, Memort channel等;
Sink:
sink将数据存储到集中存储器比如Hbase、HDFS,它从channals消费数据(events)并将其传递给目标地,目标地可能是另一个sink,也可能HDFS,HBase。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142572.html原文链接:https://javaforall.cn