首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于Flume的日志采集

大数据系统中通常需要采集的日志有:

系统访问日志

用户点击日志

其他业务日志(比如推荐系统的点击日志)

在收集日志的时候,一般分为三层结构:采集层、汇总层和存储层,而不是直接从采集端将数据发送到存储端,这样的好处有:

如果存储端如Hadoop集群、Kafka等需要停机维护或升级,对部署在应用服务器上的采集端没有影响,只需要汇总层做好数据的缓冲,在存储端恢复正常后继续写入数据。

采集层只负责数据的采集,由汇总层统一维护数据的路由逻辑(比如发送到hdfs还是kafka?),由于采集端所在的应用服务器一般数量较多,且会随着业务的扩展而不断增加,这种方式可以降低日志采集配置的维护成本,降低大数据应用对业务系统的影响

基于三层结构的flume日志采集系统架构一般如下图所示:

说明:

对于采集层agent,一般要求尽快将日志发送出去,避免在采集层堆积数据,所以使用memory的channel,sink统一使用avro;对于汇总层agent,要求可以尽量保证数据的缓冲,所以使用file channel,并且尽量调大容量,对于要求实时处理的数据,可以使用SSD的磁盘以提高处理速度,source统一使用avro。

各agent的配置如下:

【Agent-1】:位于采集层,用于收集应用A产生的日志,这些日志需要保存到HDFS中用于离线分析,同时也需要发送给Kafka用于实时的计算(如用户点击日志)。

【Agent-2】:位于采集层,用于收集应用B产生的日志,这些日志只需要发送给Kafka用于实时的计算。

【Agent-3】:位于汇总层,用于处理【Agent-1】发送过来的数据,由于需要同时将数据发送给HDFS和Kafka,所以配置了两个channel。

【Agent-4】:位于汇总层,用于处理【Agent-2】发送过来的数据

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180623G0BL0S00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券