簡單說明一下什麼是kafka
Apache kafka是消息中間件的一種,我發現很多人不知道消息中間件是什麼,在開始學習之前,我這邊就先簡單的解釋一下什麼是消息中間件,只是粗略的講解,目前kafka已經可以做更多
的事情。
舉個例子,生產者消費者,生產者生產雞蛋,消費者消費雞蛋,生產者生產一個雞蛋,消費者就消費一個雞蛋,假設消費者消費雞蛋的時候噎住了(系統宕機了),生產者還在生產雞蛋,那新生產的雞蛋就丟失了。再比如生產者很強勁(大交易量的情況),生產者1秒鐘生產100個雞蛋,消費者1秒鐘只能吃50個雞蛋,那要不了一會,消費者就吃不消了(消息堵塞,最終導致系統超時),消費者拒絕再吃了,”雞蛋“又丟失了,這個時候我們放個籃子在它們中間,生產出來的雞蛋都放到籃子裏,消費者去籃子裏拿雞蛋,這樣雞蛋就不會丟失了,都在籃子裏,而這個籃子就是”kafka“。
雞蛋其實就是“數據流”,系統之間的交互都是通過“數據流”來傳輸的(就是tcp、https什麼的),也稱爲報文,也叫“消息”。
消息隊列滿了,其實就是籃子滿了,”雞蛋“ 放不下了,那趕緊多放幾個籃子,其實就是kafka的擴容。
各位現在知道kafka是幹什麼的了吧,它就是那個"籃子"。
Kafka的名詞解釋
producer
:生產者,就是它來生產“雞蛋”的。consumer
:消費者,生出的“雞蛋”它來消費。topic
:你把它理解爲標籤,生產者每生產出來一個雞蛋就貼上一個標籤(topic),消費者可不是誰生產的“雞蛋”都吃的,這樣不同的生產者生產出來的“雞蛋”,消費者就可以選擇性的“吃”了。broker
:就是籃子了。
安裝版本
kafka_2.11-0.10.2.0.tgz,需要安裝包的請加博主VX18052079038
輸入命令
sudo tar -zxvf kafka_2.11-0.10.2.0.tgz -C /usr/local
然後修改相關權限和名字,輸入相關命令
sudo mv kafka_2.11.0.10.2.0.tgz kafka
sudo chown -R hadoop:hadoop kafka
最後,把kafka加入到環境變量中去,如圖所示:
我們修改config/server.properties
修改內容如下:
broker.id=0
log.dir=/usr/local/kafka/kafka-logs
zookeeper.connect=master:2181
接着啓動zookeeper服務,輸入如下命令
然後啓動kafka服務,輸入如下命令:
./bin/kafka-server-start.sh ./config/server.properties
打開一個新的終端創建Topic,輸入命令如下所示:
./bin/kafka-topic.sh --create --zookeeper master:2181 --replication-factor 1 --partitions 1 --topic spark
創建一個produce,輸入代碼如下所示:
./bin/kafka-console-producer.sh --broker-list master:9092 --topic spark
打開一個新的終端,創建一個consumer,代碼如下所示:
./bin/kafka-console-consumer.sh --bootstrap-server master:9092 --topic spark --from-beginning
當從produce端輸入字符串時候,在consumer端就能接收到,表示測試成功,如圖所示: