云服务器内容精选

  • Flume模块介绍 Flume客户端/服务端由一个或多个Agent组成,而每个Agent是由Source、Channel、Sink三个模块组成,数据先进入Source然后传递到Channel,最后由Sink发送到下一个Agent或目的地(客户端外部)。各模块说明见表1。 表1 模块说明 名称 说明 Source Source负责接收数据或产生数据,并将数据批量放到一个或多个Channel。Source有两种类型:数据驱动和轮询。 典型的Source样例如下: 和系统集成并接收数据的Sources:Syslog、Netcat。 自动生成事件数据的Sources:Exec、SEQ。 用于Agent和Agent之间通信的IPC Sources:Avro。 Source必须至少和一个Channel关联。 Channel Channel位于Source和Sink之间,用于缓存Source传递的数据,当Sink成功将数据发送到下一跳的Channel或最终数据处理端,缓存数据将自动从Channel移除。 不同类型的Channel提供的持久化水平也是不一样的: Memory Channel:非持久化 File Channel:基于预写式日志(Write-Ahead Logging,简称WAL)的持久化实现 JDBC Channel:基于嵌入Database的持久化实现 Channel支持事务特性,可保证简易的顺序操作,同时可以配合任意数量的Source和Sink共同工作。 Sink Sink负责将数据传输到下一跳或最终目的,成功完成后将数据从Channel移除。 典型的Sink样例如下: 存储数据到最终目的终端Sink,比如:HDFS、Kafka 自动消耗的Sinks,比如:Null Sink 用于Agent和Agent之间通信的IPC sink:Avro Sink必须关联到一个Channel。 每个Flume的Agent可以配置多个Source、Channel、Sink模块,即一个Source将数据发送给多个Channel,再由多个Sink发送到下一个Agent或目的地。 Flume支持多个Flume配置级联,即上一个Agent的Sink将数据再发送给另一个Agent的Source。
  • 补充说明 Flume可靠性保障措施。 Source与Channel、Channel与Sink之间支持事务机制。 Sink Processor支持配置failover、load_balance机制。 例如load_balance示例如下: server.sinkgroups=g1server.sinkgroups.g1.sinks=k1 k2server.sinkgroups.g1.processor.type=load_balanceserver.sinkgroups.g1.processor.backoff=trueserver.sinkgroups.g1.processor.selector=random Flume多客户端聚合级联时的注意事项。 级联时需要走Avro或者Thrift协议进行级联。 聚合端存在多个节点时,连接配置尽量配置均衡,不要聚合到单节点上。 Flume客户端可以包含多个独立的数据流,即在一个配置文件properties.properties中配置多个Source、Channel、Sink。这些组件可以链接以形成多个流。 例如在一个配置中配置两个数据流,示例如下: server.sources = source1 source2server.sinks = sink1 sink2server.channels = channel1 channel2#dataflow1 server.sources.source1.channels = channel1server.sinks.sink1.channel = channel1#dataflow2server.sources.source2.channels = channel2server.sinks.sink2.channel = channel2