HBase 僞分佈式環境搭建及基礎命令使用

一.前提條件:java

(1)文件存儲在HDFS文件系統之上。所以必須啓動hadoop服務。(namenode,datanode,resourcemanager,nodemanager,historyserver)
(2)源文件依賴於zookeeper。所以須要啓動zookeeper服務。(./zkServer ./zkCli.sh)node

二,HBase的安裝(版本:5.3.6)web

(1) tar -zxvf hbase-0.98.6-cdh5.3.6.tar.gz  -C /opt/modules  解壓文件包shell

(2) cd /opt/modules/hbase-0.98.6-cdh5.3.6/conf 進入hbase conf目錄下準備進行配置數據庫

(3) 編輯hbase-env.sh文件
##Java環境變量的配置
export JAVA_HOME=/opt/modules/jdk1.8.0_151
##是否默認zookeeper設置。自定義的話,選擇false。建議自定義
export HBASE_MANAGES_ZK=truedom

(4) 編輯hbase-site.xml文件eclipse

<configuration>
  <property>
     <name>hbase.tmp.dir</name>
     <value>/opt/modules/hbase-0.98.6-cdh5.3.6/data/tmp</value>
  </property>

  <property>
     <name>hbase.rootdir</name>
     <value>hdfs://tonyliu.local.com:8020/hbase</value>
  </property>

  <property>
   <name>hbase.cluster.distributed</name>
   <value>true</value>
  </property>

  <property>
   <name>hbase.zookeeper.quorum</name>
   <value>tonyliu.local.com</value>
  </property>

</configuration>

 (6) 編輯regionservers文件(分佈式環境能夠添加多臺)
tonyliu.local.comasync

(7)啓動Hbase
注意事項:啓動以前必定要吧/etc/hosts文件中的如下兩行註釋掉再啓動各個服務。
否則Hbase的master及regionserver服務會啓動失敗(啓動後再消失)
##127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
##::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

1.啓動master
bin/hbase-daemon.sh start master

2.啓動regionserver
bin/hbase-daemon.sh start regionserver分佈式

##jps若是出現如下2個服務說明啓動成功##oop

[liupeng@www hbase-0.98.6-cdh5.3.6]$ jps
2816 DataNode
28112 Jps
3713 org.eclipse.equinox.launcher_1.3.200.v20160318-1642.jar
22850 HMaster
2757 SecondaryNameNode
3622 Main
22939 HRegionServer
2924 NodeManager
3101 QuorumPeerMain

(8)打開Hbase的web界面
http://tonyliu.local.com:60010/master-status

端口號版本不一樣也不一樣。我用的是60010的端口。若是web界面可以正常打開。說明Hbase的配置沒有問題。

