這裏有幾個主要關係:
1.經過Map、Reduce運算後產生的結果看上去是被寫入到HBase了,但是其實HBase中HLog和StoreFile中的文件在進行flush to disk操作時,這兩個文件存儲到了HDFS的DataNode中,HDFS纔是永久存儲。
2.ZooKeeper跟Hadoop Core、HBase有什麼關係呢?ZooKeeper都提供了哪些服務呢?主要有:管理Hadoop集羣中的NameNode,HBase中HBaseMaster的選舉,Servers之間狀態同步等。具體一點,細一點說,單隻HBase中ZooKeeper實例負責的工作就有:存儲HBase的Schema,實時監控HRegionServer,存儲所有Region的尋址入口,當然還有最常見的功能就是保證HBase集羣中只有一個Master。
2、搭建完全分佈式集羣
在做hadoop,hbase這方面的工作有一段時間了,經常有剛接觸這些東西的身邊朋友,向我詢問基本環境的搭建問題,於是就想以回憶錄的形式把基本配置的步驟整理出來,以便剛接觸的朋友做個參考.
HBase集羣建立在hadoop集羣基礎之上,所以在搭建HBase集羣之前需要把Hadoop集羣搭建起來,並且要考慮二者的兼容性.現在就以四臺機器爲例,搭建一個簡單的集羣.
使用的軟件版本:hadoop-1.0.3,hbase-0.94.2,zookeeper-3.4.4.
四臺機器IP:10.2.11.1,10.2.11.2,10.2.11.3,10.2.11.4.
一.搭建Hadoop集羣
1. 安裝JDK.在每臺機器下建立相同的目錄/usr/java.把下載的jdk(1.6及以上版本)複製到/usr/java目錄下面,使用命令
- tar –zxvf jdk-7u9-linux-i586.tar.gz
-
sudo
chmod 777 jdk-1.7.0_09
把jdk的路徑加到環境變量中:
-
vim.tiny /etc/profile
在該文件最後一行添加:
- JAVA_HOME=/usr/java/jdk1.7.0_09
- PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:PATH
-
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
使修改的操作生效:
-
source
/etc/profile
可以使用
-
java -version
進行驗證是否已配置成功.
2.在每臺機器上建立相同的用戶名
- sudo adduser cloud
-
password
cloud
輸入你要設置的密碼.然後在每臺機器作配置:
-
sudo
gedit /etc/hosts
打開文件後加入如下內容:
- 10.2.11.1 namenode
- 10.2.11.2 datanode1
- 10.2.11.3 datanode2
-
10.2.11.4
datanode3
3.在/home/cloud/目錄下建立一個文件夾project,命令如下:
-
mkdir project
把hadoop-1.0.3.tar.gz,zookeeper-3.4.4.tar.gz,hbase-0.94.2.tar.gz,這些下載的軟件包放在此目錄下面,以待下一步操作。
4.使用命令
-
tar –zxvf
hadoop-1.0.3.tar.gz
進行解壓文件.進入配置目錄,開始配置.
-
cd hadoop-1.0.3/conf
5. 使用命令 : vim.tiny hadoop-env.sh 把java的安裝路徑加進去:
-
JAVA_HOME=/usr/java/jdk1.7.0_09/
6. vim.tiny core-site.xml ,加入如下配置:
- <property>
- <name>hadoop.tmp.dir</name>
- <value>/home/cloud/project/tmp</value>
- </property >
- < property >
- <name> fs.default.name</name>
- <value>hdfs://namenode:9000</value>
-
</property
>
7. vim.tiny hdfs-site.xml,加入如下配置:
- <property >
- <name>dfs.repplication</name>
- <value>3</value>
- </property >
- <property>
- <name>dfs.data.dir</name>
- <value>/home/cloud/project/tmp/data</value>
-
</
property >
8. gedit mapred-site.xml,添加如下內容:
- <property>
- <name>mapred.job.tracker</name>
- <value>namenode:9001</value>
-
</property
>
9. gedit master,加入如下配置內容:
-
namenode
10. gedit slaves,加入如下配置內容:
- datanode1
- datanode2
-
datanode3
11. 配置機器之間無密碼登陸.在每臺機器下建立相同目錄 .ssh ,如
-
mkdir
/home/cloud/.ssh
在namenode節點下,使用命令ssh-keygen –t rsa,然後一直回車(中間不用輸入任何其他信息),直到結束,然後使用命令cd .ssh,
-
cp
id_rsa.pub authorized.keys
使用遠程傳輸,把authorized.keys分別複製到其他機器的.ssh目錄下面,命令如下:
- scp authorized_keys datanode1:/home/cloud/.ssh
- scp authorized_keys datanode2:/home/cloud/.ssh
-
scp authorized_keys datanode3:/home/cloud/.ssh
進入每臺機器的.ssh目錄下修改authorized_keys的權限,命令如下:
-
chmod
644 authorized_keys
12.把配置好的hadoop分別拷貝到集羣中其他機器上,命令如下:
- scp –r hadoop-1.0.3 datanode1:/home/cloud/project
- scp –r hadoop-1.0.3 datanode2:/home/cloud/project
-
scp –r hadoop-1.0.3 datanode3:/home/cloud/project
13.在namenode機器下,進入hadoop的安裝目錄,對文件系統進行格式化:
-
bin/hadoop
namenode –format
14. 啓動集羣: bin/start-all.sh. 可以使用
-
bin/hadoop dfsadmin –report
查看文件系統的使用情況。 使用命令
-
jps
查看節點服務啓動情況,正常情況有:jobtracker、namenode、jps、secondnamenode.否則啓動異常,重新檢查安裝步驟。
二.安裝zookeeper
1.在namenode機器下,配置zookeeper,先解壓安裝包,使用命令:
-
tar
-zxvf zookeeper-3.4.4.tar.gz
2.進入zookeeper的配置目錄,首先把zoo_sample.cfg重命名一下,可以重新複製一遍,使用命令:
-
cp
zoo_sample.cfg zoo.cfg
3.gedit zoo.cfg ,添加如下內容:
- dataDir=/home/cloud/project/tmp/zookeeper/data
- server.1 = datanode1:7000:7001
- server.2 =datanode2:7000:7001
-
server.3
=datanode3:7000:7001
4.把zookeeper分別遠程拷貝datanode1,datanode2,datenode3,使用如下命令:
- scp –r zookeeper-3.4.4 datanode1:/home/cloud/project
- scp –r zookeeper-3.4.4 datanode2:/home/cloud/project
-
scp
–r zookeeper-3.4.4 datanode3:/home/cloud/project
5.分別在剛纔的datanode節點/home/cloud/project/tmp/zookeeper/data目錄下,新建文件myid,然後使用命令
-
vim.tiny myid
分別在datanode1,datanode2,datanode3的myid中寫入對應的server.n中的n,即分別是1,2,3.
6.開啓zookeeper服務,在三臺datanode機器的zookeeper安裝目錄下使用命令:
-
bin/zkServer.sh
start
三.部署hbase
1.解壓縮hbase的軟件包,使用命令:
-
tar
-zxvf hbase-0.94.2.tar.gz
2.進入hbase的配置目錄,在hbase-env.sh文件裏面加入java環境變量.即:
-
JAVA_HOME=/usr/java/jdk1.7.0_09/
加入變量:
-
export HBASE_MANAGES_ZK=false
3. 編輯hbase-site.xml ,添加配置文件:
- <property>
- <name>hbase.rootdir</name>
- <value>hdfs://namenode:9000/hbase</value>
- </property>
- <property>
- <name>hbase.cluster.distributed</name>
- <value>true</value>
- </property>
- <property>
- <name>hbase.zookeeper.quorum</name>
- <value>datanode1,datanode2,datanode3</value>
- </property>
- <property>
- <name>hbase.zookeeper.property.dataDir</name>
- <value>/home/cloud/project/tmp/zookeeper/data</value>
-
</property>
4. 編輯配置目錄下面的文件regionservers. 命令:
-
vim.tiny
regionservers
加入如下內容:
- datanode1
- datanode2
-
datandoe3
5. 把Hbase複製到其他機器,命令如下:
- scp -r hbase-0.94.2 datanode1:/home/cloud/project
- scp -r hbase-0.94.2 datanode2:/home/cloud/project
-
scp
-r hbase-0.94.2 datanode3:/home/cloud/project
6. 開啓hbase服務。命令如下:
-
bin/start-hbase.sh
可以使用bin/hbaseshell 進入hbase自帶的shell環境,然後使用命令version等,進行查看hbase信息及建立表等操作。