Kafka第一課概述與安裝

生產經驗 面試重點
Broker面試重點
代碼,開發重點
67 章了解

如何記錄行為數據

1. Kafka概述

1.產生原因

前端 傳到日志 日志傳到Flume 傳到HADOOP
但是如果數據特比大,HADOOP就承受不住了

2.Kafka解決問題

控流消峰
Flume傳給Kafka
存到Kafka
Hadoop 從Kafka取數據 ,而不是Kafka強行發
類似 菜鳥驛站, 先存取來,我們主動去取,或者指定他去送

存到HDFS的,一定不是實時數據,因為HDFS太慢了
在這里插入圖片描述

3.應用場景

1. 緩沖/消峰

消息隊列存儲數據,而不是直接發給處理系統,處理完一部分,再取,再處理
在這里插入圖片描述

2.解耦

通過中間件接口,適配不同數據源和目的地

在這里插入圖片描述

3.異步通信

允許用戶將消息放入隊列,但不立即處理,然后再需要的時候處理。
為什么異步處理快: 同步需要等待
點餐:
同步:服務員過來給我點餐 ,這里需要服務員過來
異步:掃桌子碼自己點餐

4.消息隊列模式

在這里插入圖片描述
在這里插入圖片描述
Kafka使用發布訂閱模式
數據會保存一段時間

5.基礎架構

生產者 - Broker - Group
TopicA是什么?
這里的分區是什么?
分區: 物理分割
為什么要分割:結合集群分散存儲
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

1. 分區操作

topic 是一整個數據 ,分區是為了將數據分在不同的Broker上。類似于HDFS,
Broker是物理存儲
Partition 類似于DN

2.消費者組的概念

類似權限管理把,組內并行消費,便于管理

  • Producer生產者: 向Kafka broker發消息的客戶端(自主)
  • Consumer消費者: 從Kafka取消息的客戶端(自主)
  • Group 組: 消費者組。消費者組內每個消費者負責消費不同分區的數據,一個分區只能由一個組內消費者消費;消費者組之間互不影響。所有的消費者都屬于某個消費者組,即消費者組是邏輯上的一個訂閱者。
    這個說明,分區不支持并行讀取,一個分區只能同時一個組內消費者消費。
    組內消費者對不同分區進行讀取,是為了優化讀取速率.
  • Broker 一臺Kafka服務器就是一個broker。一個集群由多個broker組成。一個broker可以容納多個topic。
  • Topic:可以理解為一個隊列,生產者和消費者面向的都是一個topic。
  • Partition:為了實現擴展性,一個非常大的topic可以分布到多個broker(即服務器)上,一個topic可以分為多個partition,每個partition是一個有序的隊列。
  • Leader:每個分區多個副本的“主”,生產者發送數據的對象,以及消費者消費數據的對象都是Leader。
  • Follower:每個分區多個副本中的“從”,實時從Leader中同步數據,保持和Leader數據的同步。Leader發生故障時,某個Follower會成為新的Leader。
  • Replica:副本。一個topic的每個分區都有若干個副本,一個Leader和若干個Follower。

3.副本

備份功能,備份partition 多個副本, 類似HDFS,類似DN(存入一下子3個)把
多副本時,一個副本叫leader 另一個副本叫follower,
也是選出來的角色 交互時只和leader交互
follower平時只有備份作用,但是當leader倒下時,他直接成為leader
在這里插入圖片描述
這里是存儲數據的目錄,而不是存Kafka自己日志的目錄
在這里插入圖片描述
高可用, 配置多個
在這里插入圖片描述
replicas 是存儲副本的位置
lsr 是目前存活的副本

分區數只能改大,不能改小
副本數修改,
通過JSON手動修改

消費者按最新的offect進行消費

5.配置

1.解壓

[atguigu@hadoop102 software]$ tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/module/
[atguigu@hadoop102 module]$ mv kafka_2.12-3.3.1/ kafka

2.配置文件

配置文件目前只需要修改三個
broker編號 不同機器只需要編號不同即可
log.dir 數據存放位置
zookeeper.connect 連接集群的地址

