背景知识(周末完善)
- kafka是一个分布式消息系统。
- zookeeper
- kafka与zookeeper的关系
- 消费者
- 生产者
- broker
- topic
- 分区
软件环境
- kafka版本:0.10.0.1
- 已经搭建好的zookeeper集群
- 三台机器
ip:10.50.8.56 broker.id=0
ip:10.50.8.57 broker.id=1
ip:10.50.8.58 broker.id=2
'broker.id'不能相同
操作步骤
- 在原机器55上,拷贝kafka压缩包kafka.tar.gz,并安装
进入home目录下:cd /home
10.50.8.56/home scp tester@192..45:/home/tester/kafka.tar.gz /home (拷贝压缩包)
10.50.8.56/home tar -zxvf kafka.tar.gz (解压)
进入/home/opt目录下,将kafka_2.11-0.10.0.1文件移动到/opt目录下
10.50.8.56/home cd opt
10.50.8.56/home/opt mv kafka_2.11-0.10.0.1/ /opt
移动完后,进入/opt目录下,在该目录下创建kafka_2.11-0.10.0.1与kafka的软连接
10.50.8.56/home/opt cd /opt
10.50.8.56/opt ln -s /opt/kafka_2.11-0.10.0.1/ /opt/kafka (kafka文件夹会自动创建)
进入/tmp目录下
10.50.8.56/tmp mkdir kafka-logs (创建kaka-logs文件夹)
2.安装好软件后,修改配置文件,进入/home/opt/kafka/config目录下
10.50.8.56/home/opt/kafka/config vim server.properties
主要修改的配置项:
broker.id=0 唯一表示主机,集群中的每个机器的broker.id都不同
auto.create.topics.enable=false 是否启用log压缩,一般不启用
delete.topic.enable=true
host.name=10.50.8.56 本机host
listeners=PLAINTEXT://10.50.8.56:9092 监听列表 使用本机地址+端口号即可
log.dirs=/tmp/kafka-logs 保存日志数据目录
zookeeper.connect=10.50.8.56:2181,10.50.8.57:2181,10.50.8.58:2181 zookeeper的连接端口
(3台机器的配置文件都需要修改)
启动kafka
- 启动kafka之前,确保先启动zookeeper
- 到kafka的bin目录下,启动kafka,cd /opt/kafka/bin:
./kafka-server-start.sh /opt/kafka/config/server.properties & (&符号,后台启动)
ps -ef | grep kafka 查看kafka进程是否存在
- 创建kafka的topic
- 要求:replication-factor 2,6个partitions
- 145机器上有8个topic:red-packet,list-search,revenue-push,cancellation-deletion-recall,search-not-order,hdfs-otherlog,hot_issue,hotel_sa
./kafka-topics.sh --create --zookeeper 10.50.8.56:2181,10.50.8.57:2181,10.50.8.58:2181 --replication-factor 2 --partitions 6 --topic red-packet (创建red-packet topic)
./kafka-topics.sh --list --zookeeper 10.50.8.56:2181,10.50.8.57:2181,10.50.8.58:2181 (查看topic列表)
启动消费者
./kafka-console-consumer.sh --zookeeper 10.50.8.56:2181,10.50.8.57:2181,10.50.8.58:2181 --topic revenue-push --from-beginning
启动生产者
./kafka-console-producer.sh --broker-list 10.50.8.56:9092,10.50.8.57:9092,10.50.8.58:9092 --topic revenue-push
集群是通过zookeeper.connect连接串的配置,将所有的节点连接起来
要在机器的hosts中,配置上机器的IP和主机名
涉及到的Linux命令:
查看主机名:hostname
查看主机IP:ifconfig eth0 | grep "inet addr" | awk '{ print $2}' | awk -F: '{print $2}’
创建软连接:ln -s 源地址 目的地址(使用绝对路径)
删除软链接:rm 目的地址
例: kafka_2.11-0.10.0.1
创建软连接
ln -s /opt/kafka_2.11-0.10.0.1 /opt/kafka(自动创建kafka文件夹,并且与kafka_2.11-0.10.0.1文件夹建立连接)
删除软连接
rm kafka (不要用rm kafka/,此命令会将kafka_2.11-0.10.0.1文件夹中的内容都删掉)