Kafka框架基礎

* Kafka框架基礎

官網:kafka.apache.orgapache

框架簡介tomcat

Apache Kafka是分佈式發佈-訂閱消息系統。它最初由LinkedIn公司開發,以後成爲Apache項目的一部分。Kafka是一種快速、可擴展的、設計內在就是分佈式的,分區的和可複製的提交日誌服務。安全

相關概念架構

** 生產者併發

提供數據源生產的地方,對於同一個topic,生產者只能有一個,這樣能夠確保同一個topic數據來自同一個業務數據,支持多併發框架

** 消費者分佈式

消費數據的客戶端,對於同一個topic,能夠有多個消費者,好比spark,storm等等高併發

** Broker測試

消息中間件處理結點,一個Kafka節點就是一個broker,多個broker能夠組成一個Kafka集羣。大數據

** Topic

同一類消息的統稱,Kafka集羣可以同時負載多個topic分發。

** Partition

topic物理上的分組,一個topic能夠分爲多個partition,每一個partition是一個有序的隊列,同一個topic裏面的數據是存放在不一樣的分區中。

** Replication

每一個分區或者topic都是有副本的,副本的數量也是能夠在建立topic的時候就指定好,保證數據的安全性,以及提供高併發讀取效率。

** Segment

partition物理上由多個segment組成

** Offset

每一個partition都由一系列有序的、不可變的消息組成,這些消息被連續的追加到partition中。partition中的每一個消息都有一個連續的序列號叫作offset,用於partition惟一標識一條消息

框架特點

** 同時爲發佈和訂閱提供高吞吐量。Kafka每秒能夠生產約25萬消息(約50 MB),每秒處理55萬消息(約110 MB)。

** 可進行持久化操做。將消息持久化到磁盤,所以可用於批量消費,例如ETL,以及實時應用程序。經過將數據持久化到硬盤以及replication防止數據丟失。

** 分佈式系統,易於向外擴展。全部的producer、broker和consumer都會有多個,均爲分佈式的。無需停機便可擴展機器。

** 消息被處理的狀態是在consumer端維護,而不是由server端維護。當失敗時能自動平衡。

架構圖

 
 

* 框架部署

** 相關下載

kafka以及scala:連接:http://pan.baidu.com/s/1pLBFJf1 密碼:seto

** 解壓Kafka以及scala

$ tar -zxf kafka_2.10-0.8.2.1.tgz -C /opt/modules/cdh/

$ tar -zxf scala-2.10.4.tgz -C /opt/modules/cdh/

** 安裝JDK並配置環境變量

再也不贅述

** 安裝並啓動zookeeper

在zookeeper的根目錄下:

$ bin/zkServer.sh start

** 配置scala環境變量

# vi /etc/profile

$ source /etc/profile

(注意以上兩條語句的執行用戶)

添加以下:

##SCALA_HOME

SCALA_HOME=/opt/modules/cdh/scala-2.10.4

export PATH=$PATH:$SCALA_HOME/bin

使用命令檢查scala配置是否正確:

$ scala -version,如圖:

 
 

** 修改Kafka配置文件

server.properties

修改成以下:

 
 

producer.properties

變更內容以下:

 
 

consumer.properties

變更內容以下:

 

 
 

** 啓動Kafka

$ bin/kafka-server-start.sh config/server.properties

** 建立Topic

$ bin/kafka-topics.sh --create --zookeeper z01:2181 --replication-factor 1 --partitions 1 --topic testTopic

 
 

** 啓動生產者

$ bin/kafka-console-producer.sh --broker-list z01:9092 --topic testTopic

 
 

** 啓動消費者

$ bin/kafka-console-consumer.sh --zookeeper z01:2181 --topic testTopic --from-beginning

 
 

在生產者窗口輸入數據,在消費者窗口查看數據,測試如圖:

消費者:

 
 

生產者:

 
 

* 整合測試

使用flume+kafka整合測試

** 配置flume

原來咱們配置flume,是在tomcat所在機器節點開啓了一個flume收集日誌,並直接上傳到HDFS,若是集羣中存在多個機器節點,則勢必致使對HDFS集羣佔用率太高,因此在面臨多個flume集羣時,通常會採用1~2個單獨的flume節點來收集另外flume節點的日誌,至關於弄了一箇中轉站,由中轉站收集其餘flume,再統一放置到HDFS系統中,此刻咱們採用方案2,原理如圖:

 
 

背景:在一臺機器上開兩個flume,分別收集tomcat日誌和hive日誌,這二者的日誌信息分別輸入到中間層flume(這個中間層flume也模擬在同一個機器節點上),而後中間層flume在將數據寫入到HDFS。

首先檢查一下hive的conf目錄下的hive-log4j.properties配置中,是否已經指定了hive的日誌目錄,若是沒有,請指定,如圖:

 
 

涉及flume文件:如下文件存在於flume的conf目錄下,若是不存在,請自行建立便可。

flume-apache-log-kafka.conf

 
 

flume-hive-log-kafka.conf

 
 

flume-connector-kafka.conf

 
 

依次啓動:

a4:

$ bin/flume-ng agent --conf conf/ --name a4 --conf-file conf/flume-connector-kafka.conf

a3:

$ bin/flume-ng agent --conf conf/ --name a3 --conf-file conf/flume-hive-log-kafka.conf

a2:

$ bin/flume-ng agent --conf conf/ --name a2 --conf-file conf/flume-apache-log-kafka.conf

測試後如圖,便可發現,日誌在HDFS和kafka中都已經顯示出來:

 
 

我的微博:http://weibo.com/seal13

QQ大數據技術交流羣(廣告勿入):476966007

做者:Z盡際連接:https://www.jianshu.com/p/a24af7a86392來源:簡書著做權歸做者全部。商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
相關文章
相關標籤/搜索