大資料之(6)hbase2.1.1版本全分散式安裝及使用
阿新 • • 發佈:2018-11-17
一、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 …/
- 拷貝到slave機器
scp -r /hadoop/hbase-2.1.1 [email protected]:/hadoop/
scp -r /hadoop/hbase-2.1.1 [email protected]:/hadoop/
四、啟動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