Kafka入門-集群基礎環境搭建(JDK/Hadoop 部署 + 虛擬機配置 + SSH 免密+Kafka安裝啟動)

Kafka

簡介

傳統定義:Kafka是一個分布式的基于發布/訂閱模式的消息隊列,應用于大數據實時處理領域。

Kafka最新定義:Apache Kafka是一個開源分布式事件流平臺,被數千家公司用于高性能數據管道、流分析、數據集成和關鍵任務應用程序

Apache Kafka is an open-source distributed event streaming platform used by thousands of companies for high-performance data pipelines, streaming analytics, data integration, and mission-critical applications

消息隊列的應用場景:

  • 緩沖/消峰:有助于控制和優化數據流經過系統的速度,解決生產消息和消費消息的處理速度不一致的情況。比如雙十一用戶發送訪問的請求速度和系統處理的速度也是不一樣的,就需要消息隊列作為緩沖。
  • 解耦:允許獨立的擴展或修改兩邊的處理過程,只要保證他們遵守同樣的接口約束。
  • 異步通信:允許用戶把一個消息放入隊列,但是不立即處理它,在需要的時候再進行處理。

消息隊列的兩種模式:

  • 點對點模式:一個生產者對應一個消費者,進行點對點的傳輸消息,消費者主動拉取數據,消息消費之后消除消息。
  • 發布/訂閱模式:相當于可以分成多個不同的主題的消息,消費者只會接受自己想要的主題內的消息,消費者消費數據后不刪除數據,每個消費者之間相互獨立,都可以消費到消息。

基本結構

Kafka由以下幾個部分構成

  • 生產者:向kafka發送消息的客戶端稱作生產者
  • 消費者:向Kafka獲取消息的客戶端稱作消費者
  • Broker:每一臺Kafka服務器稱之為Broker,一個集群由多個Broker組成
  • Topic:主題,類似于存儲消息的隊列,生產者和消費者根據對應主題進行發送、接收消息
  • Partition:分區,每一個Topic主題可以對應多個分區,也就是將一個大的Topic拆分成幾個小的partiton,可以存儲到不同的Broker上
  • Replica:副本,為了讓集群中節點發送故障時,該節點上的分區數據不丟失,每一個Topic的每個分區都有副本,副本之間存在一個Leader(生產者發送消息、消費者消費消息都是通過Leader)和若干Follower(實時從Leader同步數據,保存和Leader數據的同步)
  • Controller:Controller可以看作Broker的領導者,用于管理和協調Kafka集群,比如管理集群中所有分區的狀態,當副本的Leader所在節點崩潰,Controller會發起選舉。

環境配置

配置虛擬機

首先創建一個虛擬機,并克隆三臺虛擬機
在這里插入圖片描述

登錄101虛擬機,進行配置端口

vim /etc/sysconfig/network-scripts/ifcfg-ens33

修改IPADDR

IPADDR="192.168.27.101"

配置主機名

vim	/etc/hostname

修改主機名為centos101

centos101

然后reboot

reboot

其余兩臺虛擬機按照101的配置進行設置

安裝JDK

在101虛擬機安裝JDK

首先查看虛擬機有沒有自帶的jdk,如果有需要先刪除再安裝jdk

rpm -qa | grep -i java

獲取jdk安裝包

wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz

解壓安裝包

tar -zxvf jdk-8u131-linux-x64.tar.gz 

配置環境變量

sudo vim /etc/profile.d/my_env.sh

在my_env.sh中輸入以下內容

#JAVA_HOME
export JAVA_HOME=/mydata/jdk/jdk1.8.0_131
export PATH=$PATH:$JAVA_HOME/bin

執行source命令

source /etc/profile

查看jdk是否安裝完畢

java -version

安裝Hadoop

使用華為云開源鏡像獲取安裝包

https://mirrors.huaweicloud.com/home

wget https://mirrors.huaweicloud.com/apache/hadoop/core/hadoop-3.1.3/hadoop-3.1.3.tar.gz

