1. 程式人生 > 其它 >大資料實時儲存平臺構建

大資料實時儲存平臺構建

1.下載kafka安裝包並解壓

# wget https://dlcdn.apache.org/kafka/2.6.2/kafka_2.13-2.6.2.tgz
# tar -zxvf kafka_2.13-2.6.2.tgz -C /home/hadoop/app/
# ln -s /home/hadoop/app/kafka_2.13-2.6.2 /home/hadoop/app/kafka

2.修改配置檔案/home/hadoop/app/kafka/config

# cd /home/hadoop/app/kafka/config
# vim server.properties
broker.id=1
log.dirs=/home/hadoop/data/kafka/kafka-logs
zookeeper.connect=dba-01:2181,dba-02:2181,dba-03:2181,dba-04:2181,dba-05:2181/kafka
listeners=PLAINTEXT://dba-01:9092 --叢集模式必須配置,否則以後的操作會報找不到leader的錯誤


引數說明:
【broker.id】:每個broker都必須自己設定的一個唯一id,可以在0~255之間
【log.dirs】:這個極為重要,kafka的所有資料就是寫入這個目錄下的磁碟檔案中的,如果說機器上有多塊物理硬碟,那麼可以把多個目錄掛載到不同的物理硬碟上,然後這裡可以設定多個目錄,這樣kafka可以資料分散到多塊物理硬碟,多個硬碟的磁頭可以並行寫,這樣可以提升吞吐量。ps:多個目錄用英文逗號分隔
【zookeeper.connect】:連線kafka底層的zookeeper叢集的
【Listeners】:broker監聽客戶端發起請求的埠號,預設是9092
【num.network.threads】預設值為3
【num.io.threads】預設值為8,細心的朋友們應該已經發現了,這就是上一篇我們在網路架構上提到的processor和處理執行緒池的執行緒數目。所以說掌握Kafka網路架構顯得尤為重要。現在你看到這兩個引數,就知道這就是Kafka叢集效能的關鍵引數了【unclean.leader.election.enable】 預設是false,意思就是隻能選舉ISR列表裡的follower成為新的leader,1.0版本後才設為false,之前都是true,允許非ISR列表的follower選舉為新的leader
【delete.topic.enable】 預設true,允許刪除topic
【log.retention.hours】可以設定一下,要保留資料多少個小時,這個就是底層的磁碟檔案,預設保留7天的資料,根據自己的需求來就行了
【min.insync.replicas】acks=-1(一條資料必須寫入ISR裡所有副本才算成功),你寫一條資料只要寫入leader就算成功了,不需要等待同步到follower才算寫成功。但是此時如果一個follower宕機了,你寫一條資料到leader之後,leader也宕機,會導致資料的丟失。

3.配置環境變數(broker節點都要配置)

# vim ~/.bash_profile
#KAFKA_HOME 
export KAFKA_HOME=/home/hadoop/app/kafka 
export PATH=$PATH:$KAFKA_HOME/bin

#source ~/.bash_profile

4.啟動叢集

# kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties

5.關閉叢集

# kafka-server-stop.sh

6.叢集測試

# 測試生產資料
# kafka-producer-perf-test.sh --topic test-topic --num-records 500000 --record-size 200 --throughput -1 --producer-props bootstrap.servers=dba-03:9092,dba-04:9092,dba-05:9092 acks=-1
# 測試消費資料
# kafka-consumer-perf-test.sh --broker-list dba-03:9092,dba-04:9092,dba-05:9092 --fetch-size 2000 --messages 500000 --topic test-topic 
6.1.生產者
6.1.1 batch.size(所處理的資料批次大小)
./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=5000 --throughput 30000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=10000  --throughput 30000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=20000  --throughput 30000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000  --throughput 30000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=60000  --throughput 30000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 1000000 --record-size 687 --producer-props bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=80000  --throughput 30000

結論:批次越大,處理時間延遲越小。批次為5000時,吞吐能力最強,整體吞吐能力相差不大。
6.1.2 throughput(吞吐量,單位時間內處理訊息的數量)
./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 100000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 250000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 350000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 400000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 500000

./bin/kafka-producer-perf-test.sh  --topic kf_perfromance_test --num-records 10000000 --record-size 687 --producer-props  bootstrap.servers=dba-01:9092,dba-02:9092,dba-03:9092 batch.size=40000 --throughput 600000

7.kafka叢集監控(待續)