1、安裝zookeeper
參考文件:http://www.cnblogs.com/hunttown/p/5452138.html
2、下載:https://www.apache.org/dyn/closer.cgi?path=/kafka/0.9.0.1/kafka_2.10-0.9.0.1.tgz
kafka_2.10-0.9.0.1.tgz #2.10指的中Scala版本,0.9.0.1批的是Kafka版本。
3、安裝與配置
解壓:tar xzf kafka_2.10-0.9.0.1.tgz
配置config/server.properties
[root@Hadoop-NN-01 config]# vim server.properties broker.id=1 #唯一,填數字 port=9092 #埠 host.name=Hadoop-NN-01 #唯一,填伺服器IP socket.send.buffer.bytes=1048576 socket.receive.buffer.bytes=1048576 socket.request.max.bytes=104857600 log.dir=/home/hadoopuser/kafka-logs #設定日誌的硬碟路徑 num.partitions=1 #分割槽數 關於分割槽數:1天有1億行可以分8個分割槽,如果每天幾十萬行就一個分割槽。 num.io.threads=8 #為機器的核數 zookeeper.connect=Zookeeper-01:2181,Zookeeper-02:2181,Zookeeper-03:2181 # zookeeper Servers列表,各節點以逗號分開。
4、配置環境變數(如果單節點多個Broker請不要配置)
[root@Hadoop-NN-01 ~]# vim /etc/profile export KAFKA_HOME=/home/hadoopuser/kafka_2.10-0.9.0.1 export PATH=$PATH:$KAFKA_HOME/bin [root@Hadoop-NN-01 ~]# source /etc/profile #使環境變數生效
5、啟動kafka
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-server-start.sh config/server.properties &
6、驗證
jps檢視一下kafka是否已經啟動
7、建立topic:
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --create --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181 --replication-factor 3 --partitions 1 --topic mykafka
8、檢視Topic:
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --list --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181 Topic:mykafka
檢視詳細資訊:
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-topics.sh --describe --zookeeper Zookeeper-01:2181, Zookeeper-02:2181, Zookeeper-03:2181 Topic: mykafka PartitionCount:1 ReplicationFactor:3 Configs: Topic: mykafka Partition: 0 Leader: 3 Replicas: 3,1,2 Isr: 3,1,2
9、傳送訊息:
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-console-producer.sh --broker-list Hadoop-NN-01:9092 --topic mykafka
10、接收訊息:
[root@Hadoop-NN-01 kafka_2.10-0.9.0.1]$ bin/kafka-console-consumer.sh --zookeeper Zookeeper-01:2181 --topic mykafka --from-beginning
注:如果要最新的資料,不帶--from-beginning引數即可。
11、可能出現的錯誤
ERROR:Failed to load class "org.slf4j.impl.StaticLoggerBinder"
解決方法:
下載slf4j-1.7.6.zip wget http://www.slf4j.org/dist/slf4j-1.7.6.zip
把slf4j-nop-1.7.6.jar 包複製到kafka libs目錄下面
12、關於Kafka:
在kafka的核心思路中,不需要在記憶體裡快取資料,因為作業系統的檔案快取已經足夠完善和強大,只要不做隨機寫,順序讀寫的效能是非常高效的。kafka的資料只會順序append,資料的刪除策略是累積到一定程度或者超過一定時間再刪除。
Kafka另一個獨特的地方是將消費者資訊儲存在客戶端而不是MQ伺服器,這樣伺服器就不用記錄訊息的投遞過程,每個客戶端都自己知道自己下一次應該從什麼地方什麼位置讀取訊息,訊息的投遞過程也是採用客戶端主動pull的模型,這樣大大減輕了伺服器的負擔。
Kafka還強調減少資料的序列化和複製開銷,它會將一些訊息組織成Message Set做批次儲存和傳送,並且客戶端在pull資料的時候,儘量以zero-copy的方式傳輸,利用sendfile(對應java裡的FileChannel.transferTo/transferFrom)這樣的高階IO函式來減少複製開銷。可見,kafka是一個精心設計,特定於某些應用的MQ系統,這種偏向特定領域的MQ系統我估計會越來越多,垂直化的產品策略值的考慮。
附:推薦幾個實時監控資料
zookeeper -> zooinspector
kafka-> kafkaoffsetmonitor
storm-> storm ui