1. 程式人生 > >大資料之(6)hbase2.1.1版本全分散式安裝及使用

大資料之(6)hbase2.1.1版本全分散式安裝及使用

一、Hadoop安裝

具體請參見 https://blog.csdn.net/u011095110/article/details/83791734

二、Zookeeper分散式叢集安裝

1.Zookeeper下載

#進入hadoop主目錄
cd /hadoop
#下載zookeeper
wget http://mirrors.hust.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz

2.檔案配置

cd /hadoop/zookeeper-3.4.13/conf
cp zoo_sample.cfg zoo.cfg

dataDir為儲存myid的地址,需要建立,server.1/2/3 myid就為對應的1,2,3
vim myid
1

dataDir=/hadoop/data
server.1=master.hadoop:2888:3888
server.2=slave1.hadoop:2888:3888
server.3=slave2.hadoop:2888:3888

3.啟動zookeeper叢集

在每個機器上進入/hadoop/zookeeper-3.4.13/bin並執行

./zkServer.sh start
[[email protected] bin]# ./zkServer.sh status
ZooKeeper JMX enabled by default
Using config: /hadoop/zookeeper-3.4.13/bin/../conf/zoo.cfg
Mode: leader

4.檢視zookeeper啟動狀態

三、HBase下載&安裝

1.下載HBase2.1.1

進入hadoop主目錄
cd /hadoop/
下載hbase2.1.1
wget http://mirrors.hust.edu.cn/apache/hbase/2.1.1/hbase-2.1.1-bin.tar.gz
解壓hbase2.1.1
tar -zxvf hbase-2.1.1-bin.tar.gz

2.修改配置檔案

  • 修改hbase-env.sh
    #指定自己的HBASE_PID_DIR目錄,此目錄儲存pid檔案
    #建立/hadoop/data/hbase/pids目錄
    export HBASE_PID_DIR=/hadoop/data/hbase/pids
    #使用自帶的zookeeper指定為false,此處使用自己下載安裝的zookeeper
    export HBASE_MANAGES_ZK=false
    #指定自己的JAVA_HOME路徑
    export JAVA_HOME=/usr/java/jdk1.8.0_181
  • 修改hbase-site.xml
 <!-- 指定hbase master機器 -->
<property>
    <name>hbase.master</name>
    <value>hdfs://master.hadoop:60000</value>
  </property>
   <!-- hbase分散式叢集為true -->
<property>
  <name>hbase.cluster.distributed</name>
  <value>true</value>
</property>
 <!-- 指定ZK叢集地址,分別在master.hadoop,slave1.hadoop,slave2.hadoop 使用hostname配置即可上安裝了zookeeper-->
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value>master.hadoop,slave1.hadoop,slave2.hadoop</value>
  </property>
<!-- 指定獨立Zookeeper安裝路徑 -->

  <property>
    <name>hbase.zookeeper.property.dataDir</name>
    <value>/hadoop/zookeeper-3.4.13</value>
  </property>

  <!-- 指定ZooKeeper叢集埠 -->
  <property>
    <name>hbase.zookeeper.property.clientPort</name>
    <value>2181</value>
  </property>
<property>
  <name>dfs.replication</name>
  <value>1</value>
</property>
<!--此處避免一個啟動時候得錯誤-->
<property>
<name>hbase.unsafe.stream.capability.enforce</name>
<value>false</value>
</property>

配置hbase.unsafe.stream.capability.enforce是解決下面的啟動錯誤

Please check the config value of 'hbase.procedure.store.wal.use.hsync' to set the desired level of robustness and ensure the config value of 'hbase.wal.dir' points to a FileSystem mount that can provide it
  • 修改regionservers
slave1.hadoop
slave2.hadoop
  • copy htrace 相關jar到HBASE_HOME/lib目錄下
    如果不拷貝jar包出來啟動時可能報錯
2018-11-16 16:16:27,914 ERROR [main] regionserver.HRegionServer: Failed construction RegionServer
java.lang.NoClassDefFoundError: org/apache/htrace/SamplerBuilder

cd /hadoop/hbase-2.1.1/lib/client-facing-thirdparty
cp htrace-core-3.1.0-incubating.jar …/
cp htrace-core4-4.2.0-incubating.jar …/

四、啟動HBase

  • 在hbase的bin目錄下,執行./start-hbase.sh
    Master節點
[[email protected] bin]# jps
836 HMaster
29797 QuorumPeerMain
22150 ResourceManager
21976 SecondaryNameNode
21742 NameNode
10030 Jps
  • jps檢視hmaster和zookeeper程序是否已存在
    QuorumPeerMain為Zookeeper程序,HMaster是master程序,HRegionServer是regionserver程序;
  • 檢視RegionServer程序是否已啟動
    Slave節點
[[email protected] conf]# jps
15889 HRegionServer
19364 Jps
26437 NodeManager
26333 DataNode
14574 QuorumPeerMain

五、驗證HBase

  • hbase shell基本操作
//進入HBase Shell
[[email protected] ~] hbase shell

//檢視當前HBase有哪些表
hbase(main):> list

//建立表t_user,cf1和cf2是列族,列族一般不超過3個
hbase(main):> create 't_user','name','password'

//獲得表t_user的描述資訊
hbase(main):> describe 't_user'

//禁用表
hbase(main):> disable 't_user'

//刪除表,刪除表之前要先把表禁用掉
hbase(main):> drop 't_user'

//查詢表是否存在
hbase(main):> exists 't_user'

//檢視全表資料
hbase(main):> scan 't_user'

//插入資料,分別是表名、key、列(列族:具體列)、值。HBase是面向列的資料庫,列可無限擴充
hbase(main):> put 't_user' ,'001','cf1:name','chenxj'
hbase(main):> put 't_user' ,'001','cf1:age','18'
hbase(main):> put 't_user' ,'001','cf2:sex','man'
hbase(main):> put 't_user' ,'002','cf1:name','chenxj'
hbase(main):> put 't_user' ,'002','cf1:address','fuzhou'
hbase(main):> put 't_user' ,'002','cf2:sex','man'

//獲取資料,可根據key、key和列族等進行查詢
hbase(main):> get 't_user','001'
hbase(main):> get 't_user','002','cf1'
hbase(main):> get 't_user','001','cf1:age'

  • web ui訪問 yourip:16010
    譬如我的是172.16.16.15:16010
    在這裡插入圖片描述