zookeeper+hadoop+hbase+kafka+storm集羣搭建

本文記錄zookeeper+hadoop+hbase+kafka+storm集羣的搭建過程。


準備工作

  1. 硬件環境
    3臺物理主機
    192.168.0.191 – dc01
    192.168.0.192 – dc02
    192.168.0.193 – dc03
    系統全部爲centos6.8.

  2. 軟件環境
    1) jdk1.8.0_121
    2) zookeeper-3.4.10
    3) hadoop-2.6.5
    4) hbase-1.2.6
    5) kafka_2.11-0.10.2.0
    6) apache-storm-1.1.0

    jdk的安裝在此不做贅述,有疑問可自行百度。

  3. 設置主機名
    三臺機器都需設置,後面所有操作都通過主機名連接。

    vim /etc/sysconfig/network

    ip爲192.168.0.191的機器修改爲如下內容:

    NETWORKING=yes
    HOSTNAME=dc01

    其他兩臺機器分別設置爲dc02和dc03。

  4. 修改host文件

    vim /etc/hosts

    在末尾追加如下內容:

    192.168.0.191   dc01
    192.168.0.192   dc02
    192.168.0.193   dc03

    三臺機器做相同操作。

  5. 設置ssh免密碼登錄
    以dc01爲例,執行以下命令

    ssh-keygen -t rsa
    
    # 連續三次回車,即在本地生成了公鑰和私鑰,不設置密碼
    
    ssh-copy-id root@dc01
    
    # 按提示輸入dc01的密碼
    
    ssh-copy-id root@dc02
    
    # 按提示輸入dc02的密碼
    
    ssh-copy-id root@dc03
    
    # 按提示輸入dc03的密碼
    

    如果端口不是默認的22則參照此處設置。
    dc02和dc03重複dc01的操作,設置完成後任意兩臺機器之間不需要密碼可直接登錄,例如從dc01登錄到dc03,只需在dc01輸入”ssh dc03”即可。

開始安裝

所有軟件安裝目錄爲/usr/local/

安裝zookeeper

下載zookeeper安裝文件zookeeper-3.4.10.tar.gz到/usr/local/下
執行以下命令:

#解壓文件
tar -zxvf zookeeper-3.4.10.tar.gz
#修改文件夾名稱
mv zookeeper-3.4.10 zookeeper
cd zookeeper/
#zookeeper配置文件名爲zoo.cfg
cp conf/zoo_sample.cfg conf/zoo.cfg

編輯zoo.cfg

vim conf/zoo.cfg

修改後文件內容如下(主要添加最後三行):

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/usr/local/zookeeper/data
dataLogDir=/usr/local/zookeeper/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=dc01:2888:3888
server.2=dc02:2888:3888
server.3=dc03:2888:3888

在zookeeper下新建data目錄

mkdir data

新增myid文件,該文件內容與zoo.cfg最後三行內容有關,server.x=host:port1:port2,myid中寫入的就是x對應的值,不同主機文件內容不同。

echo '1' > data/myid

使用scp命令將dc01上已配置好的zookeeper文件複製到其他兩臺機器

scp -r /usr/local/zookeeper root@dc02:/usr/local/zookeeper
scp -r /usr/local/zookeeper root@dc03:/usr/local/zookeeper

操作完成後將dc02上的myid文件內容改爲2,dc03中的myid內容改爲3。

啓動zookeeper

$zookeeper_home/bin/zkServer.sh start

三個節點做同樣操作,啓動完成後可使用”zkServer.sh status”查看運行狀態。
還有一個地方需要修改,默認情況下啓動zookeeper後會在當前路徑下生成一個zookeeper.out的日誌文件,如果我們需要指定輸出到固定路徑,那麼可以修改bin下的zkEnv.sh文件,找到ZOO_LOG_DIR並修改爲指定路徑即可。

安裝hadoop

hbase基於hdfs存儲,所以安裝hbase前必須先安裝hadoop,不同版本hbase對應的hadoop版本不同,安裝前請確認兼容性。
下面開始安裝:
在/usr/local/下新建hadoop目錄,hadoop下再創建hdfs目錄。

cd /usr/local/
mkdir -p hadoop/hdfs

下載hadoop安裝文件hadoop-2.6.5.tar.gz,放入hadoop目錄下

tar -zxvf hadoop-2.6.5.tar.gz

修改配置文件

cd hadoop-2.6.5/etc/hadoop/

需要修改的配置文件有四個,hadoop-env.sh、core-site.xml、hdfs-site.xml、slaves,因爲暫時不使用map-reduce所以不用配置yarn相關文件。

