Hadoop及Zookeeper+HBase徹底分佈式集羣部署

Hadoop及HBase集羣部署html

1、 集羣環境java

  1. 系統版本

虛擬機:內存 16G CPU 雙核心node

系統: CentOS-7 64位linux

系統下載地址:web

http://124.202.164.6/files/417500000AB646E7/mirrors.163.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1708.isoshell

  1. 軟件版本

hadoop-2.8.1.tar.gzapache

hbase-1.3.1-bin.tar.gzvim

zookeeper-3.4.10.tar.gzcentos

jdk-8u144-linux-x64.tar.gzsession

  1. 主機環境

物理機:Window Server 2012 R2

虛擬機:VMware Workstation Pro 12

  1. 三臺虛擬機

=======Hamster======

I P:192.168.0.10

用戶名:hadoop

=======hslave-1======

I P:192.168.0.11

用戶名:hadoop

=======hslave-2======

I P:192.168.0.12

用戶名:hadoop

  1. 集羣環境

一共創建了三臺虛擬機

Ip節點名稱爲:

Master節點

192.168.0.10 hmaster.hcluster

Slave節點

192.168.0.11 hslave-1.hcluster

192.168.0.12 hslave-2.hcluster

三個虛擬機上都必須安裝zookeeper

注意:操做說明,命令前面有#號表明root用戶登入的

  1. 時間說明

書寫時間:2017-10-19

第一次更新時間:2017-10-22

2、 安裝基礎集羣環境

  1. 基礎環境配置

爲了配置方便,集羣中防火牆已經所有關閉,而且禁止開機啓動

  1. 關閉防火牆

因爲新版的CentOS-7 默認採用的firewalld防火牆,不是iptables,關閉命令爲

systemctl stop firewalld

systemctl mask firewalld

若是想切換成iptables防火牆請以下操做:

安裝:yum install iptables-services

設置開機啓動 systemctl enable iptables

具體使用請看iptables基礎操做

注意:在集羣中全部節點上執行相同的操做

  1. 配置/etc/hosts

編輯/etc/host文件,加入集羣節點的IP與Hostname對應關係

192.168.0.10 hmaster hmaster.hcluster

192.168.0.11 hslave-1 hslave-1.hcluster

192.168.0.12 hslave-2 hslave-2.hcluster

注意:在集羣中全部節點上執行相同的操做

  1. 安裝Java

1) 解壓jdk-8u144-linux-x64.tar.gz至/opt目錄

tar -xzf jdk-7u79-linux-x64.tar.gz -C

/opt

2) 添加Java環境變量到文件/etc/profile的最後

=================JAVA_HOME===================

export
JAVA_HOME="/opt/jdk1.8.0_144"

export JAVA_BIN=$JAVA_HOME/bin

export JAVA_LIB=$JAVA_HOME/lib

export
CLASSPATH=.:$JAVA_LIB/tools.jar:$JAVA_LIB/dt.jar

export PATH=$JAVA_BIN:$PATH

3) 導入環境變量

source /etc/profile

4) 驗證安裝結果

執行java -version驗證是否安裝成功

結果:

注意:在集羣中全部節點上執行相同的操做

  1. 安裝ntp

在Hadoop集羣中, 須要保證各節點的時鐘同步

1) 在全部節點安裝ntp服務

yum install ntp ntpdate

2) Master節點配置

在Master節點,編輯配置文件/etc/ntp.conf,
添加以下配置,使Master節點的ntp服務接受來自集羣網段的時間同步請求

restrict 192.168.1.0 mask 255.255.255.0
nomodify notrap

3) 啓動Master節點的ntpd服務,並設置爲開機啓動

chkconfig --level 345 ntpd on

service ntpd start

4) Slave節點配置

在Slave節點,編輯配置文件/etc/ntp.conf,
添加以下配置,使之與Master節點的時鐘進行同步

server hamster

第一次啓動Slave節點上的ntpd前,先手動與Master節點進行時鐘同步

ntpdate hamster

5) 啓動Slave節點的ntpd服務,並設置爲開機啓動

chkconfig --level 345 ntpd on

service ntpd start

注意:Ntpd啓動的時候一般須要一段時間大概5分鐘進行時間同步,因此在ntpd剛剛啓動的時候還不能正常提供時鐘服務,報錯"no server
suitable for synchronization found"

  1. 安裝rsync

