Hbase的完全分佈式集羣搭建

Hbase的完全分佈式集羣搭建

一.準備工作

1.安裝三臺虛擬機

三臺虛擬機,最小的集羣規模數量,安裝過程省略。

2. 所用軟件版本

 1.操作系統 CentOS-7-x86_64-Minimal-1804.iso
 2.haoop版本 hadoop-2.7.1.tar.gz
 3.Zookeeper版本 zookeeper-3.4.6.tar.gz
 4.JDK版本 jdk-8u191-linux-x64.rpm
 5. Hbase版本  hbase-2.0.0-bin.tar.gz

3.進行服務器配置

服務名 node1 node2 node3
NameNode Y(主) Y(備)
DataNode Y Y Y
Journal node Y Y Y
Zookeeper Y Y Y
ResourceManage Y(主) Y(備)
NodeManage Y Y Y

3.1 修改主機名映射

[root@X ~]# vim /etc/hosts
將所有節點都配置上,以便能夠互相訪問

3.2 ssh免密登錄

[root@nodex ~]# ssh-keygen -t rsa
[root@nodex ~]# ssh-copy-id node1
[root@nodex ~]# ssh-copy-id node2
[root@nodex ~]# ssh-copy-id node3

3.3 進行時鐘同步(一致可省略)

[root@nodeX ~]# date -s '2020-07-02 10:34:24'
2020年 7月 02日 星期四 10:34:24 CST
[root@nodeX ~]# clock -w
[root@nodeX ~]# date
2020年 7月 02日 星期四 10:34:24 CST

3.4 上傳相關軟件

在這裏插入圖片描述

3.5 安裝JDK

root@nodeX opt]# rpm -ivh jdk-8u191-linux-x64.rpm
警告:jdk-8u191-linux-x64.rpm: 頭V3 RSA/SHA256 Signature, 密鑰 ID ec551f03: NOKEY
準備中...                          ################################# [100%]
正在升級/安裝...
   1:jdk1.8-2000:1.8.0_191-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...

二.Hadoop分佈式集羣搭建

1.安裝Zookeeper

[root@nodex ~]# tar -zxf zookeeper-3.4.6.tar.gz -C /usr
[root@nodex ~]# vi /usr/zookeeper-3.4.6/conf/zoo.cfg
tickTime=2000
dataDir=/root/zkdata
clientPort=2181
initLimit=5
syncLimit=2
server.1=node1:2887:3887
server.2=node2:2887:3887
server.3=node3:2887:3887



# node1執行此指令
[root@node1 ~]# cd zkdata/
[root@node1 zkdata]# vi myid
1

# node2執行此指令
[root@node2 ~]# cd zkdata/
[root@node2 zkdata]# vi myid
2

# node3執行此指令
[root@node3 ~]# cd zkdata/
[root@node3 zkdata]# vi myid
3

啓動zookeeper
[root@nodeX zookeeper-3.4.6]# ./bin/zkServer.sh start conf/zoo.cfg


# 確認zookeper服務是否正常:方法一
[root@nodex ~]# jps
1777 QuorumPeerMain
1811 Jps
# 確認zookeper服務是否正常:方法二
[root@nodex ~]# /usr/zookeeper-3.4.6/bin/zkServer.sh status /usr/zookeeper-3.4.6/conf/zoo.cfg
JMX enabled by default
Using config: /usr/zookeeper-3.4.6/conf/zoo.cfg
Mode: leader

2.安裝Hadoop

[root@nodeX opt]# tar -zxf hadoop-2.7.1.tar.gz -C install/


#3. 配置java和hadoop的環境變量
[root@nodex ~]# vi ~/.bashrc
HADOOP_HOME=/opt/install/hadoop-2.7.1
JAVA_HOME=/usr/java/latest
CLASSPATH=.
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export JAVA_HOME
export CLASSPATH
export PATH
export HADOOP_HOME
[root@nodex ~]# source ~/.bashrc

2.1 修改hadoop配置文件

  • core-site.xml
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://node:9000</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/opt/install/hadoop-2.7.1/hadoop-${user.name}</value>
</property>
<property>
  <name>fs.trash.interval</name>
  <value>30</value>
</property>
<property>
  <name>net.topology.script.file.name</name>
  <value>/opt/install/hadoop-2.7.1/etc/hadoop/rack.sh</value>
</property>
  • 創建機架腳本文件,該腳本可以根據IP判斷機器所處的物理位置
