Kafka A distributed streaming platform.
使用心得:很多大数据的框架都会使用到kafka,核心是在业务高峰的时候起到了缓冲的作用,避免计算压力过大;其次kafka能做到分布式的、高效的消息系统。
1)Kafka 两种案例说明
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
构建实时的数据应用去转化数据。(用的场景并不多,应倾向于打造Spark为主的框架)
总结:应用场景:作为消息中间件,一般部署在流式组件前一个,主要为了避免高峰期计算来的压力
Q:Maxwell--------------------------------->存储平台
Maxwell-->Kafka-->Spark streaming-->存储平台 的转变?
A:因为Maxwell是单点的,所以其实也是为了缓冲压力
2)Zookeeper 介绍
Zookeeper: http://zookeeper.apache.org/
总结:就是分布式的协调服务,一般用于做HA;建议使用3.4.6 / 3.4.10稳定版本(有apache和CDH版本)
3)Zookeeper 部署
下载:wget http://mirror.bit.edu.cn/apache/zookeeper/stable/zookeeper-3.4.10.tar.gz
解压:tar -zxvf zookeeper-3.4.10.tar.gz
授权:chown -R root:root zookeeper-3.4.10
软连接:ln -s zookeeper-3.4.10 zookeeper
4)Zookeeper 配置
cp zoo_simple.cfg zoo.cfg
--dataDir=/opt/software/zookeeper/data 该目录用于存储快照
--server.1=hadoop000:2888:3888
--server.2=hadoop001:2888:3888
--server.3=hadoop002:2888:3888
touch data/myid
echo 1 > data/myid 把配置的id写入对应机器的myid文件
配置环境变量
5)Zookeeper 启动
./zkServer.sh start
./zkServer.sh status 查看状态
6)Zookeeper 场景
无论是Apache 还是CDH,比如HDFS HA、YARN HA损坏,Kafka、HBase 都在ZK
a. zkCli.sh 进入当前机器的localhost模式去连接
b. 假如localhost模式进不去,可使用ZooKeeper -server host:port
c. 命令帮助 进人console,输入help
常用命令:ls /
ls /zookeeper
rmr path
7)配置java、scala环境
jdk: 路径: /usr/java/ 因为CDH优先读取这个
jdbc:路径: /usr/share/java
Scala: 2.11.8
8)Kafka 部署
Kafka: 0.8 与 0.10 的对比 https://spark.apache.org/docs/2.2.0/streaming-kafka-integration.html
解压:tar -zxvf kafa_2.11-0.10.0.1.tgz
软连接:ln -s kafa_2.11-0.10.0.1 kafa
9)Kafka 配置
vi server.properties
--broker.id=1 设置唯一ID
--port=9092
--host.name=192.168.96.1
--log.dirs=/opt/software/kafka/logs
--zookeeper.connect=hadoop000:2181,hadoop001:2181,hadoop002:2181
注意:zookeeper.connect=192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181/kafka
就是创建kafka这个文件夹,不然子文件夹会打散出来
mkdir /opt/software/kafka/logs
配置环境变量
10)Kafka 启动
nohup kafka-server-start.sh config/server.properties & 以后台模式执行
nohup:ignoring input and appending output to 'nohup.out'
11)Kafka 理解
Kafka部署完成的进程,broker
producer(Flume)---》broker cluster(Kafka) --》 consumer(Spark Streaming)
导航日志 --》Kafka(Topic:DH) --》 计算程序
企业预警日志--》Kafka (Topic:AlertLog)
Q:什么是topic?
A:能理解为一个文件夹,把指定到该topic的数据写到这个文件夹。根据不同的业务来分组,创建多个topic
12)Kafka 测试案例
create:{
bin/kafka-topics.sh --create \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
--replication-factor 3 --partitions 3 --topic test
}
producer:{
bin/kafka-producer.sh \
--broker-list 192.168.137.141:9092,192.168.137.142:9092,192.168.137.143:9092 --topic test
}
consumer:{
bin/kafka-console-consumer.sh \
--zookeeper 192.168.137.141:2181,192.168.137.142:2181,192.168.137.143:2181 \
--from-beginning --topic test
}
13)拓展
kill -9 $(grep -f zookeeper) 批量杀程序
zookeeper部署台数公式:生产上少于100台机器,部署7台;大于100台,部署9-11台