大數據集群為了保證故障轉移,一般通過zookeeper來整體協調管理,當節點數大於等於6個時推薦使用,接下來描述一下Hbase集群部署在zookeeper上的過程:
安裝Hbase之前首先系統應該做通用的集群環境准備工作,這些是必須的:
1、集群中主機名必須正確配置,最好有實際意義;並且主機名都在hosts文件中對應主機IP,一一對應,不可缺少
這里集群有6台服務器:bigdata1,bigdata2,bigdata3,bigdata4,bigdata5,bigdata6
這里是3台主機,分別對應
2、JDK環境正確安裝
3、集群中每台機器關閉防火牆,保證通信暢通
4、配置集群間ssh免密登錄
5、集群ntp服務開啟,保證時間同步(這一步非常重要,否則hbase啟動會失敗)
6、zookeeper正確安裝
7、Hadoop HDFS服務開啟
這里預定zookeeper的地址為:bigdata2,bigdata3,bigdata4,bigdata5,bigdata6 5個zookeeper節點
hadoop namenode為bigdata1(主),bigdata2(備用),其余4個為datanode
hbase Master為bigdata1,其余為存儲節點
基於以上配置結合集群高可用配置,構成一個性能比較好的集群配置方式
前面6步都配置好的基礎上,首先配置Hadoop集群,在bigdata1上做配置操作
首先解壓hadoop,並安裝至指定目錄:
tar -xvzf hadoop-2.6.0.tar.gz mkdir /bigdata/hadoop mv hadoop-2.6.0 /bigdata/hadoop cd /bigdata/hadoop/hadoop-2.6.0
就是簡單的釋放,然后為了方便可以將HADOOP_HOME添加至環境變量
配置hadoop需要編輯以下幾個配置文件:
hadoop-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves
1、編輯hadoop-env.sh
修改export JAVA_HOME=${JAVA_HOME}為自己的實際安裝位置
這里是export JAVA_HOME=/usr/local/java/jdk1.8.0_73
2、編輯core-site.xml,在configuration標簽中間添加如下代碼,
1 <property> 2 <name>fs.defaultFS</name> 3 <value>hdfs://hadoopha</value> 4 </property> 5 <property> 6 <name>hadoop.tmp.dir</name> 7 <value>/bigdata/hadoop/tmp</value> 8 </property> 9 <property> 10 <name>ha.zookeeper.quorum</name> 11 <value>bigdata2:2181,bigdata3:2181,bigdata4:2181,bigdata5:2181,bigdata6:2181</value> 12 </property>
3、編輯hdfs-site.xml ,添加如下代碼:
1 <property> 2 <name>dfs.replication</name> 3 <value>2</value> 4 </property> 5 <property> 6 <name>dfs.nameservices</name> 7 <!--這里和core-site中配置保持一致--> 8 <value>hadoopha</value> 9 </property> 10 11 <property> 12 <name>dfs.ha.namenodes.hadoopha</name> 13 <value>bigdata1,bigdata2</value> 14 </property> 15 <property> 16 <name>dfs.namenode.rpc-address.hadoopha.bigdata1</name> 17 <value>bigdata1:8020</value> 18 </property> 19 <property> 20 <name>dfs.namenode.http-address.hadoopha.bigdata1</name> 21 <value>bigdata1:50070</value> 22 </property> 23 <property> 24 <name>dfs.namenode.rpc-address.hadoopha.bigdata2</name> 25 <value>bigdata2:8020</value> 26 </property> 27 <property> 28 <name>dfs.namenode.http-address.hadoopha.bigdata2</name> 29 <value>bigdata2:50070</value> 30 </property> 31 32 <property> 33 <name>dfs.namenode.name.dir</name> 34 <value>file:///bigdata/hadoop/hdfs/name</value> 35 </property> 36 <property> 37 <name>dfs.datanode.data.dir</name> 38 <value>file:///bigdata/hadoop/hdfs/data</value> 39 </property> 40 <!-- 這個地方是為Hbase的專用配置,最小為4096,表示同時處理文件的上限,不配置會報錯 --> 41 <property> 42 <name>dfs.datanode.max.xcievers</name> 43 <value>4096</value> 44 </property> 45 46 <!--提供journal的服務器列表,一般為奇數個,這里為3個--> 47 <property> 48 <name>dfs.namenode.shared.edits.dir</name> 49 <value>qjournal://bigdata3:8485;bigdata4:8485;bigdata5:8485/hadoopha</value> 50 </property> 51 <property> 52 <name>dfs.ha.automatic-failover.enabled</name> 53 <value>true</value> 54 </property> 55 56 <property> 57 <name>dfs.client.failover.proxy.provider.hadoopha</name> 58 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> 59 </property> 60 <property> 61 <name>dfs.journalnode.edits.dir</name> 62 <value>/bigdata/hadoop/hdfs/journal</value> 63 </property> 64 65 <property> 66 <name>dfs.ha.fencing.methods</name> 67 <value>sshfence</value> 68 </property> 69 <property> 70 <name>dfs.ha.fencing.ssh.connect-timeout</name> 71 <value>5000</value> 72 </property> 73 74 <!--配置ssh密鑰存放位置--> 75 <property> 76 <name>dfs.ha.fencing.ssh.private-key-files</name> 77 <value>/root/.ssh/id_dsa</value> 78 </property>
其中配置的注釋說明要注意一下
4、編輯mapred-site.xml,這個不用配置
5、編輯yarn-site.xml,這個也不用配置
6、編輯slaves,添加datanode節點
bigdata3
bigdata4
bigdata5
bigdata6
這些都保存完畢,將/bigdata/下的hadoop目錄整體發送至集群中其他主機,其他主機應該事先建立好bigdata目錄
scp -r /bigdata/hadoop bigdata2:/bigdata scp -r /bigdata/hadoop bigdata3:/bigdata scp -r /bigdata/hadoop bigdata4:/bigdata scp -r /bigdata/hadoop bigdata5:/bigdata scp -r /bigdata/hadoop bigdata6:/bigdata
然后在配置jouralnode的服務器上啟動jouralnode服務,這里是bigdata3,4,5
sbin/hadoop-daemon.sh start journalnode
然后在bigdata1上格式化zookeeper節點:
bin/hdfs zkfc -formatZK
在其中一台namenode上格式化文件系統並啟動namenode,這里是bigdata1:
bin/hdfs namenode -format sbin/hadoop-daemon.sh start namenode
在另外一台namenode,bigdata2上同步元數據:
bin/hdfs namenode -bootstrapStandby sbin/hadoop-daemon.sh start namenode
然后啟動hdfs服務:
sbin/start-dfs.sh
啟動完成之后,執行 jps 命令,在主節點可以看到NameNode和DFSZKFailoverController進程;其他節點可以看到DataNode進程
現在通過瀏覽器可以打開相應的管理界面,以bigdata1的IP訪問:
http://192.168.0.187:50070
到這里hadoop hdfs就部署完成了,然后開始部署HBase,這里使用的版本為:hbase-0.98.18-hadoop2-bin.tar.gz
和釋放hadoop包一樣將hbase釋放到對應的目錄並進入,這里是:/bigdata/hbase/hbase-0.98.18-hadoop2
首先編輯配置文件: vim conf/hbase-env.sh
去掉JAVA_HOME前面的注釋,改為自己實際的JDK安裝路徑,和配置hadoop類似
然后,去掉export HBASE_MANAGES_ZK=true前面的注釋並改為export HBASE_MANAGES_ZK=false,配置不讓HBase管理Zookeeper
配置完這兩項之后,保存退出
編輯文件 vim conf/hbase-site.xml 在configuration標簽之間加入如下配置:
<!-- 指定HBase在HDFS上面創建的目錄名hbase --> <property> <name>hbase.rootdir</name> <value>hdfs://hadoopha/hbase</value> </property> <property> <name>hbase.master</name> <value>60000</value> </property> <!-- 開啟集群運行方式 --> <property> <name>hbase.cluster.distributed</name> <value>true</value> </property> <property> <name>hbase.tmp.dir</name> <value>/bigdata/hbase/tmp</value> </property> <property> <name>hbase.zookeeper.quorum</name> <value>bigdata2,bigdata3,bigdata4,bigdata5,bigdata6</value> </property>
分別將hadoop配置下的core-site.xml和hdfs-site.xml復制或者做軟鏈接到hbase配置目錄下:
cp /bigdata/hadoop/hadoop-2.6.0/etc/hadoop/core-site.xml conf/ cp /bigdata/hadoop/hadoop-2.6.0/etc/hadoop/hdfs-site.xml conf/
執行 vim conf/regionservers 編輯運行regionserver存儲服務的Hbase節點,就相當於hadoop slaves中的DataNode節點
這里是bigdata2~bigdata5
保存之后,配置完畢,將hbase發送至其他數據節點:
scp -r /bigdata/hbase/ bigdata2:/bigdata/ scp -r /bigdata/hbase/ bigdata3:/bigdata/ scp -r /bigdata/hbase/ bigdata4:/bigdata/ scp -r /bigdata/hbase/ bigdata5:/bigdata/ scp -r /bigdata/hbase/ bigdata6:/bigdata/
然后在bigdata1啟動Hbase Master
bin/hbase-daemon.sh start master
啟動成功,在bigdata1會增加進程:HMaster
然后在bigdata2啟動regionserver進程,其余4台集群會跟隨啟動
bin/hbase-daemons.sh start regionserver
這里注意跟隨啟動時,bigdata2到所有機器ssh確保直接進入,如果配置好的免密也最好提前都進一遍,避免需要輸入yes而導致錯誤
同時集群的時間一定同步,否則hbase會啟動失敗出現NoNode Error的異常
在bigdata2到bigdata6會增加進程:HRegionServer
到這里HBase就部署完畢,並且包含zookeeper集群高可用配置
執行命令: /bigdata/hadoop/hadoop-2.6.0/bin/hdfs dfs -ls / 可以查看hbase是否在HDFS文件系統創建成功
看到/hbase節點表示創建成功
然后執行: bin/hbase shell 可以進入Hbase管理界面
輸入 status 查看狀態
返回狀態,表示HBase可以正常使用
輸入 quit 可以退出管理,回到命令行
訪問瀏覽器http://ip:60010可以打開Hbase管理界面