while [ $# -gt 0 ] ; do
	nodeArg=$1
	exec</opt/install/hadoop-2.7.1/etc/hadoop/topology.data
	result=""
	while read line ; do
        ar=( $line )
        if [ "${ar[0]}" = "$nodeArg" ] ; then
        result="${ar[1]}"
	fi
	done
    shift
    if [ -z "$result" ] ; then
    echo -n "/default-rack"
    else
    echo -n "$result "
    fi
done


[root@nodex hadoop]# chmod u+x rack.sh
[root@nodeX hadoop]# vi topology.data
192.168.19.149 /rack2
192.168.19.150 /rack1
192.168.19.151 /rack3
[root@nodeX hadoop]# /opt/install/hadoop-2.7.1/etc/hadoop/rack.sh 92.168.19.150
/rack1


  • hdfs-site.xml
[root@nodex hadoop] vi hdfs-site.xml
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>
<property>
	<name>dfs.ha.automatic-failover.enabled</name>
	<value>true</value>
</property>
<property>
	<name>ha.zookeeper.quorum</name>
	<value>node1:2181,node2:2181,node3:2181</value>
</property>
<property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
</property>
<property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>node1:9000</value>
</property>
<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>node2:9000</value>
</property>
<property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
</property>
<property>
    <name>dfs.client.failover.proxy.provider.mycluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
</property>
<property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
</property>
  • slaves
[root@nodex hadoop]# vi slaves
node1
node2
node3

3.啓動Hadoop 的HA集羣

[root@nodex ~]# hadoop-daemon.sh start journalnode
[root@node1 ~]# hdfs namenode -format
[root@node1 ~]# hadoop-daemon.sh start namenode
[root@node2 ~]# hdfs namenode -bootstrapStandby
[root@node2 ~]# hadoop-daemon.sh start namenode
# zkfc: zookeeper failover controller
[root@node1|2 ~]# hdfs zkfc -formatZK (可以在node1或者node2任意一臺註冊namenode信息)
[root@node1 ~]# hadoop-daemon.sh start zkfc (哨兵)
[root@node2 ~]# hadoop-daemon.sh start zkfc (哨兵)
[root@nodeX ~]# hadoop-daemon.sh start datanode

注意:CentOS7需要安裝一箇中間依賴服務

[root@nodex ~]# yum install -y psmisc

4. YARN的HA集羣

  • mapred-site.xml

    [root@nodex ~]# cp /opt/install/hadoop-2.7.1/etc/hadoop/mapred-site.xml.template /opt/install/hadoop-2.7.1/etc/hadoop/mapred-site.xml
    [root@nodex ~]# vi /opt/install/hadoop-2.7.1/etc/hadoop/mapred-site.xml
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
  • yarn-site.xml

    <property>
        <name>yarn.nodemanager.aux-services</name>
    	<value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.resourcemanager.cluster-id</name>
        <value>cluster1</value>
    </property>
    <property>
        <name>yarn.resourcemanager.ha.rm-ids</name>
        <value>rm1,rm2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm1</name>
        <value>node2</value>
    </property>
    <property>
        <name>yarn.resourcemanager.hostname.rm2</name>
        <value>node3</value>
    </property>
    <property>
        <name>yarn.resourcemanager.zk-address</name>
        <value>node1:2181,node2:2181,node3:2181</value>
    </property>
    
  • 啓動YARN

    [root@node2 ~]# yarn-daemon.sh start resourcemanager
    [root@node3 ~]# yarn-daemon.sh start resourcemanager
    [root@nodeX ~]# yarn-daemon.sh start nodemanager
    
  • 查看ResourceManager HA狀態

    [root@node1 ~]# yarn rmadmin -getServiceState rm1
    active
    [root@node1 ~]# yarn rmadmin -getServiceState rm2
    standby
    

三.Hbase 完全分佈式集羣搭建

  • 解壓相關包

    [root@nodeX opt]# tar -zxf hbase-2.0.0-bin.tar.gz -C install/
    
  • 修改配置文件hbase-site.xml

    <property>
        <name>hbase.rootdir</name>
        <value>hdfs://mycluster/hbase</value>
    </property>
    <property>
        <name>hbase.cluster.distributed</name>
        <value>true</value>
    </property>
    <property>
        <name>hbase.zookeeper.quorum</name>
        <value>node1,node2,node3</value>
    </property>
    <property>
        <name>hbase.zookeeper.property.clientPort</name>
        <value>2181</value>
    </property>
    
  • 修改配置文件regionservers

    [root@nodex ~]# vi /opt/install/hbase-2.0.0/conf/regionservers
    node1
    node2
    node3
    
  • 修改環境變量配置

    [root@nodex ~]# vi .bashrc
    HBASE_MANAGES_ZK=false
    HBASE_HOME=/opt/install/hbase-2.0.0
    HADOOP_HOME=/opt/install/hadoop-2.7.1
    JAVA_HOME=/usr/java/latest
    CLASSPATH=.
    PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HBASE_HOME/bin
    export JAVA_HOME
    export CLASSPATH
    export PATH
    export HADOOP_HOME
    export HBASE_HOME
    export HBASE_MANAGES_ZK
    [root@nodex ~]# source .bashrc
    

    啓動服務

    • 啓動HMaster

      [root@nodex ~]# hbase-daemon.sh start master
      
    • 啓動HRegionServe

      [root@nodex ~]# hbase-daemon.sh start regionserver
      

    驗證結果

    啓動服務

    • 啓動HMaster

      [root@nodex ~]# hbase-daemon.sh start master
      
    • 啓動HRegionServe

      [root@nodex ~]# hbase-daemon.sh start regionserver
      

    驗證結果

在這裏插入圖片描述

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