kafka和storm集群的環境安裝

来源:https://www.cnblogs.com/xuwujing/archive/2018/01/26/8361629.html
-Advertisement-
Play Games

前言 storm和kafka集群安裝是沒有必然聯繫的,我將這兩個寫在一起,是因為他們都是由zookeeper進行管理的,也都依賴於JDK的環境,為了不重覆再寫一遍配置,所以我將這兩個寫在一起。若只需一個,只需挑選自己選擇的閱讀即可。 這兩者的依賴如下: Storm集群 :JDK1.8 , Zooke ...


前言

storm和kafka集群安裝是沒有必然聯繫的,我將這兩個寫在一起,是因為他們都是由zookeeper進行管理的,也都依賴於JDK的環境,為了不重覆再寫一遍配置,所以我將這兩個寫在一起。若只需一個,只需挑選自己選擇的閱讀即可。

這兩者的依賴如下:

  • Storm集群:JDK1.8 , Zookeeper3.4,Storm1.1.1;
  • Kafa集群 : JDK1.8 ,Zookeeper3.4 ,Kafka2.12;

說明: Storm1.0 和Kafka2.0對JDK要求是1.7以上,Zookeeper3.0以上。

下載地址:
Zookeeper:https://zookeeper.apache.org/releases.html#download
Storm: http://storm.apache.org/downloads.html
Kafka: http://kafka.apache.org/downloads

JDK安裝

每台機器都要安裝JDK!!!
說明: 一般CentOS自帶了openjdk,但是我們這裡使用的是oracle的JDK。所以要寫卸載openjdk,然後再安裝在oracle下載好的JDK。如果已經卸載,可以跳過此步驟。
首先輸入 java -version
查看是否安裝了JDK,如果安裝了,但版本不適合的話,就卸載
這裡寫圖片描述

輸入
rpm -qa | grep java
查看信息
這裡寫圖片描述
然後輸入:
rpm -e --nodeps “你要卸載JDK的信息”
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
這裡寫圖片描述

確認沒有了之後,解壓下載下來的JDK

tar  -xvf   jdk-8u144-linux-x64.tar.gz

移動到opt/java文件夾中,沒有就新建,然後將文件夾重命名為jdk1.8。

mv  jdk1.8.0_144 /opt/java
mv  jdk1.8.0_144  jdk1.8

然後編輯 profile 文件,添加如下配置
輸入:

vim /etc/profile

添加:

export JAVA_HOME=/opt/java/jdk1.8
export JRE_HOME=/opt/java/jdk1.8/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

添加成功之後,輸入

source /etc/profile
java  -version 

查看是否配置成功

Zookeeper 環境安裝

1,文件準備

將下載下來的Zookeeper 的配置文件進行解壓
在linux上輸入:

 tar  -xvf   zookeeper-3.4.10.tar.gz

然後移動到/opt/zookeeper裡面,沒有就新建,然後將文件夾重命名為zookeeper3.4
輸入

mv  zookeeper-3.4.10  /opt/zookeeper
mv  zookeeper-3.4.10  zookeeper3.4

2,環境配置

編輯 /etc/profile 文件
輸入:

export  ZK_HOME=/opt/zookeeper/zookeeper3.4 
export PATH=.:${JAVA_HOME}/bin:${ZK_HOME}/bin:$PATH

輸入:

source  /etc/profile

使配置生效

3,修改配置文件

3.3.1 創建文件和目錄

在集群的伺服器上都創建這些目錄

mkdir   /opt/zookeeper/data  
mkdir   /opt/zookeeper/dataLog

並且在/opt/zookeeper/data目錄下創建myid文件
輸入:

touch  myid

創建成功之後,更改myid文件。
我這邊為了方便,將master、slave1、slave2的myid文件內容改為1,2,3
這裡寫圖片描述

3.3.2 新建zoo.cfg

