Apache Kafka 概述 在大數據中,使用了大量的數據。
關於數據,我們有兩個主要挑戰。第一個挑戰是如何收集大量的數據,第二個挑戰是分析收集的數據。 爲了克服這些挑戰,您必須需要一個消息系統。
Kafka專爲分佈式高吞吐量系統而設計。 Kafka往往工作得很好,作爲一個更傳統的消息代理的替代品。
與其他消息傳遞系統相比,Kafka具有更好的吞吐量,內置分區,複製和固有的容錯能力,這使得它非常適合大規模消息處理應用程序。
什麼是消息系統? 消息系統負責將數據從一個應用程序傳輸到另一個應用程序,因此應用程序可以專注於數據,但不擔心如何共享它。
分佈式消息傳遞基於可靠消息隊列的概念。 消息在客戶端應用程序和消息傳遞系統之間異步排隊。 有兩種類型的消息模式可用 -
一種是點對點,另一種是發佈 - 訂閱(pub-sub)消息系統。 大多數消息模式遵循 pub-sub
kafka官網:http://kafka.apache.org/
使用安裝包版本:
kafka_2.11-1.0.0
下載地址https://mvnrepository.com/artifact/org.apache.kafka/kafka_2.11/1.0.0
已經安裝 hadoop-2.6.0.tar ,zookeeper-3.4.5.tar
虛擬機 | IP |
---|---|
master | 192.168.176.41 |
slave1 | 192.168.176.42 |
slave2 | 192.168.176.43 |
一、安裝kafka
1、將kafka解壓至指定目錄
[root@master ~]# tar ~/app/kafka_2.11-1.0.0.tgz -C /usr/local/src/
2、修改server.properties
進入/usr/local/src/kafka_2.11-1.0.0/config
[root@master config]# pwd
/usr/local/src/kafka_2.11-1.0.0/config
[root@master config]# vi server.properties
#在log.retention.hours=168 下面新增下面三項
message.max.byte=5242880
default.replication.factor=2
replica.fetch.max.bytes=5242880
#設置zookeeper的連接端口
zookeeper.connect=master:12181,slave1:12181,slave2:12181/kafka-logs
[root@master config]# mkdir kafka-logs
3、將kafka分發給其餘節點
[root@master config]# scp -r /usr/local/src/kafka_2.11-1.0.0/ slave1:/usr/local/src/
[root@master config]# scp -r /usr/local/src/kafka_2.11-1.0.0/ slave2:/usr/local/src/
二、啓動kafka
1、啓動ZooKeeper
master 機器
[root@master bin]# zkServer.sh start
JMX enabled by default
Using config: /usr/local/src/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[root@master kafka_2.11-1.0.0]# pwd
/usr/local/src/kafka_2.11-1.0.0
[root@master kafka_2.11-1.0.0]# zkServer.sh start
slave1 機器
[root@ slave1 kafka_2.11-1.0.0]# zkServer.sh start
slave2 機器 第二種啓動方法
[root@slave2 kafka_2.11-1.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties
2、啓動kafka
進入 kafka目錄 /usr/local/src/kafka_2.11-1.0.0
2.1、master 啓動
[root@master kafka_2.11-1.0.0]# pwd
/usr/local/src/kafka_2.11-1.0.0
[root@master kafka_2.11-1.0.0]# ./bin/kafka-server-start.sh -daemon ./config/server.properties
[root@master kafka_2.11-1.0.0]# jps
1589 QuorumPeerMain
1926 Kafka
1963 Jps
2.2、slave1 啓動
[root@master kafka_2.11-1.0.0]# ssh slave1
Last login: Mon Dec 30 14:01:56 2019 from master
[root@slave1 ~]# cd /usr/local/src/kafka_2.11-1.0.0/
[root@slave1 kafka_2.11-1.0.0]# ./bin/kafka-server-start.sh -daemon ./config/server.properties
[root@slave1 kafka_2.11-1.0.0]# jps
2019 Jps
1982 Kafka
1631 QuorumPeerMain
2.3、slave2 啓動
[root@slave1 kafka_2.11-1.0.0]# ssh slave2
Last login: Mon Dec 30 14:02:18 2019 from slave1
[root@slave2 ~]# cd /usr/local/src/kafka_2.11-1.0.0/
[root@slave2 kafka_2.11-1.0.0]# ./bin/kafka-server-start.sh -daemon ./config/server.properties
[root@slave2 kafka_2.11-1.0.0]# jps
1635 QuorumPeerMain
1975 Kafka
2012 Jps
[root@slave2 kafka_2.11-1.0.0]#
六、簡單驗證
[root@master bin]# kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic hello
Created topic "hello".
解釋
–replication-factor 1 #複製1份
–partitions 1 #創建1個分區
–topic #主題爲hello
[root@master kafka_2.11-1.0.0]# bin/kafka-topics.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic hello-world
Error while executing topic command : Replication factor: 1 larger than available brokers: 0.
[2019-12-31 21:58:58,491] ERROR org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 1 larger than available brokers: 0.
(kafka.admin.TopicCommand$)
問題解決參考連接
https://blog.csdn.net/u010805617/article/details/51265193
1、發送消息
[root@master bin]# kafka-console-producer.sh --broker-list slave1:9092 --topic test1
>hello
>wrold
2、接收消息
[root@master bin]# kafka-console-consumer.sh --zookeeper master:2181 --topic test1 --from-beginning
hello
wrold