二,Hbase的基本命令1. 進入Hbase 命令行界面bin/hbase shell##其餘命令能夠直接bin/hbase進行列表查看。2.help命令查看Hbase中的shell命令help3. general於ddl相關命令及示例##general沒什麼好說了能夠經過如下命令來查看當前用戶,版本,狀態等基本信息。(1)COMMAND GROUPS:  Group name: general  Commands: status, table_help, version, whoami##shell命令中分2大塊主要的操做命令。分別是ddl於dml。下面先一塊兒來看一下ddl都有哪些經常使用命令  Group name: ddl (2) Commands: alter, alter_async, alter_status, create, describe, disable, disable_all, drop, drop_all, enable, enable_all, exists, get_table, is_disabled, is_enabled, list, show_filters  Group name: namespace  Commands: alter_namespace, create_namespace, describe_namespace, drop_namespace, list_namespace, list_namespace_tables<1> 跟關係型數據庫不一樣的是Hbase沒有show database,show table等SQL式的命令。在Hbase中有space相關的概念。好比建立database的話用以下方法【建立name_space】hbase(main):026:0> create 'liupeng:employee','info','contect','group'【查看name_space屬性】desc 'liupeng:employee'【查看全部table表】hbase(main):059:0> listTABLEliupeng:employeestudent2 row(s) in 0.0130 seconds=> ["liupeng:employee", "student"]【向table表中插入數據】hbase(main):029:0> put 'liupeng:employee','1001','info:name','liupeng'0 row(s) in 0.0300 secondshbase(main):030:0> put 'liupeng:employee','1001','info:age','34'0 row(s) in 0.0120 secondshbase(main):031:0> put 'liupeng:employee','1001','contect:mail','liupliup@cn.ibm.com'0 row(s) in 0.0070 secondshbase(main):032:0> put 'liupeng:employee','1001','contect:phone','15962459503'0 row(s) in 0.0100 secondshbase(main):033:0> put 'liupeng:employee','1001','group:number','1'0 row(s) in 0.0270 secondshbase(main):034:0> put 'liupeng:employee','1002','info:name','Jack_Ma'0 row(s) in 0.0160 secondshbase(main):035:0> put 'liupeng:employee','1002','info:age','45'0 row(s) in 0.0110 secondshbase(main):036:0> put 'liupeng:employee','1002','contect:mail','jackMa@alibaba.com'0 row(s) in 0.0100 secondshbase(main):037:0> put 'liupeng:employee','1002','contect:phone','15977634464'0 row(s) in 0.0210 secondshbase(main):038:0> put 'liupeng:employee','1002','group:number','1'0 row(s) in 0.0110 secondshbase(main):039:0> put 'liupeng:employee','1003','info:name','kevin_shi'0 row(s) in 0.0180 secondshbase(main):040:0> put 'liupeng:employee','1003','info:age','40'0 row(s) in 0.0080 secondshbase(main):041:0> put 'liupeng:employee','1003','contect:mail','kevinshi@163.com'0 row(s) in 0.0120 secondshbase(main):042:0> put 'liupeng:employee','1003','contect:phone','18665851263'0 row(s) in 0.0090 secondshbase(main):043:0> put 'liupeng:employee','1003','group:number','2'0 row(s) in 0.0110 seconds【查看錶中全部數據】hbase(main):046:0> scan 'liupeng:employee'ROW                             COLUMN+CELL 1001                           column=contect:mail, timestamp=1522202414649, value=liupliup@cn.ibm.com 1001                           column=contect:phone, timestamp=1522202430196, value=15962459503 1001                           column=group:number, timestamp=1522202455929, value=1 1001                           column=info:age, timestamp=1522202371257, value=34 1001                           column=info:name, timestamp=1522202364156, value=liupeng 1002                           column=contect:mail, timestamp=1522202508002, value=jackMa@alibaba.com 1002                           column=contect:phone, timestamp=1522202527866, value=15977634464 1002                           column=group:number, timestamp=1522202544626, value=1 1002                           column=info:age, timestamp=1522202484166, value=45 1002                           column=info:name, timestamp=1522202474669, value=Jack_Ma 1003                           column=contect:mail, timestamp=1522202590768, value=kevinshi@163.com 1003                           column=contect:phone, timestamp=1522202605976, value=18665851263 1003                           column=group:number, timestamp=1522202617893, value=2 1003                           column=info:age, timestamp=1522202568861, value=40 1003                           column=info:name, timestamp=1522202561029, value=kevin_shi【獲取表中指定數據】關於獲取數據方法不少。這裏只是簡單演示一個基本的獲取操做。hbase(main):048:0> get 'liupeng:employee','1001',['info:name','info:age','group:1']COLUMN                          CELL info:age                       timestamp=1522202371257, value=34 info:name                      timestamp=1522202364156, value=liupeng【刪除數據表】注意:Hbase中不容許直接刪除table表。要刪除的話須要先disable掉指定的表後再刪除。更改也是同樣。先disable更改後再enable。hbase(main):048:0> disable 'liupeng:employee'hbase(main):048:0> drop 'liupeng:employee'【刪除namespace】hbase(main):048:0> drop_namespace 'liupeng'【刪除表中一列數據】delete 'liupeng:employee','1002','contect:mail'註釋:'1002'指定刪除的rowkey,指定要刪除的列簇'contect:mail'。執行後會自動刪除列簇中的value值【更新表中數據】hbase(main):030:0> put 'liupeng:employee','1002','contect:mail','tony@163.com'註釋:在Hbase中更新就是put,至關於在原有的基礎上更新了數據。只要rowkey跟列簇的指定沒有錯,那麼put的value就爲更新後的value值。

相關文章
相關標籤/搜索