切換到/opt/zookeeper/zookeeper3.4/conf 目錄下
如果沒有 zoo.cfg 該文件,就複製zoo_sample.cfg文件並重命名為zoo.cfg。
修改這個新建的zoo.cfg文件

dataDir=/opt/zookeeper/data
dataLogDir=/opt/zookeeper/dataLog
server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888

這裡寫圖片描述

說明:client port,顧名思義,就是客戶端連接zookeeper服務的埠。這是一個TCP port。dataLogDir里是放到的順序日誌(WAL)。而dataDir里放的是記憶體數據結構的snapshot,便於快速恢復。為了達到性能最大化,一般建議把dataDir和dataLogDir分到不同的磁碟上,這樣就可以充分利用磁碟順序寫的特性。dataDir和dataLogDir需要自己創建,目錄可以自己制定,對應即可。server.1中的這個1需要和master這個機器上的dataDir目錄中的myid文件中的數值對應。server.2中的這個2需要和slave1這個機器上的dataDir目錄中的myid文件中的數值對應。server.3中的這個3需要和slave2這個機器上的dataDir目錄中的myid文件中的數值對應。當然,數值你可以隨便用,只要對應即可。2888和3888的埠號也可以隨便用,因為在不同機器上,用成一樣也無所謂。
1.tickTime:CS通信心跳數
Zookeeper 伺服器之間或客戶端與伺服器之間維持心跳的時間間隔,也就是每個 tickTime 時間就會發送一個心跳。tickTime以毫秒為單位。
tickTime=2000
2.initLimit:LF初始通信時限
集群中的follower伺服器(F)與leader伺服器(L)之間初始連接時能容忍的最多心跳數(tickTime的數量)。
initLimit=10
3.syncLimit:LF同步通信時限
集群中的follower伺服器與leader伺服器之間請求和應答之間能容忍的最多心跳數(tickTime的數量)。
syncLimit=5

依舊將zookeeper傳輸到其他的機器上,記得更改 /opt/zookeeper/data 下的myid,這個不能一致。
輸入:

scp -r /opt/zookeeper root@slave1:/opt
scp -r /opt/zookeeper root@slave2:/opt

4,啟動zookeeper

因為zookeeper是選舉制,它的主從關係並不是像hadoop那樣指定的,具體可以看官方的文檔說明。
成功配置zookeeper之後,在每台機器上啟動zookeeper。
切換到zookeeper目錄下

cd /opt/zookeeper/zookeeper3.4/bin

輸入:

zkServer.sh start

成功啟動之後
查看狀態輸入:

 zkServer.sh status

可以查看各個機器上zookeeper的leader和follower
這裡寫圖片描述

Storm 環境安裝

1,文件準備

將下載下來的storm的配置文件進行解壓
在linux上輸入:

 tar  -xvf   apache-storm-1.1.1.tar.gz

然後移動到/opt/storm裡面,沒有就新建,然後將文件夾重命名為storm1.1
輸入

mv  apache-storm-1.1.1  /opt/storm
 mv  apache-storm-1.1.1  storm1.1

2,環境配置

編輯 /etc/profile 文件
添加:

export STORM_HOME=/opt/storm/storm1.1
export PATH=.:${JAVA_HOME}/bin:${ZK_HOME}/bin:${STORM_HOME}/bin:$PATH   

輸入 storm version 查看版本信息
這裡寫圖片描述

3,修改配置文件

編輯 storm/conf 的 storm.yarm。

進行如下編輯:
輸入:
vim storm.yarm

storm.zookeeper.servers:
     - "master"
     - "slave1"
     - "slave2"

storm.local.dir: "/root/storm"

nimbus.seeds: ["master"]

supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703

