Flume2Kafka2HBase功能块
最近学习尚硅谷电信客服项目-大数据项目,将以前学习的Hadoop,HBase,Flume,Kafka使用起来,一方面是学习各技术之间的项目使用,二方面是通过写博客,加强学习印象,查漏补缺。
电信客服项目有数据模拟生成,数据消费,数据分析,数据展示这四个模块,我将数据消费模块剥离出来,按照项目重新敲了3遍,将关键的代码全部整合在一起,独立成一个项目flume+kafka+hbase实战
前言
数据消费模块是将通过Flume采集文件数据,Kafka消费,写入HBase的过程,跑通该模块需要搭建启动好Hadoop,Zookeeper,Flume,Kafka,HBase环境。Flume负责采集数据;Kafka负责拉去Flume数据,起到异步,削峰,解耦的作用;Zookeeper为HBase提供稳定服务和failover机制,HDFS为HBase提供底层存储支持,MapReduce为HBase提供高性能的计算能力。所以上面几个技术不能少,通过这个项目例子,大概能了解这些技术点之间的实际使用,方便后面的深入研究,从用到懂的升华。
一. 为什么要集成Flume和Kafka
一般使用Flume+Kafka架构的都是希望完成实时流式的日志处理,后面再连接上Flink/Storm/Spark Streaming等流式实时处理技术,从而完成日志实时解析的目标。第一、如果Flume直接对接实时计算框架,当数据采集速度大于数据处理速度,很容易发生数据堆积或者数据丢失,而kafka可以当做一个消息缓存队列,从广义上理解,把它当做一个数据库,可以存放一段时间的数据。第二、Kafka属于中间件,一个明显的优势就是使各层解耦,使得出错时不会干扰其他组件。
二. Kafka介绍和实践
Kafka是一个分布式发布订阅消息系统,能够将消息从一个端点传递到另一端点。Kafka消息保存在磁盘上并在集群内复制以防止数据丢失。主要掌握三个原理部分:producer,topic,consumer:
Producer:生产者。向Kafka的一个topic发布消息的生产过程。本例中Flume作为Kafka的生产者
Topic:主题。对消息的逻辑分类,起到资源隔离的作用
Consumer:消费者。订阅topic并处理其发布的消息的消费过程
在发布订阅系统中,不同的消息保存在不同的主题中,消费者可以订阅一个或多个主题,并使用该主题的所有信息。比如广播电台(Producer),它发布了体育,电影,音乐等不同的频道(Topic),任何用户(Consumer)可以订阅自己喜欢的频道,并从中获取内容
结合电信客服项目,启动Kafka部分:
为了保证Flume采集的数据能够写入Kafka指定的topic内,先启动Kafka。
先进入各个集群节点的Kafka安装路径,启动Kafka,并创建topic:
./bin/kafka-server-start.sh config/server.properties
bin/kafka-topics.sh --zookeeper master:2181 --topic ct --create --replication-factor 1 --partitions 3
三. Flume介绍和实践
Flume是分布式高可用的海量日志聚合系统,支持在系统中监控各类数据用于收集数据;同时Flume提供数据写入各种数据接收方用于转发数据&#