解壓安裝包

tar -zxvf hadoop-3.1.3.tar.gz 

配置環境變量

sudo vim /etc/profile.d/my_env.sh

加入Hadoop的環境變量

#HADOOP_HOME
export HADOOP_HOME=/mydata/hadoop/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

執行source

source /etc/profile

查看是否安裝完成

hadoop version

配置其余兩臺虛擬機

scp安全拷貝命令將安裝好的jdk和hadoop拷貝到102和103

scp -r jdk/ root@192.168.27.102:/mydata
scp -r hadoop/ root@192.168.27.102:/mydata

注意:rsync遠程同步工具可以只對差異文件做更新,而scp是復制所有文件

xsync集群分發腳本可以循環復制文件所有的節點的相同目錄下

為了使用xsync,需要建立一個腳本來實現,腳本需要放在聲明了全局變量的路徑下,因此修改之前創建的my_env.sh,將/mydata/bin聲明全局變量

#MYDATA_HOME
export MYDATA_HOME=/mydata
export PATH=$PATH:$MYDATA_HOME/bin

[root@centos101 mydata]# source /etc/profile
[root@centos101 mydata]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/mydata/jdk/jdk1.8.0_131/bin:/mydata/jdk/jdk1.8.0_131/bin:/mydata/hadoop/hadoop-3.1.3/bin:/mydata/hadoop/hadoop-3.1.3/sbin:/mydata/jdk/jdk1.8.0_131/bin:/mydata/hadoop/hadoop-3.1.3/bin:/mydata/hadoop/hadoop-3.1.3/sbin:/mydata/bin

可以看到現在已經加入成功,進入/mydata/bin,新建一個xsync腳本

[root@centos101 mydata]# cd bin/
[root@centos101 bin]# ls
[root@centos101 bin]# vim xsync
#!/bin/bash#1. 判斷參數個數
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍歷集群所有機器
for host in 192.168.27.101 192.168.27.102 192.168.27.103
doecho ====================  $host  ====================#3. 遍歷所有目錄,挨個發送for file in $@do#4. 判斷文件是否存在if [ -e $file ]then#5. 獲取父目錄pdir=$(cd -P $(dirname $file); pwd)#6. 獲取當前文件的名稱fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done

配置腳本可執行權限

chmod 777 xsync

然后就可以直接使用xsync將新增的文件同步到其他主機,比如剛剛在101上面建立的/mydata/bin

xsync bin/

如果遇到rsync未找到命令可以先安裝,同步和被同步的主機都需要安裝這個命令

yum -y install rsync

完成之后將配置環境變量的文件my_env.sh同步到其他主機

進入到my_env.sh文件所在目錄下執行命令

xsync my_env.sh

同步完成后,將剛同步的主機執行source命令即可

配置SSH免密

首先先ssh 訪問別的主機,生成.ssh隱藏文件

ssh 192.168.27.102

然后可以在/root目錄下,通過ls -al查看隱藏文件

ls -al

在這里插入圖片描述

進入.ssh,生成公鑰和私鑰,輸入命令執行三次回車即可

ssh-keygen -t rsa

可以查看公鑰

cat id_rsa.pub

將公鑰拷貝給其他主機

ssh-copy-id 192.168.27.102

這樣就可以不需要密碼訪問別的主機了(自己也可以配置一下免密訪問自己)

可以用xsync命令來測試一下,如果不需要使用密碼就可以同步文件到其他主機則設置成功

安裝Kafka

首先在官網下載Kafka

https://kafka.apache.org/downloads

然后將安裝包放入/mydata/kafka

如果需要直接拖入文件到虛擬機,可以提前執行命令下載相應組件

yum -y install lrzsz
[root@localhost kafka]# yum -y install lrzsz

解壓壓縮包

tar -zxvf kafka_2.12-3.0.0.tgz

進入解壓后的文件夾,配置kafka信息

