Kafka概述
hadoop -> 离线计算(hdfs/mapreduce) yarn
zookeeper -> 分布式协调(动物管理员)
hive -> 数据仓库(离线计算/sql)easy coding
flume -> 数据采集
sqoop -> 数据迁移 mysql -> hdfs/hive hdfs/hive->mysql
azkaban -> 任务调度工具
hbase -> 数据库(nosql) 列式存储 读写速度
实时:
kafka
storm
Apache Kafka® is a distributed streaming platform. What exactly does that mean?
A streaming platform has three key capabilities:
Publish and subscribe to streams of records, similar to a message queue or enterprise messaging system.
Store streams of records in a fault-tolerant durable way.
Process streams of records as they occur.
Kafka is generally used for two broad classes of applications:
Building real-time streaming data pipelines that reliably get data between systems or applications
Building real-time streaming applications that transform or react to the streams of data
kafka是什么
在流计算中,kafka主要功能是用来缓存数据,storm可以通过消费kafka中的数据进行流计算。
是一套开源的消息系统,由Scala写成。支持javaAPI的。
kafka最初由LinkedIn公司开发,2011年开源。
2012年从Apache毕业。
是一个分布式消息队列,kafka读消息保存采用Topic进行归类。
角色
发送消息:Producer(生产者)
消费消息:Consumer(消费者)
为什么要使用消息队列
1、解耦
为了避免出现问题
2、拓展性
可增加处理过程
3、灵活
面对访问量剧增,不会因为超负荷请求而完全瘫痪。
4、可恢复
一部分组件失效,不会影响整个系统。可以进行恢复。
5、缓冲
控制数据流经过系统的速度。
6、顺序保证
对消息进行有序处理。
7、异步通信
akka,消息队列提供了异步处理的机制。允许用户把消息放到队列,不立刻处理。
kafka架构设计
kafka依赖于zookeeper,用zk保存元数据信息。
搭建kafka集群要先搭建zookeeper集群。
zk在kafka中的作用
保存kafka集群节点状态信息和消费者当前消费信息。
kafka集群安装
配置
vi conf/server.properties
Server Basics下
broker.id=0 #每台机器的id不同即可
delete.topic.enable=true #是否允许删除主题
Log Basics下
log.dirs=..../logs #运行日志保存位置
num.partitions=1
Zookeeper下
zookeeper.connect=bigdata:2181 #
vi /etc/profile
export KAFKA_HOME=
export PATH=
scp到集群的其他机器 $PWD
broker.id=1
broker.id=2
启动
zkServer.sh start
bin/kafka-server-start.sh config/server.properties &
关闭
kafka-server-stop.sh