1、修改hadoop-env.sh

vim hadoop-env.sh

修改JAVA_HOME爲jdk安裝路徑(如果沒有則添加一行)

export JAVA_HOME=/usr/local/java/jdk1.8.0_121
# 如果機器端口不是默認的22,還需要添加下面這一行指定端口號
# export HADOOP_SSH_OPTS="-p 1122"
# 1122爲端口號,如果不添加執行./sbin/start-dfs.sh時會報如下錯誤:
# ssh: connect to host .. port 22: Connection refused

2、修改 core-site.xml

vim core-site.xml

修改後內容如下:

<configuration>
<property>
    <name>fs.default.name</name>
    <value>hdfs://dc01:9000</value>
    <description>HDFS的URI,文件系統://namenode標識:端口號</description>
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop/tmp</value>
    <description>namenode上本地的hadoop臨時文件夾,目錄無需預先創建,會自動創建</description>
</property>
</configuration>

3、修改hdfs-site.xml

vim hdfs-site.xml

修改後內容如下:

<configuration>
<property>
    <name>dfs.name.dir</name>
    <value>/usr/local/hadoop/hdfs/name</value>
    <description>namenode上存儲hdfs名字空間元數據,目錄無需預先創建,會自動創建 </description>
</property>

<property>
    <name>dfs.data.dir</name>
    <value>/usr/local/hadoop/hdfs/data</value>
    <description>datanode上數據塊的物理存儲位置,目錄無需預先創建,會自動創建</description>
</property>

<property>
    <name>dfs.replication</name>
    <value>2</value>
    <description>副本個數,配置默認是3,應小於datanode機器數量</description>
</property>
</configuration>

4、修改slaves

vim slaves

將原來的localhost改成如下內容:

dc02
dc03

修改完成後將安裝目錄copy到其他兩臺機器上:

scp -r /usr/local/hadoop root@dc02:/usr/local/hadoop
scp -r /usr/local/hadoop root@dc03:/usr/local/hadoop

啓動集羣(只需在dc01操作)
第一次啓動時需要先格式化,以後無需進行此操作。

cd /usr/local/hadoop/hadoop-2.6.5
#格式化
./bin/hdfs namenode -format
#啓動集羣
./sbin/start-dfs.sh

啓動成功後可使用jps命令查看,dc01有NameNode和SecondaryNameNode進程,dc02和dc03有DataNode進程則集羣啓動成功。

安裝hbase

集羣機器劃分:dc01作爲NameNode節點,dc02和dc03作爲DataNode節點。
下載hbase安裝文件並放入/usr/local/目錄下
1、解壓並修改文件夾名稱:

tar -zxvf hbase-1.2.6-bin.tar.gz
mv hbase-1.2.6 hbase

2、修改配置文件,配置hbase集羣需要修改三個配置文件,分別爲hbase-env.sh、hbase-site.xml、regionservers。

cd hbase/conf/

1)修改hbase-env.sh

vim hbase-env.sh

需要修改兩行內容
修改JAVA_HOME的值爲jdk的安裝目錄,修改後如下:

export JAVA_HOME=/usr/local/java/jdk1.8.0_121

修改HBASE_MANAGES_ZK,該行默認被註釋掉了,默認使用hbase自帶的zookeeper協調集羣,我們需要把註釋去掉並修改值爲false,表示使用自己安裝的zookeeper。修改如下:

export HBASE_MANAGES_ZK=false

2)修改hbase-site.xml

vim hbase-site.xml

在 中添加如下內容:

<property>
    <name>hbase.rootdir</name>
    <!-- 數據存儲位置,需要和hadoop配置文件core-site.xml中的fs.default.name值一致 -->
    <value>hdfs://dc01:9000/hbase</value>
</property>
<property>
    <!-- 設置是否分佈式環境,false表示單機,默認爲false -->
    <name>hbase.cluster.distributed</name>
    <value>true</value>
</property>
<property>
    <name>hbase.zookeeper.quorum</name>
    <!-- 此處配置主機名 -->
    <value>dc01,dc02,dc03</value>
</property>
<property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/usr/local/hbase/data/zookeeper</value>
</property>

3)修改regionservers

vim regionservers

該文件配置數據存儲在哪個節點,即DataNode節點的位置。默認爲localhost,表示數據存儲在本機,需要修改爲兩個DataNode節點的主機名,修改後內容如下:

dc02
dc03

上述操作完成後使用scp命令將hbase所有文件複製到dc02和dc03。

scp -r /usr/local/hbase root@dc02:/usr/local/hbase
scp -r /usr/local/hbase root@dc03:/usr/local/hbase