[root@localhost kafka]# cd kafka_2.12-3.0.0
[root@localhost kafka_2.12-3.0.0]# ls
bin  config  libs  LICENSE  licenses  NOTICE  site-docs
[root@localhost kafka_2.12-3.0.0]# cd config

注意:如果發現vim:未找到命令情況

[root@localhost config]# vim server.properties 
-bash: vim: 未找到命令

顯示未找到命令,則查看有什么安裝包沒有安裝

[root@localhost config]# rpm -qa | grep vim
vim-minimal-7.4.629-7.el7.x86_64

正常情況下應該有以下安裝包

[root@localhost config]# rpm -qa | grep vim
vim-minimal-7.4.629-8.el7_9.x86_64
vim-common-7.4.629-8.el7_9.x86_64
vim-filesystem-7.4.629-8.el7_9.x86_64
vim-enhanced-7.4.629-8.el7_9.x86_64

將缺少的安裝包安裝上即可

yum -y install vim-enhanced

執行vim命令,查看server.properties

vim server.properties 

其中有幾個地方需要注意

  • broker.id=0 相當于kafka在集群中的唯一標識,不同kafka必須要不同,不能重復

  • log.dirs=/tmp/kafka-logs 日志的路徑默認是在臨時文件夾下,要進行修改,將文件放到kafka的安裝目錄中

    log.dirs=/mydata/kafka/datas
    
  • zookeeper.connect=localhost:2181 配置zookeeper的鏈接地址,后面加/kafka是為了規范管理kafka在zk中存儲的路徑

    zookeeper.connect=192.168.27.101:2181,192.168.27.102:2181,192.168.27.103:2181/kafka
    

將kafka文件夾分發到其他主機

xsync kafka/

然后修改其他主機的brokerid,依次設置為0,1,2

最后設置環境變量

vim /etc/profile.d/my_env.sh
#KAFKA_HOME
export KAFKA_HOME=/mydata/kafka/kafka_2.12-3.0.0
export PATH=$PATH:$KAFKA_HOME/bin

修改完之后執行source命令

source /etc/profile

分發到其他主機上,其他主機也需要執行source命令

xsync /etc/profile.d/my_env.sh

啟動Kafka

先啟動zk,然后在啟動Kafka,zk啟動使用之前在Zookeeper中編寫的zk.sh腳本

zk.sh start

啟動kafka,三臺主機都要執行

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

查看是否啟動成功

[root@centos101 kafka_2.12-3.0.0]# jps
1954 QuorumPeerMain
3605 Kafka
3641 Jps

為了方便集群控制,編寫腳本

#!/bin/bash
case $1 in
"start")for i in 192.168.27.101 192.168.27.102 192.168.27.103doecho "-------------啟動 $i kafka-------------"ssh $i "/mydata/kafka/kafka_2.12-3.0.0/bin/kafka-server-start.sh -daemon /mydata/kafka/kafka_2.12-3.0.0/config/server.properties"done
;;
"stop")for i in 192.168.27.101 192.168.27.102 192.168.27.103doecho "-------------停止 $i kafka-------------"ssh $i "/mydata/kafka/kafka_2.12-3.0.0/bin/kafka-server-stop.sh"done
;;
esac	

在/mydata/bin(自己配的具備環境變量的目錄,專門存放腳本文件)下新建kf.sh,寫入腳本

vim kf.sh

配置權限

chmod 777 kf.sh
[root@centos101 bin]# ll
總用量 12
-rwxrwxrwx. 1 root root 480 718 15:50 kf.sh
-rwxrwxrwx. 1 root root 766 714 15:10 xsync
-rwxrwxrwx. 1 root root 674 717 14:40 zk.sh

注意:如果要關閉時,要先關閉Kafka再關閉Zookeeper,并且要確認kafka已經完全關閉。

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

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

相關文章

【仿生機器人】建模—— 圖生3D 的幾個辦法

兩件事! 第一件: 強如 Gemini,在多模態和三維空間的理解中,如果不微調去做下游應用,直接 Zero-shot 的 效果是很差的 好處是有多視角圖生3D,效果還可以,但是也沒有很精細,&#xf…