[atguigu@hadoop102 kafka]$ cd config/
[atguigu@hadoop102 config]$ vim server.properties
# 修改1 broker的全局唯一編號,不能重復,只能是數字。 
broker.id=0#處理網絡請求的線程數量
num.network.threads=3
#用來處理磁盤IO的線程數量
num.io.threads=8
#發送套接字的緩沖區大小
socket.send.buffer.bytes=102400
#接收套接字的緩沖區大小
socket.receive.buffer.bytes=102400
#請求套接字的緩沖區大小
socket.request.max.bytes=104857600
#修改2 這里其實是是存放到Kafka的數據的地方 kafka運行日志(數據)存放的路徑,路徑不需要提前創建,kafka自動幫你創建,可以配置多個磁盤路徑,路徑與路徑之間可以用","分隔
log.dirs=/opt/module/kafka/datas
#topic在當前broker上的分區個數
num.partitions=1
#用來恢復和清理data下數據的線程數量
num.recovery.threads.per.data.dir=1
# 每個topic創建時的副本數,默認時1個副本
offsets.topic.replication.factor=1
#segment文件保留的最長時間,超時將被刪除
log.retention.hours=168
#每個segment文件的大小,默認最大1G
log.segment.bytes=1073741824
# 檢查過期數據的時間,默認5分鐘檢查一次是否數據過期
log.retention.check.interval.ms=300000
#修改3  連接集群的位置 配置連接Zookeeper集群地址(在zk根目錄下創建/kafka,方便管理)
zookeeper.connect=hadoop102:2181,hadoop103:2181,hadoop104:2181/kafka

3. 環境變量

sudo vim /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/opt/module/kafka
export PATH=$PATH:$KAFKA_HOME/bin

這個是為了啟動的時候不需要輸入一長串地址
比如:bin/kafka-server-start.sh -daemon config/server.properties
這里的config是kafka的路徑 啟動需要輸入全路徑

bin/kafka-server-start.sh -daemon /opt/module/kafka/config/server.properties

修改后

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

4.集群腳本

#! /bin/bash
if [ $# -lt 1 ]
then echo "參數錯誤,請輸入start或者stop"exit
fi
case $1 in
"start"){for i in hadoop102 hadoop103 hadoop104 do echo "---------------啟動 $i Kafka ----------------------"ssh  $i  "$KAFKA_HOME/bin/kafka-server-start.sh -daemon $KAFKA_HOME/config/server.properties"done
};;
"stop"){for i in hadoop102 hadoop103 hadoop104do echo "---------------停止 $i Kafka ---------------------"ssh $i  "$KAFKA_HOME/bin/kafka-server-stop.sh -daemon $KAFKA_HOME/config/server.properties"done
};;
esac

2.命令

1.主題命令

1. --bootstrap-server <String: server toconnect to>

連接Broker 操作Kafka必須有這個命令
既可以輸入一個,也可以輸入多個

kafka-topics.sh --bootstrap-server hadoop102:9092,hadoop103:9092,hadoop104:9092 

2.主題的創建和刪除

– create +空格 ±-topic+空格+主題名
– delete +空格 ±-topic+空格+主題名
主題 主題名 一般放最后

[atguigu@hadoop102 kafka]$ bin/kafka-topics.sh --bootstrap-server hadoop102:9092 --create --partitions 1 --replication-factor 3 --topic first

在這里插入圖片描述

–topic 定義topic名
–replication-factor 定義副本數
–partitions 定義分區數
在這里插入圖片描述

3.查看所有主題

–list

4.查看主題詳細描述

可以看單個主題,可以看全部主題
不加后綴默認查看全部
查看單個需要+空格 ±-topic+空格+主題名
在這里插入圖片描述
在這里插入圖片描述

5.修改–alter

設置分區數
–partitions <Integer: # of partitions>
在這里插入圖片描述
分區只能調大,不能調小

設置分區副本
–replication-factor<Integer: replication factor>

// 手動調整kafka topic分區的副本數 {// 1. 版本號 這個是自定義的版本號"version":1,// 2. 分區是重點,因為副本改變分區也要改變。//   其實就是將分區的副本重新進行布局"partitions":[{"topic":"first","partition":0,"replicas":[1,2,0]},{"topic":"first","partition":1,"replicas":[2,0,1]},{"topic":"first","partition":2,"replicas":[2,0,1]}] 
}
// 運行命令
//kafka-reassign-partitions.sh --bootstrap-server hadoop102:9092 --reassignment-json-file ./rep.json --execute

在這里插入圖片描述

更新系統默認的配置。
–config <String: name=value>
臨時調配參數

2.生產者命令

1.操作

--topic <String: topic>
[atguigu@hadoop102 kafka]$ bin/kafka-console-producer.sh
bin/kafka-console-producer.sh --bootstrap-server hadoop102:9092 --topic first

在這里插入圖片描述

3.消費者

kafka-console-consumer.sh --bootstrap-server +集群+ 主題

  • –bootstrap-server <String: server toconnect to> 連接的Kafka Broker主機名稱和端口號。
  • –topic <String: topic> 操作的topic名稱。
  • –from-beginning 從頭開始消費。
  • –group <String: consumer group id> 指定消費者組名稱。