經過rsync工具,hadoop控制腳本可以將配置文件分發到集羣的各個節點中。 默認該功能未啓用,能夠經過設置hadoop-env.sh中的HADOOP_MASTER變量啓動。 啓用rsync後,當工做節點的守護進程啓動後,會把以HADOOP_MASTER爲根的目錄樹與本地的HADOOP_INSTALL目錄同步

yum install

rsync

注意:在集羣中全部節點上執行相同的操做

  1. 配置Master節點到全部節點的無密碼登陸

前提: 集羣各節點使用相同的登陸用戶名,且不建議使用root用戶,本文中使用用戶名hadoop。

在全部節點上建立用戶hadoop

useradd hadoop

passwd hadoop

New password:

Retype new password:

passwd: all authentication tokens updated
successfully.

1) 在Master節點上生成主機密鑰

在Master 第一個機器節點上,切換hadoop用戶進行設置

$ ssh-keygen -t rsa -P ‘’

一路回車,最後輸入y回車

執行上述命令後,一路回車,會在.ssh下生成私鑰id_rsa和公鑰id_rsa.pub兩個文件

2) 複製Master公鑰到被登陸節點的authorized_keys文件中

首先配置Master到Master的無密碼登陸

注意:如下步驟必須在hadoop(只要不是root用戶就能夠)用戶下進行建立.ssh文件夾,而後複製authorized_keys文件,在hadoop用戶下設置對應的權限

cat .ssh/id_rsa.pub >>

.ssh/authorized_keys

chmod 600 .ssh/authorized_keys

而後配置Master到Slave的無密碼登陸,將Master節點id_rsa.pub中的內容複製到Slave節點的${HOME}/.ssh/authorized_keys文件中

3) 首先將公鑰文件傳到Slave節點

scp .ssh/id_rsa.pub hadoop@hslave-1:/home/hadoop/id_rsa.pub.hmaster

4) 在Slave節點上建立文件.ssh/authorized_keys

mkdir .ssh

cat id_rsa.pub.hmaster >>

.ssh/authorized_keys

chmod 700 .ssh

chmod 600 .ssh/authorized_keys

rm -f id_rsa.pub.hmaster

5) 依次在全部Slave節點上執行相同的操做,並在Master節點登陸Slave進行驗證

ssh hslave-1

6) 若是不能鏈接

在root用戶下打開Terminal

輸入命令 cat /etc/passwd

從上圖能夠看出hadoop用戶,缺乏了一個定義,而後用gedit或者vim編輯

gedit /etc/passwd

在1001: 這裏添加hadoop 保存便可

這樣就能夠免密登陸了:

  1. 修改 ulimit 限制

1) 這個配置針對HBase

參照HBase官方文檔

由於HBase 會在同一時間打開大量的文件句柄和進程,超過 Linux 的默認限制,致使可能會出現以下錯誤。

因此編輯/etc/security/limits.conf文件,添加如下兩行,提升能打開的句柄數量和進程數量

hadoop - nofile 32768

hadoop - nproc 32000

還須要在/etc/pam.d/common-session 加上這一行:

不然在/etc/security/limits.conf上的配置不會生效。

最後還要註銷(logout或者exit)後再登陸,這些配置才能生效

判斷是否生效:

登陸hadoop用戶以後,在命令行中輸入:ulimit -n -u

查看最大文件和進程數量是否改變了。

返回結果以下:就成功了

注意:在集羣中全部節點上執行相同的操做

至此, 集羣及Hadoop的依賴配置已經完成,下面進行Hadoop的安裝。

3、 安裝Hadoop

  1. 解壓hadoop tar包

1) 將hadoop軟件包上傳至集羣各節點並解壓

本文中將hadoop-2.5.1.tar.gz上傳至hadoop用戶的主目錄/home/hadoop下。

tar -xzf hadoop-2.5.1.tar.gz

mv hadoop-2.5.1 hadoop

注意:在集羣中全部節點上執行相同的操做

2) 設置hadoop文件的權限普通用戶

chown -R Hadoop:Hadoop /home/Hadoop/hadoop

3) 配置hadoop各配置文件

hadoop的配置文件位於/home/hadoop/etc/hadoop下

a) 修改jdk路徑

b) core-site.xml

用於定義系統級別的參數,如HDFS URL、Hadoop的臨時目錄以及用於rack-aware集羣中的配置文件的配置等

hadoop.tmp.dir

/home/hadoop/hadoop/temp

fs.default.name

hdfs://192.168.0.10:9000

fs.defaultFS

hdfs://192.168.0.10:9002

io.file.buffer.size

131072

Slave主機修改hmaster爲相應的節點名稱例如第一臺:hslave-1

c) hdfs-site.xml

HDFS的相關設定,如文件副本的個數、塊大小及是否使用強制權限等

dfs.replication

2

dfs.namenode.name.dir

/home/hadoop/hadoop/name

dfs.datanode.data.dir

/home/hadoop/hadoop/data

dfs.blocksize

268435456

d) mapred-site.xml.template

HDFS的相關設定,如reduce任務的默認個數、任務所可以使用內存的默認上下限等

mapreduce.framework.name

yarn

mapred.job.tracker

http://192.168.0.10:9001

mapreduce.jobhistory.address

http://192.168.0.10:10020

mapreduce.jobhistory.webapp.address

http://192.168.0.10:19888

Slave主機修改hmaster爲相應的節點名稱例如第一臺:hslave-1

e) yarn-site.xml

yarn.nodemanager.aux-services

mapreduce_shuffle

yarn.resourcemanager.address

192.168.0.10:8032

yarn.resourcemanager.scheduler.address

192.168.0.10:8030

yarn.resourcemanager.resource-tracker.address

192.168.0.10:8031

yarn.resourcemanager.admin.address

192.168.0.10:8033

yarn.resourcemanager.webapp.address

192.168.0.10:8088

Slave主機修改hmaster爲相應的節點ip地址例如第一臺:192.168.0.11

f) slaves

Hadoop集羣的slave主機列表,master啓動時會經過SSH鏈接至此列表中的全部主機併爲其啓動DataNode和NodeManager

文件在:hadoop/etc/hadoop/slaves

hslave-1

hslave-2

Master 主機特有的配置

g) 若是這個文件不存在就新建一個文件名字爲masters,裏面寫入hmaster這個主機節點

Master 主機特有的配置

4) 配置環境變量

export HADOOP_HOME=/usr/hadoop

export PATH=$PATH :$HADOOP_HOME/bin

5) 格式化HDFS存儲

進入hadoop下的bin目錄(只在主機上操做)

./hdfs

namenode -format

在格式化過程當中注意輸出結果,成功後會有相似下面的輸出:

出現上圖就是成功了

6) 啓動Hadoop服務

啓動和中止腳本位於hadoop下sbin目錄

a) 啓動HDFS

sbin/start-dfs.sh

b) 啓動Yarn

sbin/start-yarn.sh

c) 啓動MapReduce JobHistory Server

sbin/mr-jobhistory-daemon.sh start

historyserver

d) 啓動全部一句話就能夠

sbin/start-all.sh

e) 驗證服務是否正常運行 查看Master節點上服務:

新打開一個Terminal,而後輸入jps查看結果

節點機輸入jps

7) 中止Hadoop服務

a) 中止HDFS

sbin/stop-dfs.sh

b) 中止Yarn

sbin/stop-yarn.sh

c) 中止MapReduce JobHistory Server

sbin/mr-jobhistory-daemon.sh stop

historyserver

d) 中止全部一句話就能夠

sbin/stop-all.sh

  1. Web界面查看

端口爲50070

4、 安裝ZooKeeper

注意:zookeeper安裝在全部節點

  1. zookeeper安裝在全部節點

a) 在全部節點上解壓zookeeper

b) zookeeper配置文件zoo.cfg位於zookeeper下的conf目錄下,默認不存在,可根據zoo_sample.cfg生成

cd conf

cp zoo_sample.cfg zoo.cfg

c) 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=/home/hadoop/zookeeper/data

dataLogDir=/home/hadoop/zookeeper/logs

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=0.0.0.0:2888:3888

server.2=192.168.0.11:2888:3888

server.3=192.168.0.12:2888:3888

將zoo.cfg同步到zookeeper全部節點

d) 建立zookeeper數據目錄,並創建節點標識文件myid

在hmaster節點建立標識爲1的文件myid

mkdir -p /home/hadoop/zookeeperdata/data

echo "1" >

/home/hadoop/zookeeperdata/data/myid

同理,與zoo.cfg中配置相對應,在hslave-1和hslave-2節點上分別建立標識爲2和3的標識文件。

e) hslave-1

mkdir -p /home/hadoop/zookeeperdata/data

echo "2" >

/home/hadoop/zookeeperdata/data/myid

f) hslave-2

mkdir -p /home/hadoop/zookeeperdata/data

echo "3" >

/home/hadoop/zookeeperdata/data/myid

  1. 啓動zookeeper集羣

zookeeper啓動腳本位於zookeeper下的bin目錄下

啓動ZooKeeper

在ZooKeeper集羣的每一個結點上,執行啓動ZooKeeper服務的腳本,以下所示:

每個節點機都得須要執行下面命令

bin/zkServer.sh start

zookeeper的日誌zookeeper.out默認位於zookeeper主目錄下,可經過修改${zkhome}/bin/zkEnv.sh中的ZOO_LOG_DIR變量來改變日誌路徑。

  1. 驗證是否安裝成功

a) 安裝完成以後,新打開一個Terminal,輸入jps進行查看,是否有QuorumPeerMain線程存在,如下圖片是沒有此線程,

b) 而後在剛纔bin目錄下輸入指令:cat zookpeer.out

若是返回結果爲:

c) 而後結果是java的環境變量可能沒有起做用

輸入命令 source /etc/profile

d) 防火牆問題,須要關閉防火牆

systemctl disable firewalld

service iptables stop

e) 看到下圖紅色框內進程有了就表明成功了

f) 輸入命令查看狀態是否啓動成功

./zkServer.sh status

很是大的注意:

若是遇到第一個啓動以後,可是輸入:# ./zkServer.sh status

出現

表明其餘節點上的尚未啓動,要接着去啓動其餘節點機上的zookeeper,

啓動以後在輸入查看

就正常了

5、 HBase安裝

HBase集羣架構分爲1個HMaster(hmaster)和2個HRegionServer(hslave-1,
hslave-2)。

  1. 在全部節點解壓hbase

tar -xzf hbase-1.1.5-bin.tar.gz

mv hbase-1.1.5-bin hbase

如下稱hbase主目錄爲${HBASE_HOME}。

  1. 配置HBase

hbase配置文件位於${HBASE_HOME}/conf目錄下。

1) hbase-env.sh

主要改兩個配置:

export JAVA_HOME=/opt/jdk1.8.0_79

export HBASE_MANAGES_ZK=false

2) hbase-site.xml

hbase.cluster.distributed

true

hbase.rootdir

hdfs://192.168.0.10:9002/hbase

hbase.master

hmaster:60000

hbase.zookeeper.quorum

hmaster,hslave-1,hslave-2

hbase.zookeeper.property.dataDir

/home/hadoop/zookeeper

hbase.master.maxclockskew

150000

hbase.zookeeper.property.clientPort

2181

這裏要特別注意的是hbase.rootdir裏面的HDFS地址是要跟Hadoop 的core-site.xml裏面的fs.defaultFS 的HDFS的IP地址或者域名、端口必須一致。其次是hbase.zookeeper.property.dataDir,其中a01513是個人操做系統用戶名,根據你本身的狀況改吧,或者放到其餘目錄也是能夠的。hbase.cluster.distributed 是啓用分佈式模式,這裏必須爲true哦。hbase.zookeeper.quorum是配置集羣IP地址集或者域名集,逗號分隔。hbase.master配置HBase的主節點端口,web端口是60010,經過web UI你能夠確認你是否訪問成功了。

3) 配置regionservers主機列表

hslave-1

hslave-2

4) 節點機列表都爲

hslave-1

hslave-2

注意:將上述配置同步到集羣中全部節點。

  1. 啓動中止HBase

HBase腳本位於${HBASE_HOME}/bin目錄下。

bin/start-hbase.sh

  1. 中止HBase

bin/stop-hbase.sh

  1. 若是啓動的時候出現此問題,就註釋下面內容

出錯地方

註釋的代碼

這個錯誤是時間沒有同步

注意:每個節點機都配置

  1. 查看是否啓動成功

主機節點

節點機一、節點機2

注意:若是節點機HRegionServer進程,時間同步出現了問題,能夠把時間同步加大

hbase.master.maxclockskew

150000

  1. 能夠進入hbase shell,使用命令查看hbase狀態

  2. 查詢出表

出現下圖就表示真正成功了

  1. Web界面查看

端口爲16010

6、 總結

至此:徹底分佈式Hadoop+Zookeeper+HBase集羣測試環境基本圓滿完成,若有問題繼續研究,經過這3天的時間研究獲得了不少的知識。

相關文章
相關標籤/搜索