1. 程式人生 > >大資料入門(20)kafka安裝配置

大資料入門(20)kafka安裝配置

kafka基本概念
1、kafka是一個分散式的訊息快取系統
2、kafka叢集中的伺服器都叫做broker
3、kafka有兩類客戶端,一類叫producer(訊息生產者),一類叫做consumer(訊息消費者),客戶端和broker伺服器之間採用tcp協議連線
4、kafka中不同業務系統的訊息可以通過topic進行區分,而且每一個訊息topic都會被分割槽,以分擔訊息讀寫的負載
5、每一個分割槽都可以有多個副本,以防止資料的丟失
6、某一個分割槽中的資料如果需要更新,都必須通過該分割槽所有副本中的leader來更新
7、消費者可以分組,比如有兩個消費者組A和B,共同消費一個topic:order_info,A和B所消費的訊息不會重複
比如 order_info 中有100個訊息,每個訊息有一個id,編號從0-99,那麼,如果A組消費0-49號,B組就消費50-99號
8、消費者在具體消費某個topic中的訊息時,可以指定起始偏移量

###############單節點啟動######################

1、解壓安裝

2、啟動zookeeper
使用自帶的zookeeper,啟動:bin/zookeeper-server-start.sh conf/zookeeper.properties
    啟動報錯:UseCompressedOops找不到
        修改檔案:kafka-run-class.sh中,
         KAFKA_JVM_PERFORMANCE_OPTS="-server -XX:+UseCompressedOops -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled -XX:+CMSScavengeBeforeRemark -XX:+DisableExplicitGC -Djava.awt.headless=true"
         刪掉 -XX:+UseCompressedOops
3、啟動kafka
    bin/kafka-server-start.sh config/server.properties
4、create a topic
    bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test_name
    bin/kafka-topics.sh --list --zookeeper localhost:2181
5、send some message (生產者)
    bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test_name
    xiaomi
    iphone
    huawei
6、start a consumer(消費者)
    #接收所有的訊息
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --from-beginning --topic test_name
    #只接收consumer啟動後傳送的訊息
    bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test_name
    
############################叢集安裝(3臺機子)########################################
叢集安裝
1、解壓
2、配置zookeeper叢集,修改config/server.properties
    broker.id=0
    port=9092
    log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs
    zookeeper.connect=weekend05:2181,weekend06:2181,weekend07:2181
    
    注意:broker.id必須唯一,port,log.dir可以不修改
3、copy到其他服務中
        scp -r kafka_2.10-0.8.1.1 weekend06:/home/admin/app/
        scp -r kafka_2.10-0.8.1.1 weekend07:/home/admin/app/    
    
    weekend06 config/server.properties
        broker.id=1        
        log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs-1
    weekend07 config/server.properties
        broker.id=2        
        log.dir=/home/admin/app/kafka_2.10-0.8.1.1/tmplogs/kafka-logs-2
    
4、將zookeeper叢集啟動
        
5、在每一臺節點上啟動broker
    
    前臺啟動:啟動後,關閉連線,則服務關閉,操作其他需要克隆會話,比較繁瑣
        命令:bin/kafka-server-start.sh config/server.properties
            
    後臺啟動:顯示程序,繼續可以操作其他,比較方便
        命令:bin/kafka-server-start.sh config/server.properties 1>/dev/null 2>&1 &
            1>/dev/null 標準輸出定向到一個檔案中,2>&1,錯誤輸出是標準輸出打印出來,最後一個& 後臺執行
            
6、在kafka叢集中建立一個topic
    bin/kafka-topics.sh --create --zookeeper weekend05:2181 --replication-factor 3 --partitions 1 --topic order

7、檢視話題
    bin/kafka-topics.sh --list --zookeeper weekend05:2181
    
8、用一個producer向某一個topic中寫入訊息
    bin/kafka-console-producer.sh --broker-list weekend05:9092 --topic order

9、用一個comsumer從某一個topic中讀取資訊
    bin/kafka-console-consumer.sh --zookeeper weekend05:2181 --from-beginning --topic order

10、檢視一個topic的分割槽及副本狀態資訊
    bin/kafka-topics.sh --describe --zookeeper weekend05:2181 --topic order