kafka-console-consumer.sh --bootstrap-server hadoop102:9092 --topic first

為什么消費者未開啟時,生產者發送的消息,等消費者起來了收不到?
沒有指定消費者組時,每次開啟,消費者屬于的消費者組就是隨機的,那么就無法進行斷點續傳
當主動指定組后,再次登錄,在指定組后,會自動開啟斷點續傳功能
在這里插入圖片描述
在這里插入圖片描述
想要提前的順序,就需要,–from-beginning
但是不能和用戶組一起跑

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/38082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/38082.shtml
英文地址,請注明出處:http://en.pswp.cn/news/38082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt掃盲-Qt Paint System 概述

Qt Paint System 概述 一、概述二、繪圖設備和后端1. Widget2. Image3. Pixmap4. OpenGL繪制設備5. Picture6. 自定義繪制后端 三、繪圖與填充1. Drawing2. 填充 Filling 四、坐標系統1. 渲染Window-Viewport轉換 五、讀寫圖像文件1. QMovie 六、繪圖相關設備 一、概述 Qt的pa…

【數據庫】P2 SELECT 與 SQL注釋

SELECT 檢索單個列檢索多個列檢索所有列不重復的結果 DISTINCT限制結果 LIMIT 與 OFFSET注釋行內注釋多行注釋 檢索單個列 從 Products 表中檢索一個名為 prod_name 的列&#xff1b; SELECT prod_name FROM Products;【1】返回的數據可能是無序的&#xff0c;除非規定了順序…

7.5.tensorRT高級(2)-RAII接口模式下的生產者消費者多batch實現

目錄 前言1. RAII接口模式封裝生產者消費者2. 問答環節總結 前言 杜老師推出的 tensorRT從零起步高性能部署 課程&#xff0c;之前有看過一遍&#xff0c;但是沒有做筆記&#xff0c;很多東西也忘了。這次重新擼一遍&#xff0c;順便記記筆記。 本次課程學習 tensorRT 高級-RAI…

原生JS手寫掃雷小游戲

場景 實現一個完整的掃雷游戲需要一些復雜的邏輯和界面交互。我將為你提供一個簡化版的掃雷游戲示例&#xff0c;幫助你入門。請注意&#xff0c;這只是一個基本示例&#xff0c;你可以根據自己的需求進行擴展和改進。 思路 創建游戲板&#xff08;Grid&#xff09;&#xff1…

軟考:中級軟件設計師:文件管理,索引文件結構,樹型文件結構,位示圖,數據傳輸方式,微內核

軟考&#xff1a;中級軟件設計師: 提示&#xff1a;系列被面試官問的問題&#xff0c;我自己當時不會&#xff0c;所以下來自己復盤一下&#xff0c;認真學習和總結&#xff0c;以應對未來更多的可能性 關于互聯網大廠的筆試面試&#xff0c;都是需要細心準備的 &#xff08;1…

小森動畫回憶錄(二)-瀏覽哆啦a夢的四次元口袋

// DoraemonProps結構用于存儲單個道具信息 struct DoraemonProps{// 道具名稱string name;// 道具用途string UseOfProps; };// 從文件加載哆啦A夢道具信息到vector void LoadDoraemonProps(vector<DoraemonProps>& DoraemonProps) {// 創建文件輸入流ifstream str…

人臉識別技術應用安全管理規定(試行)

近年來&#xff0c;人臉識別技術不斷成熟&#xff0c;已大量應用于治安管理、金融支付、門禁考勤等諸多領域&#xff0c;極大便捷了公眾生活。然而&#xff0c;人臉識別技術在得到廣泛應用的同時&#xff0c;仍存在一些不規范現象。人臉識別因其技術特點&#xff0c;涉及公眾敏…

node.js 基礎高并發案例

什么是高并發 高并發是指系統在同一時間段內需要處理大量的并發請求或同時進行大量的操作。在計算機領域中&#xff0c;高并發通常指的是在短時間內有大量的用戶或客戶端同時訪問系統或進行操作&#xff0c;對系統的并發處理能力提出了較高的要求。 高并發的特點包括 大量的…

Python學習筆記第五十五天(Pandas CSV文件)

Python學習筆記第五十五天 Pandas CSV 文件read_csv()to_string()to_csv() 數據處理head()tail()fillna() info() 后記 Pandas CSV 文件 CSV&#xff08;Comma-Separated Values&#xff0c;逗號分隔值&#xff0c;有時也稱為字符分隔值&#xff0c;因為分隔字符也可以不是逗號…

【嵌入式學習筆記】嵌入式入門7——IIC總線協議