這裡寫圖片描述
說明:

  1. storm.zookeeper.servers是指定zookeeper的服務地址。
    因為storm的存儲信息在zookeeper上,所以要配置zookeeper的服務地址。如果zookeeper是單機就只用指定一個!
  2. storm.local.dir 表示存儲目錄。
    Nimbus和Supervisor守護進程需要在本地磁碟上存儲一個目錄來存儲少量的狀態(比如jar,confs等等)。可以在每台機器創建,並給於許可權。
    3.nimbus.seeds 表示候選的主機。
    worker需要知道那一臺機器是主機候選(zookeeper集群是選舉制),從而可以下載 topology jars 和confs。
    4.supervisor.slots.ports 表示worker 埠。
    對於每一個supervisor機器,我們可以通過這項來配置運行多少worker在這台機器上。每一個worker使用一個單獨的port來接受消息,這個埠同樣定義了那些埠是開放使用的。如果你在這裡定義了5個埠,就意味著這個supervisor節點上最多可以運行5個worker。如果定義3個埠,則意味著最多可以運行3個worker。在預設情況下(即配置在defaults.yaml中),會有有四個workers運行在 6700, 6701, 6702, and 6703埠。
    supervisor並不會在啟動時就立即啟動這四個worker。而是接受到分配的任務時,才會啟動,具體啟動幾個worker也要根據我們Topology在這個supervisor需要幾個worker來確定。如果指定Topology只會由一個worker執行,那麼supervisor就啟動一個worker,並不會啟動所有。

: 這些配置前面不要有空格!!!,不然會報錯。 這裡使用的是主機名(做了映射),也可以使用IP。實際的以自己的為準。

可以使用scp命令或者ftp軟體將storm複製到其他機器上
這裡寫圖片描述

成功配置之後,然後就可以啟動Storm了,不過要確保JDK、Zookeeper已經正確安裝,並且Zookeeper已經成功啟動。

4,啟動Storm

切換到 storm/bin 目錄下
在主節點(master)啟動輸入:

storm nimbus >/dev/null 2>&1 &

訪問web界面(master)輸入:

storm ui 

從節點(slave1,slave2)輸入:

storm supervisor >/dev/null 2>&1 &

在瀏覽器界面輸入: 8080埠
成功打開該界面,表示環境配置成功:
這裡寫圖片描述

kafka的環境安裝

1,文件準備

將下載下來的Kafka的配置文件進行解壓
在linux上輸入:

 tar  -xvf   kafka_2.12-1.0.0.tgz

然後移動到/opt/kafka裡面,沒有就新建,然後將文件夾重命名為kafka2.12
輸入

mv  kafka_2.12-1.0.0  /opt/kafka
 mv  kafka_2.12-1.0.0  kafka2.12

2,環境配置

編輯 /etc/profile 文件
輸入:

export  KAFKA_HOME=/opt/kafka/kafka2.12 
export PATH=.:${JAVA_HOME}/bin:${KAFKA_HOME}/bin:${ZK_HOME}/bin:$PATH

輸入:

source  /etc/profile

使配置生效

3,修改配置文件

:其實要說的話,如果是單機的話,kafka的配置文件可以不用修改,直接到bin目錄下啟動就可以了。但是我們這裡是集群,所以稍微改下就可以了。

切換到kafka/config 目錄下
編輯server.properties 文件
需要更改的是Zookeeper的地址:
找到Zookeeper的配置,指定Zookeeper集群的地址,設置如下修改就可以了

zookeeper.connect=master:2181,slave1:2181,slave2:2181
zookeeper.connection.timeout.ms=6000

其它可以選擇更改的有

1 ,num.partitions 表示指定的分區,預設為1
2,log.dirs kafka的日誌路徑,這個按照個人需求更改就行
...
:還有其它的配置,可以查看官方文檔,如果沒有特別要求,使用預設的就可以了。

配置好之後,記得使用scp 命令傳輸到其它的集群上!

4,啟動kafka

集群每台集群都需要操作!

切換到kafka/bin 目錄下
輸入:

kafka-server-start.sh

