A high-throughput distributed messaging system.
Kafka簡介
Apache Kafka 是一個傳送訊息的系統,原本開發來自Linkedln,用作Linkedln的活動資料傳,和數據處理管道的基礎,現在它已被不同類型的大公司作為多種類型的資料數據傳送系統使用。
Apache Kafka是一種分散式的,高吐量,速度快同時支持即時與離線兩種解決方案。在建置Apache Kafka Cluster需要Apache Zookeeper,建置Kafka 分散式平台時建議3台主機,Kafka也是可以使用單機平台。
Apache Kafka是一種分散式的,高吐量,速度快同時支持即時與離線兩種解決方案。在建置Apache Kafka Cluster需要Apache Zookeeper,建置Kafka 分散式平台時建議3台主機,Kafka也是可以使用單機平台。
Kafka Cluster安裝條件
我們使用三台虛擬機建置Kafka Cluster平台
Ubuntu 14.04版本
Java8
Ubuntu 14.04版本
Java8
1. Install Zookeeper
First Download Zookeeper
First Download Zookeeper
Zookeeper 3.4.8
使用Wget 取得Zookeeper檔案
user@host:~$ wget http://apache.stu.edu.tw/zookeeper/zookeeper-3.4.8/zookeeper-3.4.8.tar.gz
將下載完的Zookeeper解壓縮
user@host:~$ tar -xzf zookeeper-3.4.8.tar.gz user@host:~$ cd zookeeper-3.4.8
將zookeeper conf檔複製成zoo.cfg
user@host:~/zookeeper-3.4.8$ cp conf/zoo_sample.cfg con/zoo.cfg user@host:
編輯zoo.cfg檔案
user@host:~/zookeeper-3.4.8$ vi conf/zoo.cfgtickTime=2000 initLimit=10 syncLimit=5 dataDir=/tmp/zookeeper //Zookeeper 資料儲存路徑 clientPort=2182 //使用Zookeeper Portserver.1=zoo1:2888:3888,zoo2:2888:3888,zoo3:2888:3888
說明一下Server.1: 是Zookeeper Cluster 我們將使用三台虛擬機以 ","格開,設定完成Zookeeper 複製zoo.cfg檔案到其他虛擬機
user@host:~/zookeeper-3.4.8$ scp conf/zoo.cfg user@zoo2:~/zookeeper-3.4.8/conf user@host:~/zookeeper-3.4.8$ scp conf/zoo.cfg user@zoo3:~/zookeeper-3.4.8/conf
create zookeeper myid , so each node can identify itself
//Server1 user@Server1:~$ echo "1" > /var/lib/zookeeper/myid //Server2 user@Server2:~$ echo "2" > /var/lib/zookeeper/myid //Server3 user@Server3:~$ echo "3" > /var/lib/zookeeper/myid
2.Install Kafka
Download Kafka 0.8.2.2
使用Wget 取得Kafka檔案
user@host:~$ wget http://apache.stu.edu.tw/kafka/0.8.2.2/kafka_2.10-0.8.2.2.tgz user@host:~$
解壓縮 Kafka檔案
user@host:~$ tar -xzf kafka_2.10-0.8.2.2.tgz user@host:~$ cd kafka_2.10-0.8.2.2
編輯Kafka Servier.properties
user@host:~/kafka_2.10-0.8.2.2$ vi server.properties user@host:
修改zoo1虛擬機 broker.id
broker.id=1 port=6667 zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
修改zoo2虛擬機 broker.id
broker.id=2 port=6667 zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
修改zoo3虛擬機 broker.id
broker.id=3 port=6667 zookeeper.connect=zoo1:2181,zoo2:2181,zoo3:2181
3. Start Application
Start Zookeeper Cluster Server1 to Server3
user@host:~$ zookeeper-3.4.8/bin/zkServer.sh start" user@host:
Start Kafka Cluster Server1 to Server3
nohup kafka_2.10-0.8.2.2/bin/kafka-server-start.sh kafka_2.10-0.8.2.2/config/server.properties > /dev/null 2>&1 &
4. Test Kafka and Zookeeper
user@host:~$ zookeeper-3.4.8/bin/zkCli.sh -server Server1:2181,Server2:2181,Server3:2181 [zk: Server1:2181,Server2:2181,Server3:2181(CONNECTED) 0] ls / // zookeeper data [controller_epoch, controller, brokers, zookeeper, admin, consumers, config]
Connect Zookeeper Cluster
open Terminal input command line
//create kafka topic test
user@host:~$ kafka_2.10-0.8.2.2/bin/kafka-topics.sh --create --zookeeper Server1:2181,Server2:2181,Server3:2181 --partitions 3 --replication-factor 1 --topic test
Open Terminal Application
//send message
user@host:~$ kafka_2.10-0.8.2.2/bin/kafka-console-producer.sh --zookeeper Server1:6667,Server2:6667,Server3:6667 --topic test [2016-04-01 16:45:26,695] WARN Property topic is not valid (kafka.utils.VerifiableProperties) message,123
open Terminal Application
//accept message
user@host:~$ kafka_2.10-0.8.2.2/bin/kafka-console-consumer.sh --zookeeper Server1:2181,Server2:2181,Server3:2181 --topic test message,123
5. Download Kafka Tool UI
Download KafkaOffsetMonitor-assembly-0.2.1.jar Website toole
KafkaFile
Start Kafka Offset Tools
nohup java -cp /user/KafkaOffsetMonitor-assembly-0.2.1.jar com.quantifind.kafka.offsetapp.OffsetGetterWeb \ --zk Server1:2181,Server2:2181,Server3:2181 \ --port 9090 \ --refresh 10.seconds \ --retain 2.days > /dev/null 2>&1 &
open browser http://localhost:9090
References:
http://kafka.apache.org/
https://zookeeper.apache.org/
https://github.com/quantifind/KafkaOffsetMonitor
沒有留言:
張貼留言