1.IIC簡介 IIC即Inter Integrated Circuit&#xff0c;集成電路總線&#xff0c;是一種同步&#xff0c;串行&#xff0c;半雙工通信總線。 IIC總線協議——總線就是傳輸數據通道&#xff0c;協議就是傳輸數據的規則&#xff0c;有以下特點&#xff1a; 由時鐘線SCL和數據線S…

ES踩坑記錄之集群間通信異常造成節點無法加入

問題描述 公司新搭了一套ES集群&#xff0c;4臺機器&#xff0c;ES版本7.5.0&#xff0c;前期搭建十分順利&#xff0c;但集群運行一段時間后會出現問題。問題具體體現為節點間通訊異常&#xff0c;集群會重新選主&#xff0c;但選主之后只能通過新的主節點進行集群操作&#…

【Linux】可重入函數 volatile關鍵字 以及SIGCHLD信號

可重入函數 volatile關鍵字 以及SIGCHLD信號 一、可重入函數1、引入2、可重入函數的判斷 二、volatile關鍵字1、引入2、關于編譯器的優化的簡單討論 三、SIGCHLD信號 一、可重入函數 1、引入 我們來先看一個例子來幫助我們理解什么是可重入函數&#xff1a; 假設我們現在要對…

EthGlobal 巴黎站 Chainlink 獲獎項目介紹

在 Web3 中&#xff0c;每一周都至關重要。項目的發布、版本的發布以及協議的更新以驚人的速度推出。開發者必須保持學習&#xff0c;隨時了解最新的工具&#xff0c;并將所有他們所學的東西&#xff08;無論是舊的還是新的&#xff09;聯系起來&#xff0c;以構建推動 Web3 技…

PLUS操作流程、應用與實踐,多源不同分辨率數據的處理、ArcGIS的應用、PLUS模型的應用、InVEST模型的應用

PLUS模型是由中國地質大學&#xff08;武漢&#xff09;地理與信息工程學院高性能空間計算智能實驗室開發&#xff0c;是一個基于柵格數據的可用于斑塊尺度土地利用/土地覆蓋(LULC)變化模擬的元胞自動機(CA)模型。PLUS模型集成了基于土地擴張分析的規則挖掘方法和基于多類型隨機…

Word轉PDF在線轉換如何操作?分享轉換技巧

現如今&#xff0c;pdf轉換器已成為大家日常辦公學習必不可少的工具&#xff0c;市場上的pdf轉換器主要有兩種類型&#xff0c;一種是需要下載安裝的&#xff0c;另一種是網頁版&#xff0c;打開就可以使用的&#xff0c;今天小編給大家推薦一個非常好用的網頁版pdf轉換器&…

基于jvm-sandbox的imock開發指南

基于jvm-sandbox的imock開發指南 團隊今年的指標是為公司提供一個方法級的mock平臺&#xff0c; 這個重要的任務落在了我的身上。 0、明確團隊的需求 支持java后端服務方法級別的mock&#xff0c;對沒有測試環境的第三方服務進行mock&#xff0c;增加團隊覆蓋率。 啟用&#x…

PDF換行的難度,誰能解決?

換行的時候確認不了長度&#xff1a; import java.awt.*;public class Test {public static void main(String[] args) {String str1 "淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘淘";String str2 "AAAAAAAAAAAAAAAAAAAAAAAAA…

實驗篇——亞細胞定位

實驗篇——亞細胞定位 文章目錄 前言一、亞細胞定位的在線網站1. UniProt2. WoLFPSORT3. BUSCA4. TargetP-2.0 二、代碼實現1. 基于UniProt&#xff08;不會&#xff09;2. 基于WoLFPSORT后續&#xff08;已完善&#xff0c;有關代碼放置于[python爬蟲學習&#xff08;一&#…

一零七零、Redis基礎穩固篇

Redis是什么&#xff0c;優缺點&#xff1f; Redis本質是一個K-V類型的內存數據庫 純內存操作&#xff0c;每秒可處理超過10w的讀寫操作 優點&#xff1a; 讀寫性能極高 非阻塞IO 單線程 支持持久化 支持事務 數據結構豐富 缺點&#xff1a; 容易受到物理內存的限制 主機宕機可…

【JAVA】日志

輸出語句日志輸出位置只能是控制臺可以將日志信息寫入文件或數據庫中取消日志需要修改代碼&#xff0c;靈活性差只需修改日志文件多線程性能較差性能較好 日志規范接口&#xff1a;Commons Logging(JCL)、Simple Logging Facade for Java(slf4j) 日志實現框架&#xff1a;Log…