3、啓動hbase

#啓動
./bin/start-hbase.sh

啓動完成後可通過jps命令查看,dc01有HMaster進程,dc02和dc03有HRegionServer進程則表示集羣啓動成功。如果任一節點沒有對應的進程則表示集羣啓動失敗,可查看日誌查找失敗原因。此處需要注意一點,三臺機器的系統時間相差不能太大,否則會出現啓動失敗的情況,同步系統時間後重試即可。
4、連接hbase
hbase提供了shell操作接口,使用一些命令連接hbase

./bin/hbase shell

連接後可通過相應的shell命令操作hbase,hbase的操作此處不做討論,請自行google。
hbase還可以通過第三方插件apache-phoenix進行連接,該插件支持以sql的方式操作hbase。下載和hbase版本對應的phoenix安裝包,解壓後將phoenix-[phoenix版本]-HBase-[hbase版本]-server.jar(本例中使用的爲phoenix-4.10.0-HBase-1.2-server.jar)複製到hbase的lib目錄下重啓hbase即可(每個節點都需要進行此操作),phoenix操作方法請自行搜索資料學習。

安裝kafka

下載kafka安裝文件並放入/usr/local/目錄下,解壓

tar -zxvf kafka_2.11-0.10.2.0.tgz
mv kafka_2.11-0.10.2.0 kafka

kafka的配置比較簡單,只需修改config/下的server.properties文件即可,需要修改三處位置。

vim ./config/server.properties

1)修改broker.id
該值在各個節點中不能重複,推薦使用機器ip地址最後一位,如dc01上該值爲1,dc02上爲2,dc03上爲3。
2)修改log.dirs
該值表示日誌文件存儲位置,默認爲/tmp/kafka-logs,使用該配置時機器重啓後文件會被清空,需要修改爲其他位置,建議修改爲:

log.dirs=/usr/local/kafka/kafka-logs

3)修改zookeeper.connect
這一項比較重要,表示kafka數據在zookeeper中的存儲位置,以後連接kafka時會使用該值。本例中修改爲:

zookeeper.connect=dc01:2181,dc02:2181,dc03:2181/kafka

4)配置topic是否可刪除,默認該項是被註釋的,如需要支持topic刪除請放開該註釋

delete.topic.enable=true

5)配置是否自動創建topic,默認情況下Producer往一個不存在的Topic發送message時會自動創建這個Topic

auto.create.topics.enable=false

注:修改完成後將整個kafka目錄複製到dc02和dc03中即完成集羣配置(不要忘記修改broker.id,不同機器不能重複)。

啓動kafka

nohup ./bin/kafka-server-start.sh ./config/server.properties &

停止kafka

./bin/kafka-server-stop.sh &

注:kafka的啓動和停止需要分別在每個節點操作。

安裝storm

下載storm安裝文件放入/usr/local/目錄,解壓

tar -zxvf apache-storm-1.1.0.tar.gz
mv apache-storm-1.1.0 storm

storm配置比較簡單,只需修改storm.yaml

cd storm/conf/
vim storm.yaml

添加以下內容:

# 注意:嚴格遵守ymal格式,相同層級關係必須左對齊
 storm.zookeeper.servers:
     - "dc01"
     - "dc02"
     - "dc03"
 nimbus.seeds: ["dc01"]
 drpc.servers:
     - "dc01"
 storm.local.dir: "/usr/local/storm/local-dir"

上述配置storm.zookeeper.servers表示zookeeper節點,nimbus.seeds表示nimbus服務在dc01節點,drpc.servers表示drpc服務在dc01節點,storm.local.dir表示日誌文件位置。
配置完成後將storm安裝目錄複製到dc02和dc03上。

scp -r /usr/local/storm/ root@dc02:/usr/local/storm/
scp -r /usr/local/storm/ root@dc03:/usr/local/storm/

啓動storm集羣
在dc01上執行以下命令

cd /usr/local/storm
./bin/storm nimbus > /dev/null 2>&1 &
./bin/storm ui > /dev/null 2>&1 &
./bin/storm drpc > /dev/null 2>&1 &

在dc02和dc03上執行以下命令:

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

等待啓動完成後可通過瀏覽器訪問http://dc01:8080查看集羣運行狀態。
啓動成功界面:
這裏寫圖片描述

總結

由於hbase需要基於zookeeper和hadoop運行,kafka和storm需要基於zookeeper運行。所以啓動順序應該爲zookeeper->hadoop->hbase->kafka->storm,停止順序相反。

本文內容比較粗略,有錯誤或遺漏的地方歡迎各位指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章