最佳实践概述
场景描述
使用Flume+Kafka来完成实时流式日志处理,后面再连接上Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,可以把它理解为一个数据库,可以存放一段时间的数据。
因此数据从数据源( HTTP、Log 文件、JMS、监听端口数据等)到flume再到Kafka进行消息缓存,数据一方面可以同步到HDFS做离线计算,另一方面可以做实时计算,可实现数据多分发。
技术架构图
暂无。
方案优势
把数据存储到 HDFS 或者 HBase 等下游存储模块或者计算模块时需要考虑各种复杂的场景,例如并发写入的量以及系统承载压力、网络延迟等问题。Flume 作为灵活的分布式系统具有多种接口,同时提供可定制化的管道。在生产处理环节中,当生产与处理速度不一致时,Kafka 可以充当缓存角色。Kafka 拥有 partition 结构以及采用 append 追加数据,使 Kafka 具有优秀的吞吐能力;同时其拥有 replication 结构,使 Kafka 具有很高的容错性。所以将 Flume 和 Kafka 结合起来,可以满足生产环境中绝大多数要求。
前提条件
需已购买Kafka实例、创建Topic,并且已成功消费消息。
确认准备 Apache Flume环境(1.6.0以上版本兼容 Kafka)。
确认 Kafka 的 Source、 Sink 组件已经在 Flume 中。
资源规划
本实践方案内容仅涉及Kafka专享版实例。
分布式消息服务
Figure 1 分布式消息服务
资源类型 | 配置项 | 配置明细 | 说明 |
---|---|---|---|
企业中间件 | DMS | Kafka专享实例 | 需已购买kafka专享实例,创建好Topic,并成功消费消息。 |
方案正文
Flume安装
Apache Flume官网下载地址:http://flume.apache.org。
下载apache-flume-1.9.0-bin.tar.gz。
解压安装tar -zxvf apache-flume-1.9.0-bin.tar.gz
设置环境变量:
vi ~/.bash_profile
export FLUME_HOME = /usr/local/apache-flume-1.9.0-bin
export PATH = **FLUME_HOME/bin:**PATH
source ~/.bash_profile
修改Flume配置文件($ FLUME_HOME/conf):
按照模板复制出env.sh配置文件:cp flume-env.sh.template flume-env.sh
修改配置文件:vi flume-env.sh,设置JAVA_HOME:
export JAVA_HOME= /usr/local/java/jdk1.8.0_311
验证Flume安装是否成功:
至此,已完成Flume的安装与验证。
获取Kafka实例信息
1.登录天翼云Kafka专享版实例控制台。
2.在Kafka专享版页面,选择对应的实例,单击实例“名称”,进入实例基本信息页面。
3.在实例的基本信息页面的连接地址模块,可获取实例的IP地址与端口。
4.选择对应的Topic,如需创建Topic,请参考创建Topic。
配置Flume与Kafka互联
在$FLUME_HOME/conf下添加连接Kafka的配置文件:flumetokafka.conf,如下:
启动Flume并测试连接情况
启动Flume:
bin/flume-ng agent --conf conf --conf-file conf/flumetokafka.conf --name flume_kafka -Dflume.root.logger=INFO,console >./data.log 2>&1 &