然後輸入jps名稱查看是否成功啟動:
這裡寫圖片描述

成功啟動之後,可以進行簡單的測試下
首先創建個topic
輸入:

kafka-topics.sh --zookeeper master:2181 --create --topic t_test --partitions 5  --replication-factor 2

說明: 這裡是創建了一個名為 t_test 的topic,並且指定了5個分區,每個分區指定了2個副本數。如果不指定分區,預設的分區就是配置文件配置的。

然後進行生產數據
輸入:

kafka-console-producer.sh --broker-list master:9092 --topic t_test

這裡寫圖片描述

可以使用進行Ctrl+D 退出

然後我們再打開一個xshell視窗
進行消費
輸入:

kafka-console-consumer.sh  --zookeeper master:2181  --topic t_test --from-beginning

這裡寫圖片描述
可以使用進行Ctrl+C 退出

可以看到數據已經正常消費了。

5,kafka的一些常用命令

1.啟動和關閉kafka

bin/kafka-server-start.sh config/server.properties >>/dev/null 2>&1 &
bin/kafka-server-stop.sh

2.查看kafka集群中的消息隊列和具體隊列
查看集群所有的topic

 kafka-topics.sh --zookeeper master:2181,slave1:2181,slave2:2181 --list

查看一個topic的信息

 kafka-topics.sh --zookeeper master:2181 --describe --topic t_test  

3.創建Topic

kafka-topics.sh --zookeeper master:2181 --create --topic t_test --partitions 5  --replication-factor 2

4.生產數據和消費數據

kafka-console-producer.sh --broker-list master:9092 --topic t_test

Ctrl+D 退出

kafka-console-consumer.sh  --zookeeper master:2181  --topic t_test --from-beginning

Ctrl+C 退出

5.kafka的刪除命令

kafka-topics.sh --delete --zookeeper master:2181 --topic t_test

6,添加分區

kafka-topics.sh --alter --topict_test --zookeeper master:2181 --partitions 10

其它

Storm環境搭建參考官方文檔:
http://storm.apache.org/releases/1.1.1/Setting-up-a-Storm-cluster.html

Kafka環境搭建參考官方文檔:
http://kafka.apache.org/quickstart

到此,本文結束,謝謝閱讀!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • ...
  • 數組檢索函數 格式:array array_keys(array arr[, mixed searchValue]);以數組的形式返回arr數組中的“鍵名”,如果指定了可選參數searchValue,則只返回searchValue值的鍵名,否則arr數組中的所有鍵名都會被返回。 註意:若search ...
  • 複習默寫猜數字小代碼,出現的問題。 While語句下的條件。應為result==false和answer=input()時。如果answer=input()寫在while的外邊,就會像昨天那樣一直輸出too small。 還有就是if語句,語法錯誤,百度了一下,看起來縮進了,其實是並沒有縮進。 1、 ...
  • 1.org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.mybatis.spring.mapper.MapperScannerConfigurer#0' defined ...
  • 作者:[email protected]本文為作者原創,轉載請註明出處:https://www.cnblogs.com/oucbl/p/5940556.html 今天學習SSM框架整合,完成Spring和mybatis這兩大框架的整合做測試時候出來很多問題,主要來自於配置文件。 我這裡重點說一下Mysql數據 ...
  • 最基本命令 查看埠號:netstar -aon 殺死進程:tskill PID PHP基礎 查看埠號:netstar -aon 殺死進程:tskill PID PHP基礎 PHP程式的數據採集(獲取數據) $_GET["要獲取的名稱"]; PHP數據的輸出 echo或print:輸出的是沒有經過 ...
  • 用Struts和Hibernate完成簡單的查詢資料庫,顯示類別信息的簡單案例 ...
  • C++的四種類型轉換:static_cast、dynamic_cast、const_cast、reinterpret_cast;typedef與類型別名,作用域和一些偶爾會看到的C風格工具。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...