簡約商務通用宣傳年終總結12套PPT模版分享

IOS風格企業宣傳PPT模版,年終工作總結PPT模版,簡約精致扁平化商務通用動畫PPT模版,素雅商務PPT模版 簡約商務通用宣傳年終總結12套PPT模版分享:商務通用年終總結類PPT模版https://pan.quark.cn/s/ece1e252d7df

modelscope下載gguf格式模型

modelscope下載gguf格式模型 ollama加載模型 模型地址 https://www.modelscope.cn/models/okwinds/CompassJudger-1-7B-Instruct-GGUF-V3-LOT pip install modelscope modelscope download --modelokwinds/CompassJudger-1-7B-Instruct-GGUF-V3-LOT --include "CompassJ…

關于uniapp展示PDF的解決方案

在 UniApp 的 H5 環境中使用 pdf-vue3 組件可以實現完整的 PDF 預覽功能。以下是詳細實現步驟和注意事項&#xff1a; 一、安裝依賴 安裝 pdf-vue3 和 PDF.js 核心庫&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…

解決Excel詞典(xllex.dll)文件丟失或損壞問題的終極指南:從基礎到高級修復技巧

在日常使用Microsoft Excel的過程中&#xff0c;許多用戶可能會遇到一個令人沮喪的問題&#xff1a;Excel詞典文件xllex.dll丟失或損壞。這不僅會影響到Excel的正常功能&#xff0c;還可能導致數據處理效率的降低。在這篇文章中&#xff0c;我們將深入探討這一問題的原因&#…

Linux中《基礎IO》詳細介紹

目錄 理解"文件"狹義理解廣義理解文件操作的歸類認知系統角度文件類別 回顧C文件接口打開文件寫文件讀文件稍作修改&#xff0c;實現簡單cat命令 輸出信息到顯示器&#xff0c;你有哪些方法stdin & stdout & stderr打開文件的方式 系統?件I/O?種傳遞標志位…

第11篇:數據庫中間件系統可配置化設計與動態規則加載機制

11.1 引言&#xff1a;為什么需要可配置化&#xff1f; 數據庫中間件在企業級環境中往往需要支持多租戶、多業務場景、多數據庫后端&#xff0c;因此固定邏輯會迅速過時或僵化。 為了提升 靈活性、可擴展性、部署效率&#xff0c;中間件系統亟需實現&#xff1a; ? 高度可配置…

C++信號處理程序解析與改進

這個程序演示了如何使用sigaction來捕獲和處理信號&#xff08;特別是SIGINT&#xff0c;即CtrlC&#xff09;。以下是關鍵點和潛在問題的分析&#xff1a; 程序功能 信號捕獲&#xff1a;注冊自定義處理函數handler來捕獲信號2&#xff08;SIGINT&#xff0c;通常由CtrlC觸發…

Go爬蟲開發學習記錄

Go爬蟲開發學習記錄 基礎篇&#xff1a;使用net/http庫 Go的標準庫net/http提供了完善的HTTP客戶端功能&#xff0c;是構建爬蟲的基石&#xff1a; package mainimport ("fmt""io""net/http" )func fetchPage(url string) string {// 創建自定…

ubuntu 系統分區注意事項

ubuntu 系統分區大小&#xff0c;注意事項&#xff1a; 安裝ubuntu系統時&#xff0c;需要進行分區&#xff0c;手動分區時&#xff0c;有一點需要注意。一開始我也沒有注意&#xff0c;長時間使用后才發現的問題。 需要注意一點&#xff0c;如果不對 /usr 進行單獨分區&…

AI知識庫調用全攻略:四種實戰方法與技術實現

本文詳細解析AI如何調用知識庫解決實際問題&#xff0c;涵蓋四種核心調用方式&#xff08;直接檢索匹配、向量檢索生成、工具調用知識庫、多輪對話知識庫&#xff09;&#xff0c;附具體業務樣例與技術實現步驟&#xff0c;最后總結常見問題解決方案&#xff0c;助你快速搭建智…

