Hadoop3集群搭建之——hbase安裝及簡單操作


折騰了這么久,hbase終於裝好了

-------------------------

上篇:

Hadoop3集群搭建之——虛擬機安裝

Hadoop3集群搭建之——安裝hadoop,配置環境

Hadoop3集群搭建之——配置ntp服務

Hadoop3集群搭建之——hive安裝

 
        

在安裝之前,查了一下資料,關於hbase與hadoop兼容性的。

最開始看hadoop的時候,在好像慕課網上看的,hadoop全家桶之間的兼容性問題(以前被java web的各種jar包坑壞了的Java菜鳥,心理有點小陰影),還有特意出的cdh版本(Cloudera 公司出的,每個hadoop的cdh版本,都有對應的其他組件的cdh版本)

然后,感覺就壞了,我裝的hadoop 3.0.1是最新出的,hbase的最新版本肯定對應不上啊。

然后我就發現了下面這張,hbase 兼容hadoop的版本圖:

"S" = supported  

"X" = not supported 

"NT" = Not tested

果然,hadoop3沒有對應的hbase版本

下載最新的hbase2.0.2,查看lib目錄發現hadoop 的版本是: 2.7.4

 

猶豫再三

突然想起,公司大神搭的新平台就是hadoop3,里面也有用到hbase,看下版本,得到如下答案:

hbase-1.2.6

what fuck? 看不懂,不過不影響,模仿一下。/偷笑/偷笑

然后就去官網: 下載地址    下個了1.2.6。

安裝步驟如下:

1、上傳安裝包到服務器、解壓,重命名:

tar -zxvf hbase-1.2.6-bin.tar.gz
mv hbase-1.2.6-bin.tar.gz hbase1.2.6

2、配置hbase環境變量

vi .baserc

#添加如下內容

 #hbase
 HBASE_HOME=/opt/hadoop/hbase1.2.6
  export PATH=$HBASE_HOME/bin:$PATH

#使配置文件生效

source .baserc

3、修改 /conf/hbase-env.sh

找到如下兩行,關閉注釋,修改如下:

export JAVA_HOME=/opt/hadoop/jdk1.8  #配置jdk路徑

#使用hbase自帶的zookeeper
export HBASE_MANAGES_ZK=true  

4、修改/conf/hbase-site.xml

添加如下內容:

 23 <configuration>
 24         <property>
 25         <name>hbase.rootdir</name> <!-- hbase存放數據目錄 -->
 26         <value>hdfs://venn05:8020/hbase/hbase_db</value>
 27 
 28           <!-- 端口要和Hadoop的fs.defaultFS端口一致-->
 29       </property>
 30       <property>
 31         <name>hbase.cluster.distributed</name> <!-- 是否分布式部署 -->
 32         <value>true</value>
 33       </property>
 34       <property>
 35         <name>hbase.zookeeper.quorum</name> <!-- zookooper 服務啟動的節點,只能為奇數個 -->
 36         <value>venn05,venn06,venn07</value>
 37       </property>    
 38 
 39        <property><!--zookooper配置、日志等的存儲位置,必須為以存在 -->
 40           <name>hbase.zookeeper.property.dataDir</name>
 41           <value>/opt/hadoop/hbase1.2.6/hbase/zookeeper</value>
 42        </property>
 43             <property><!--hbase web 端口 -->
 44             <name>hbase.master.info.port</name>
 45            <value>16010</value>
 46         </property>
 47 </configuration>
注:zookeeper有這樣一個特性:集群中只要有過半的機器是正常工作的,那么整個集群對外就是可用的。
也就是說如果有2個zookeeper,那么只要有1個死了zookeeper就不能用了,因為1沒有過半,
所以2個zookeeper的死亡容忍度為0;同理,要是有3個zookeeper,一個死了,還剩下2個正常的,
過半了,所以3個zookeeper的容忍度為1;
同理你多列舉幾個:2->0;3->1;4->1;5->2;6->2會發現一個規律,2n和2n-1的容忍度是一樣的,
都是n-1,所以為了更加高效,何必增加那一個不必要的zookeeper

5、配置slaver

修改 regionservers 文件,刪除localhost,添加region server 的ip

[hadoop@venn05 conf]$ more regionservers 
venn06
venn07
venn08

5、發送.baserc 和hbase到其他節點

scp .bashrc venn06:/opt/hadoop/
scp .bashrc venn07:/opt/hadoop/
scp .bashrc venn08:/opt/hadoop/
scp -r hbase1.2.6 venn06:/opt/hadoop/
scp -r hbase1.2.6 venn07:/opt/hadoop/
scp -r hbase1.2.6 venn08:/opt/hadoop/

配置完成,啟動看下效果

hbase 啟動命令:

start-all.sh #啟動hadoop
start-hbase.sh #會自動啟動其他節點

查看主節點進程:

[hadoop@venn05 conf]$ jps 3072 NodeManager
5009 Jps
2180 NameNode
2533 SecondaryNameNode
3703 HMaster
4043 Main
2765 ResourceManager
3566 HQuorumPeer

查看其他節點進程:

[hadoop@venn06 ~]$ jps
2225 HQuorumPeer
2386 HRegionServer
2039 NodeManager
1913 DataNode
3262 Jps

查看web界面:

地址:http://venn05:16010 如下:

啟動成功,嘗試一下:

啟動hbase 客戶端:

[hadoop@venn05 ~]$ hbase shell  #啟動hbase客戶端
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/hadoop/hbase1.2.6/lib/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop/hadoop3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/hadoop/hive2.3.3/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
HBase Shell; enter 'help<RETURN>' for list of supported commands.
Type "exit<RETURN>" to leave the HBase Shell
Version 1.2.6, rUnknown, Mon May 29 02:25:32 CDT 2017

hbase(main):001:0> create 'test','cf'  #創建一個test表,一個cf 列簇
0 row(s) in 2.4480 seconds

=> Hbase::Table - test
hbase(main):002:0> list #查看hbase 所有表
TABLE
test
venn
2 row(s) in 0.0280 seconds

=> ["test", "venn"]
hbase(main):003:0> put 'test','1000000000','cf:name','venn' #put一條記錄到表test,rowkey 為 1000000000,放到 name列上
0 row(s) in 0.1650 seconds

hbase(main):004:0> put 'test','1000000000','cf:sex','male'  #put一條記錄到表test,rowkey 為 1000000000,放到 sex列上
0 row(s) in 0.0410 seconds

hbase(main):005:0> put 'test','1000000000','cf:age','26'    #put一條記錄到表test,rowkey 為 1000000000,放到 age列上
0 row(s) in 0.0170 seconds

hbase(main):006:0> count 'test'  #查看表test 有多少條數據
1 row(s) in 0.1220 seconds

=> 1
hbase(main):007:0> get 'test','cf'
COLUMN CELL
0 row(s) in 0.0240 seconds

hbase(main):008:0> get 'test','1000000000'  #獲取數據
COLUMN CELL
cf:age timestamp=1526571007485, value=26
cf:name timestamp=1526571006326, value=venn
cf:sex timestamp=1526571006411, value=male
3 row(s) in 0.0250 seconds

hbase(main):009:0> disable 'test'  #禁用表 test
0 row(s) in 2.2670 seconds

hbase(main):010:0> drop 'test'  #刪除表
0 row(s) in 1.2490 seconds

hbase(main):011:0> list
TABLE
venn
1 row(s) in 0.0100 seconds

=> ["venn"]

 

搞定,收工

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM