Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建步驟
一、環(huán)境說(shuō)明
集群環(huán)境至少需要3個(gè)節(jié)點(diǎn)(也就是3臺(tái)服務(wù)器設(shè)備):1個(gè)Master,2個(gè)Slave,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互ping通,下面舉例說(shuō)明,配置節(jié)點(diǎn)IP分配如下:
Hostname | IP | User | Password |
---|---|---|---|
master | 192.168.59.133 | hadoop | 123456 |
slave1 | 192.168.59.134 | hadoop | 123456 |
slave2 | 192.168.59.135 | hadoop | 123456 |
三個(gè)節(jié)點(diǎn)均使用CentOS 6.5
系統(tǒng),為了便于維護(hù),集群環(huán)境配置項(xiàng)最好使用相同用戶名、用戶密碼、相同hadoop、hbase、zookeeper目錄結(jié)構(gòu)。
注: 可以通過(guò)編輯/etc/sysconfig/network
文件來(lái)修改 hostname 。
##二、準(zhǔn)備工作
2.1 安裝JDK
在三臺(tái)機(jī)器上配置JDK環(huán)境,下載 jdk-8u51-linux-x64.rpm
文件直接安裝:
$ rpm -ivh jdk-8u51-linux-x64.rpm
修改配置文件 vim /etc/profile
:
export JAVA_HOME=/usr/java/jdk1.8.0_51 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后重新加載配置文件使之生效:
$ source /etc/profile
2.2 添加Hosts映射關(guān)系
分別在三個(gè)節(jié)點(diǎn)上添加hosts映射關(guān)系:
$ vim /etc/hosts
添加的內(nèi)容如下:
192.168.59.133 master
192.168.59.134 slave1
192.168.59.135 slave2
2.3 集群之間SSH無(wú)密碼登陸
CentOS默認(rèn)安裝了ssh,如果沒有你需要先安裝ssh 。
集群環(huán)境的使用必須通過(guò)ssh無(wú)密碼登陸來(lái)執(zhí)行,本機(jī)登陸本機(jī)必須無(wú)密碼登陸,主機(jī)與從機(jī)之間必須可以雙向無(wú)密碼登陸,從機(jī)與從機(jī)之間無(wú)限制。
2.3.1 設(shè)置master無(wú)密碼自登陸
主要有三步:①生成公鑰和私鑰、②導(dǎo)入公鑰到認(rèn)證文件、③更改權(quán)限
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa $ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys $ chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
測(cè)試,第一次登錄可能需要yes確認(rèn),之后就可以直接登錄了:
$ ssh localhost Last login: Sat Jul 18 22:57:44 2015 from localhost
對(duì)于 slave1 和 slave2,進(jìn)行無(wú)密碼自登陸設(shè)置,操作同上。
2.3.2 設(shè)置主機(jī)->從機(jī)的無(wú)密碼登錄
$ cat ~/.ssh/id_rsa.pub | ssh hadoop@slave1 'cat - >> ~/.ssh/authorized_keys'
$ cat ~/.ssh/id_rsa.pub | ssh hadoop@slave2 'cat - >> ~/.ssh/authorized_keys'
測(cè)試:
[hadoop@master ~]$ ssh hadoop@slave1 Last login: Sat Jul 18 23:25:41 2015 from master [hadoop@master ~]$ ssh hadoop@slave2 Last login: Sat Jul 18 23:25:14 2015 from master
2.3.3 設(shè)置從機(jī)->主機(jī)的無(wú)密碼登錄
分別在slave1、slave2上執(zhí)行:
$ cat ~/.ssh/id_rsa.pub | ssh hadoop@master 'cat - >> ~/.ssh/authorized_keys'
三、Hadoop集群安裝配置
這里會(huì)將hadoop、hbase、zookeeper的安裝包都解壓到/home/hadoop/
個(gè)人主文件夾下,并重命名為hadoop、hbase、zookeeper。
3.1 修改hadoop配置
配置文件都在~/hadoop/etc/
目錄下
3.1.1 core-site.xml
<configuration> <property> <name>fs.default.name</name> <value>hdfs://master:9000</value> </property> </configuration>
3.1.2 hadoop-env.sh
添加JDK路徑:
export JAVA_HOME=/usr/java/jdk1.8.0_51
3.1.3 hdfs-site.xml
<configuration> <property> <name>dfs.name.dir</name> <value>/home/hadoop/hadoop/name</value> </property> <property> <name>dfs.data.dir</name> <value>/home/hadoop/hadoop/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
3.1.4 mapred-site.xml
<configuration> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </property> </configuration>
3.1.5 修改masters文件
master
3.1.6 修改slaves文件
slave1
slave2
注意:三臺(tái)機(jī)器上都進(jìn)行相同的配置,都放在相同的路徑下。
使用scp
命令進(jìn)行從本地到遠(yuǎn)程(或遠(yuǎn)程到本地)的文件拷貝操作:
scp -r /home/hadoop/hadoop slave1:/home/hadoop scp -r /home/hadoop/hadoop slave2:/home/hadoop
3.2 啟動(dòng)hadoop集群
進(jìn)入master的~/hadoop
目錄,執(zhí)行以下操作:
$ bin/hadoop namenode -format
格式化namenode,第一次啟動(dòng)服務(wù)前執(zhí)行的操作,以后不需要執(zhí)行。
然后啟動(dòng)hadoop:
$ sbin/start-all.sh
通過(guò)jps
命令能看到除jps外有5個(gè)進(jìn)程:
$ jps 4866 NodeManager 4370 NameNode 4899 Jps 4648 SecondaryNameNode 4779 ResourceManager 4460 DataNode
四、ZooKeeper集群安裝配置
解壓zookeeper-3.3.2.tar.gz并重命名為zookeeper。
4.1 修改配置文件zoo.cfg
進(jìn)入~/zookeeper/conf
目錄:
$ cp zoo_sample.cfg zoo.cfg
拷貝zoo_sample.cfg
文件為zoo.cfg
,并編輯如下:
dataDir=/home/hadoop/zookeeper/data server.1=192.168.59.133:2888:3888 server.2=192.168.59.134:2888:3888 server.3=192.168.59.135:2888:3888
4.2 新建并編輯myid文件
在dataDir目錄下新建myid文件,輸入一個(gè)數(shù)字(master為1
,slave1為2
,slave2為3
):
$ mkdir /home/hadoop/zookeeper/data $ echo "1" > /home/hadoop/zookeeper/data/myid
同樣使用scp
命令進(jìn)行遠(yuǎn)程復(fù)制,只不過(guò)要修改每個(gè)節(jié)點(diǎn)上myid
文件中的數(shù)字。
4.3 啟動(dòng)ZooKeeper集群
在ZooKeeper集群的每個(gè)結(jié)點(diǎn)上,執(zhí)行啟動(dòng)ZooKeeper服務(wù)的腳本:
$ ~/zookeeper/bin/zkServer.sh start
1.如果啟動(dòng)報(bào)類似異常:QuorumCnxManager@384] - Cannot open channel to 2 at election address slave-02/192.168.0.178:3888 是可以忽略的,因?yàn)樵摲?wù)啟動(dòng)時(shí)會(huì)嘗試連接所有節(jié)點(diǎn),而其他節(jié)點(diǎn)尚未啟動(dòng)。通過(guò)后面部分可以看到,集群在選出一個(gè)Leader后,最后穩(wěn)定 了。其他結(jié)點(diǎn)可能也出現(xiàn)類似問(wèn)題,屬于正常。
2.關(guān)閉防火墻。在hadoop集群環(huán)境(linux系統(tǒng))中最好關(guān)閉防火墻,不然會(huì)出現(xiàn)很多問(wèn)題,例如namenode找不到datanode等。如果不關(guān)閉防火墻,客戶端使用API操作HDFS以及ZooKeeper,可能就會(huì)出現(xiàn)下面常見的兩種異常:
- 使用API操作HDFS時(shí)會(huì)出現(xiàn)異常:java.net.NoRouteToHostException: No route to host
- 使用API操作ZK時(shí)會(huì)出現(xiàn)異常:org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode = ConnectionLoss for xxxx
3.使用root權(quán)限登陸后,輸入關(guān)閉防火墻命令:
$ /etc/init.d/iptables stop $ service iptables stop
修改禁用selinux: /etc/selinux/config文件,設(shè)置"SELINUX=disabled"
五、HBase集群安裝配置
解壓hbase-1.0.1.1-bin.tar.gz并重命名為hbase。
5.1 hbase-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_51 export HBASE_CLASSPATH=/home/hadoop/hadoop/etc/hadoop/ export HBASE_MANAGES_ZK=false
5.2 hbase-site.xml
<configuration> <property> <name>hbase.rootdir</name> <value>hdfs://master:9000/hbase</value> </property> <property> <name>hbase.master</name> <value>master</value> </property> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.zookeeper.property.clientPort</name> <value>2181</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>master,slave1,slave2</value> </property> <property> <name>zookeeper.session.timeout</name> <value>60000000</value> </property> <property> <name>dfs.support.append</name> <value>true</value> </property> </configuration>
5.3 更改 regionservers
在 regionservers 文件中添加slave列表:
slave1
slave2
5.4 分發(fā)并同步安裝包
將整個(gè)hbase安裝目錄都拷貝到所有slave服務(wù)器:
$ scp -r /home/hadoop/hbase slave1:/home/hadoop $ scp -r /home/hadoop/hbase slave2:/home/hadoop
六、啟動(dòng)集群
1. 啟動(dòng)ZooKeeper
~/zookeeper/bin/zkServer.sh start
2. 啟動(dòng)hadoop
~/hadoop/sbin/start-all.sh
3. 啟動(dòng)hbase
~/hbase/bin/start-base.sh
4. 啟動(dòng)后,master上進(jìn)程和slave進(jìn)程列表
[hadoop@master ~]$ jps 6225 Jps 2897 SecondaryNameNode # hadoop進(jìn)程 2710 NameNode # hadoop master進(jìn)程 3035 ResourceManager # hadoop進(jìn)程 5471 HMaster # hbase master進(jìn)程 2543 QuorumPeerMain # zookeeper進(jìn)程
[hadoop@slave1 ~]$ jps 4689 Jps 2533 QuorumPeerMain # zookeeper進(jìn)程 2589 DataNode # hadoop slave進(jìn)程 4143 HRegionServer # hbase slave進(jìn)程
5. 進(jìn)入hbase shell進(jìn)行驗(yàn)證
[hadoop@master ~]$ hbase/bin/hbase shell 2015-07-20 00:42:11,725 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable HBase Shell; enter 'help<RETURN>' for list of supported commands. Type "exit<RETURN>" to leave the HBase Shell Version 1.0.1.1, re1dbf4df30d214fca14908df71d038081577ea46, Sun May 17 12:34:26 PDT 2015 hbase(main):001:0> list TABLE 0 row(s) in 1.6950 seconds => [] hbase(main):002:0> status 2 servers, 0 dead, 1.0000 average load hbase(main):003:0>
參考:
[1] www.smalldeng.blog.51cto.com/1038075/1329290
[2] www.marysee.blog.51cto.com/1000292/629405
到此這篇關(guān)于Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建的文章就介紹到這了,更多相關(guān)Hadoop HBase ZooKeeper集群搭建內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis?log4j2打印sql+日志實(shí)例代碼
在學(xué)習(xí)mybatis的時(shí)候,如果用log4j2來(lái)協(xié)助查看調(diào)試信息,則會(huì)大大提高學(xué)習(xí)的效率,加快debug速度,下面這篇文章主要給大家介紹了關(guān)于mybatis?log4j2打印sql+日志的相關(guān)資料,需要的朋友可以參考下2022-08-08@RequestMapping 如何使用@PathVariable 從URI中獲取參數(shù)
這篇文章主要介紹了@RequestMapping 如何使用@PathVariable 從URI中獲取參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Spring Security認(rèn)證提供程序示例詳解
這篇文章主要給大家介紹了關(guān)于Spring Security認(rèn)證提供程序的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Security具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05java 中InputStream,String,File之間的相互轉(zhuǎn)化對(duì)比
這篇文章主要介紹了java 中InputStream,String,File之間的相互轉(zhuǎn)化對(duì)比的相關(guān)資料,需要的朋友可以參考下2017-04-04servlet之web路徑問(wèn)題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了servlet之web路徑問(wèn)題的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07