WebRTC(一):整體架構

架構總覽 模塊劃分 媒體采集模塊 使用瀏覽器 API&#xff1a;getUserMedia()。采集攝像頭&#xff08;video&#xff09;、麥克風&#xff08;audio&#xff09;。通過 MediaStreamTrack 管理單軌道。 媒體處理與編解碼 編碼器&#xff08;發送端&#xff09;&#xff1a; …

商品中心—1.B端建品和C端緩存的技術文檔二

大綱 1.商品中心的專業術語 2.商品中心的基本業務系統 3.商品中心整體架構設計以及運行流程 4.商品B端—商品編碼生成邏輯 5.商品B端—商品核心數據模型 6.商品B端—轉換建品請求數據為商品模型數據 7.商品B端—商品建品時商品編號補全與審核配置 8.商品B端—商品審核前…

網絡之交換機

定義與作用 交換機是一種為所連接的IT設備提供網絡通信的設備&#xff0c;主要作用是轉發傳輸數據&#xff0c;實現網絡設備之間的通信互聯&#xff0c;還能對網絡進行分段和隔離&#xff0c;劃分多個虛擬網段&#xff0c;提高網絡安全性&#xff0c;以及對不同端口、用戶和應用…

AI不會殺死創作,但會殺死平庸

作為一個敲了8年Java代碼的普通本科程序員&#xff0c;日常主要泡在會議后臺管理系統的開發里。從2023年底被朋友拽著試了第一把AI工具到現在&#xff0c;電腦手機上的AI軟件比外賣App還多——寫代碼的Copilot、畫時序圖的工具、聊天的ChatGPT、Deepseek&#xff0c;基本市面上…

Golang——8、協程和管道

協程和管道 1、協程1.1、進程、線程和協程1.2、goroutine的使用以及sync.WaitGroup1.3、啟動多個協程1.4、設置Golang并行運行的時候占用的cup數量1.5、goroutine統計素數 2、管道2.1、管道的操作2.2、協程和管道協同2.3、單向管道2.4、多路復用之select2.5、解決協程中出現的異…

深入理解Python內置模塊及第三方庫的使用與管理

Python 內置模塊與第三方庫 在 Python 編程中&#xff0c;模塊和庫是幫助開發者高效實現各種功能的基礎工具。Python 提供了豐富的內置模塊以及第三方庫&#xff0c;能夠支持從基礎的文件操作到復雜的數據分析和機器學習等任務。本篇文章將深入介紹 Python 的內置模塊與第三方…

二分查找-P2249 【深基13.例1】查找

文章目錄 參考代碼二分標準模板 題目來源-洛谷網 參考代碼 #include<bits/stdc.h> using namespace std; const int N 1e65; int m,n,a[N],b; int find(int t) {int l1,rn;while(l<r){int mid(lr)/2;//防止溢出 mid l (r-l) /2 ;if(a[mid]>t) rmid;//中間值比…

手寫muduo網絡庫(一):項目構建和時間戳、日志庫

引言 本文作為手寫 muduo 網絡庫系列開篇&#xff0c;聚焦項目基礎框架搭建與核心基礎工具模塊設計。通過解析 CMake 工程結構設計、目錄規劃原則&#xff0c;結合時間戳與日志系統的架構&#xff0c;為后續網絡庫開發奠定工程化基礎。文中附完整 CMake 配置示例及模塊代碼。 …

NLP學習路線圖(三十二): 模型壓縮與優化

一、 核心壓縮與優化技術詳解 1. 知識蒸餾:智慧的傳承(Knowledge Distillation, KD) 核心思想:“師授徒業”。訓練一個龐大、高性能但笨重的“教師模型”(Teacher Model),讓其指導訓練一個輕量級的“學生模型”(Student Model)。學生模型學習模仿教師模型的輸出行為(…