溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

kafka詳細介紹,安裝,配置

發布時間:2020-06-28 09:09:08 來源:網絡 閱讀:4252 作者:crazy_charles 欄目:大數據


 1、簡介

    Kafka is a distributed,partitioned,replicated commit logservice。它提供了類似于JMS的特性,但是在設計實現上完全不同,此外它并不是JMS規范的實現。kafka對消息保存時根據Topic進行歸類,發送消息者成為Producer,消息接受者成為Consumer,此外kafka集群有多個kafka實例組成,每個實例(server)成為broker。無論是kafka集群,還是producer和consumer都依賴于zookeeper來保證系統可用性集群保存一些meta信息。

Kafka是一種分布式的,基于發布/訂閱的消息系統 , 它的架構包括以下組件:

 

kafka詳細介紹,安裝,配置



i. 消息的發布(publish)稱作producer,消息的訂閱(subscribe)稱作consumer,中間的存儲陣列稱作broker。

ii. 多個broker協同合作,producer、consumer和broker三者之間通過zookeeper來協調請求和轉發。 

iii. producer產生和推送(push)數據到broker,consumer從broker拉取(pull)數據并進行處理。 

iv. broker端不維護數據的消費狀態,提升了性能。 已發布的消息保存在一組服務器中,稱之為Kafka集群。集群中的每一個服務器都是一個代理(Broker). 消費者可以訂閱一個或多個話題,并從Broker拉數據,從而消費這些已發布的消息。

v. 直接使用磁盤進行存儲,線性讀寫,速度快:避免了數據在JVM內存和系統內存之間的復制,減少耗性能的創建對象和垃圾回收。 

vi. Kafka使用scala編寫,可以運行在JVM上。 



kafka詳細介紹,安裝,配置


如上圖所示,一個典型的Kafka集群中包含:

若干Producer(可以是web前端產生的Page View,或者是服務器日志,系統CPU、Memory等),若干broker(Kafka支持水平擴展,一般broker數量越多,集群吞吐率越高)。

若干Consumer Group,以及一個Zookeeper集群。Kafka通過Zookeeper管理集群配置,選舉leader,以及在Consumer Group發生變化時進行rebalance。Producer使用push模式將消息發布到broker,Consumer使用pull模式從broker訂閱并消費消息。

Topic & Partition

Topic在邏輯上可以被認為是一個queue,每條消費都必須指定它的Topic,可以簡單理解為必須指明把這條消息放進哪個queue里。為了使得Kafka的吞吐率可以線性提高,物理上把Topic分成一個或多個Partition,每個Partition在物理上對應一個文件夾,該文件夾下存儲這個Partition的所有消息和索引文件。若創建topic1和topic2兩個topic,且分別有13個和19個分區,則整個集群上會相應會生成共32個文件夾


開始安裝kafka集群:



1,創建用戶

 在所有主機上添加用戶:

groupadd kafka

useradd kafka -g kafka


2,主機分配 分別為Hadoop1 ,Hadoop2,Hadoop3 


3,綁定hosts

172.16.1.250 hadoop1

172.16.1.252 hadoop2

172.16.1.253 hadoop3

 

4,下載,解壓

https://kafka.apache.org/

tar -xzf kafka_2.9.2-0.8.1.1.tgz

cd kafka_2.9.2-0.8.1.1

ln -s /usr/local/hadoop/kafka_2.10-0.8.1.1 /usr/local/hadoop/kafka

chown -R kafka:kafka /usr/local/hadoop


在Hadoop3機器先安裝

5,修改配置文件

cd  /usr/local/hadoop/kafka/config

vim  /kafka/server.properties 

broker.id=3  三臺機的id不能一樣

port=9092

num.network.threads=2

num.io.threads=8

socket.send.buffer.bytes=1048576

socket.receive.buffer.bytes=1048576

socket.request.max.bytes=104857600

log.dirs=/tmp/kafka-logs

num.partitions=2

log.retention.hours=168

log.segment.bytes=536870912

log.retention.check.interval.ms=60000

log.cleaner.enable=false

zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka   (zookpeer集群)

zookeeper.connection.timeout.ms=1000000

啟動

 bin/kafka-server-start.sh /usr/local/hadoop/kafka/config/server.properties &


6,配置Java環境

#java 

export JAVA_HOME=/soft/jdk1.7.0_79

export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

export PATH=$PATH:/$JAVA_HOME/bin:$HADOOP_HOME/bin


7,部署kafka集群

 由于kafka集群需要依賴zookeeper,所以安裝下zookeeper

 見:

https://taoistwar.gitbooks.io/spark-operationand-maintenance-management/content/spark_relate_software/kafka_install.html 


7,同步三臺機器的配置文件,并修改相應的broker.id=1,broker.id=2,broker.id=3

cd /usr/local/hadoop/

在Hadoop3機器上先安裝好一臺了

scp -r kafka/  hadoop1:/usr/local/hadoop/ 

scp -r kafka/  hadoop2:/usr/local/hadoop/ 

  

在Hadoop1機器上,修改配置文件,并啟動

vim conf/server.properties

broker.id=1  三臺機的id不能一樣

port=9092

num.network.threads=2

num.io.threads=8

socket.send.buffer.bytes=1048576

socket.receive.buffer.bytes=1048576

socket.request.max.bytes=104857600

log.dirs=/tmp/kafka-logs

num.partitions=2

log.retention.hours=168

log.segment.bytes=536870912

log.retention.check.interval.ms=60000

log.cleaner.enable=false

zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka   (zookpeer集群)

zookeeper.connection.timeout.ms=1000000

啟動

 bin/kafka-server-start.sh /usr/local/kafka/config/server.properties &


在Hadoop2機器上,修改配置文件,并啟動

vim conf/server.properties

broker.id=2  三臺機的id不能一樣

port=9092

num.network.threads=2

num.io.threads=8

socket.send.buffer.bytes=1048576

socket.receive.buffer.bytes=1048576

socket.request.max.bytes=104857600

log.dirs=/tmp/kafka-logs

num.partitions=2

log.retention.hours=168

log.segment.bytes=536870912

log.retention.check.interval.ms=60000

log.cleaner.enable=false

zookeeper.connect=hadoop1:2181,hadoop2:2181,hadoop3:2181/kafka   (zookpeer集群)

zookeeper.connection.timeout.ms=1000000

啟動

 bin/kafka-server-start.sh /usr/local/hadoop/kafka/config/server.properties &

 

8驗證

使用Kafka自帶的腳本,啟動基于Console的producer和consumer。


9,錯誤總結:

ttp://wenda.chinahadoop.cn/question/4079?notification_id=290954&rf=false&item_id=10382#!answer_10382      

http://blog.csdn.net/wenxuechaozhe/article/details/52664774  

http://472053211.blog.51cto.com/3692116/1655844 


10,實際操作見:

https://taoistwar.gitbooks.io/spark-operationand-maintenance-management/content/spark_relate_software/kafka_install.html

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女