前言
在開始之前,需要說明下,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
- 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,如果安裝了,但版本不適合的話,就卸載
輸入
1
|
rpm -qa | grep java |
查看信息
然后輸入:
1
|
rpm -e --nodeps “你要卸載jdk的信息” |
如: rpm -e --nodeps java-1.7.0-openjdk-1.7.0.99-2.6.5.1.el6.x86_64
確認沒有了之后,解壓下載下來的jdk
1
|
tar -xvf jdk-8u144-linux-x64.tar.gz |
移動到opt/java文件夾中,沒有就新建,然后將文件夾重命名為jdk1.8。
1
2
|
mv jdk1. 8 .0_144 /opt/java mv jdk1. 8 .0_144 jdk1. 8 |
然后編輯 profile 文件,添加如下配置
輸入:
1
|
vim /etc/profile |
添加:
1
2
3
4
|
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 |
添加成功之后,輸入
1
2
|
source /etc/profile java -version |
查看是否配置成功
zookeeper 環境安裝
1,文件準備
將下載下來的zookeeper 的配置文件進行解壓
在linux上輸入:
1
|
tar -xvf zookeeper- 3.4 . 10 .tar.gz |
然后移動到/opt/zookeeper里面,沒有就新建,然后將文件夾重命名為zookeeper3.4
輸入
1
2
|
mv zookeeper- 3.4 . 10 /opt/zookeeper mv zookeeper- 3.4 . 10 zookeeper3. 4 |
2,環境配置
編輯 /etc/profile 文件
輸入:
1
2
|
export zk_home=/opt/zookeeper/zookeeper3. 4 export path=.:${java_home}/bin:${zk_home}/bin:$path |
輸入:
1
|
source /etc/profile |
使配置生效
3,修改配置文件
3.3.1 創建文件和目錄
在集群的服務器上都創建這些目錄
1
2
|
mkdir /opt/zookeeper/data mkdir /opt/zookeeper/datalog |
并且在/opt/zookeeper/data目錄下創建myid文件
輸入:
1
|
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文件
1
2
3
4
5
|
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,這個不能一致。
輸入:
1
2
|
scp -r /opt/zookeeper root @slave1 :/opt scp -r /opt/zookeeper root @slave2 :/opt |
4、啟動zookeeper
因為zookeeper是選舉制,它的主從關系并不是像hadoop那樣指定的,具體可以看官方的文檔說明。
成功配置zookeeper之后,在每臺機器上啟動zookeeper。
切換到zookeeper目錄下
1
|
cd /opt/zookeeper/zookeeper3. 4 /bin |
輸入:
1
|
zkserver.sh start |
成功啟動之后
查看狀態輸入:
1
|
zkserver.sh status |
可以查看各個機器上zookeeper的leader和follower
storm 環境安裝
1,文件準備
將下載下來的storm的配置文件進行解壓
在linux上輸入:
1
|
tar -xvf apache-storm- 1.1 . 1 .tar.gz |
然后移動到/opt/storm里面,沒有就新建,然后將文件夾重命名為storm1.1
輸入
1
2
|
mv apache-storm- 1.1 . 1 /opt/storm mv apache-storm- 1.1 . 1 storm1. 1 |
編輯 /etc/profile 文件
添加:
1
2
|
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
1
2
3
4
5
6
7
8
9
10
11
|
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)啟動輸入:
1
|
storm nimbus >/dev/ null 2 >& 1 & |
訪問web界面(master)輸入:
1
|
storm ui |
從節點(slave1,slave2)輸入:
1
|
storm supervisor >/dev/ null 2 >& 1 & |
在瀏覽器界面輸入: 8080端口
成功打開該界面,表示環境配置成功:
kafka的環境安裝
kafka是一個高吞吐量的流式分布式消息系統,用來處理活動流數據,比如網頁的訪問量pm,日志等,既能夠實時處理大數據信息也能離線處理。
1,文件準備
將下載下來的kafka的配置文件進行解壓
在linux上輸入:
1
|
tar -xvf kafka_2. 12 - 1.0 . 0 .tgz |
然后移動到/opt/kafka里面,沒有就新建,然后將文件夾重命名為kafka2.12
輸入
1
2
|
mv kafka_2. 12 - 1.0 . 0 /opt/kafka mv kafka_2. 12 - 1.0 . 0 kafka2. 12 |
2,環境配置
編輯 /etc/profile 文件
輸入:
1
2
|
export kafka_home=/opt/kafka/kafka2. 12 export path=.:${java_home}/bin:${kafka_home}/bin:${zk_home}/bin:$path |
輸入:
1
|
source /etc/profile |
使配置生效
3,修改配置文件
注:其實要說的話,如果是單機的話,kafka的配置文件可以不用修改,直接到bin目錄下啟動就可以了。但是我們這里是集群,所以稍微改下就可以了。
切換到kafka/config 目錄下
編輯server.properties 文件
需要更改的是zookeeper的地址:
找到zookeeper的配置,指定zookeeper集群的地址,設置如下修改就可以了
1
2
|
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 目錄下
輸入:
1
|
kafka-server-start.sh |
然后輸入jps名稱查看是否成功啟動:
成功啟動之后,可以進行簡單的測試下
首先創建個topic
輸入:
1
|
kafka-topics.sh --zookeeper master: 2181 --create --topic t_test --partitions 5 --replication-factor 2 |
說明: 這里是創建了一個名為 t_test 的topic,并且指定了5個分區,每個分區指定了2個副本數。如果不指定分區,默認的分區就是配置文件配置的。
然后進行生產數據
輸入:
1
|
kafka-console-producer.sh --broker-list master: 9092 --topic t_test |
可以使用進行ctrl+d 退出
然后我們再打開一個xshell窗口
進行消費
輸入:
1
|
kafka-console-consumer.sh --zookeeper master: 2181 --topic t_test --from-beginning |
可以使用進行ctrl+c 退出
可以看到數據已經正常消費了。
5,kafka的一些常用命令
1.啟動和關閉kafka
1
2
|
bin/kafka-server-start.sh config/server.properties >>/dev/ null 2 >& 1 & bin/kafka-server-stop.sh |
2.查看kafka集群中的消息隊列和具體隊列
查看集群所有的topic
1
|
kafka-topics.sh --zookeeper master: 2181 ,slave1: 2181 ,slave2: 2181 --list |
查看一個topic的信息
1
|
kafka-topics.sh --zookeeper master: 2181 --describe --topic t_test |
3.創建topic
1
|
kafka-topics.sh --zookeeper master: 2181 --create --topic t_test --partitions 5 --replication-factor 2 |
4.生產數據和消費數據
1
|
kafka-console-producer.sh --broker-list master: 9092 --topic t_test |
ctrl+d 退出
1
|
kafka-console-consumer.sh --zookeeper master: 2181 --topic t_test --from-beginning |
ctrl+c 退出
5.kafka的刪除命令
1
|
kafka-topics.sh --delete --zookeeper master: 2181 --topic t_test |
6,添加分區
1
|
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
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對服務器之家的支持。
原文鏈接:http://www.cnblogs.com/xuwujing/p/8361629.html