工作日誌:一文總結HBase從搭建到實操,大家一起進步

語言: CN / TW / HK

公司的大資料部門一直是我非常想要進入的地帶,純粹個人愛好,但是因為當時大資料部門成立選拔人的時候,就是個小渣渣,所以完美錯過,後悔臉,奉勸新人,別嫌棄累,能多學一點是一點,天知道你啥時候會有機會晉升,這次,因為部門整合,我們這邊也需要分擔一部分大資料的研發工作,剛好主要部分落在我們小組,組長一臉奸笑的跟我說:小夥子,你明白的,好好表現,嗯?這是有動靜啊,然後這老油條就啥也不說了,沒關係,反正lz喜歡大資料,這下可有用武之地了,那沉寂已久的虛擬機器,開始吧,今天的內容是我為了恢復一下自己的手感,要搭建在自己的pc上練習一下,起碼命令什麼的要會把,後面會持續更新

文章首發公眾號:Java架構師聯盟

好了,話不多說,開始今天的正題

hbase偽分散式搭建

修改hbase-env.sh

export JAVA_HOME=/opt/software/jdk1.8

export HBASE_MANAGES_ZK=true

第一個配置java環境變數

第二個配置在本機器上的HBase可以自己啟動zookeeper和使用

修改reginserver

node1

修改hbase-site.xml

<property>

 <name>hbase.rootdir</name>

 <value>hdfs://node1:9000/hbase</value>

</property>

<property>

 <name>hbase.cluster.distributed</name>

 <value>true</value>

</property>

<property>

 <name>hbase.zookeeper.quorum</name>

 <value>master</value>

</property>

<property>

 <name>dfs.replication</name>

 <value>1</value>

</property>

hbase.rootdir配置在hdfs檔案系統上hbase儲存的路徑

hbase.cluster.distributed配置是否是分散式的

hbase.zookeeper.quorum配置zookeeper在哪個節點上

dfs.replication配置副本個數

啟動

啟動之前,講Hadoop下的hdfs-site.xml檔案拷貝到hbase的配置檔案下

啟動hbase,在bin目錄下執行命令start-hbase.sh

**啟動hbase之前,確保hadoop是執行正常的,並且可以寫入檔案**

因為這個地方,我是將資料儲存在hdfs,而不是本地,如果你想儲存在本地的話 ,只需要將

 <value>hdfs://node1:9000/hbase</value>

這個配置路徑改為本地即可

使用瀏覽器訪問http://master:16010,可以進入和hadoop類似的web管理頁面

下面就是實操了

實際操作

\1. 啟動 shell 介面命令:hbase shell

成功啟動 hbase 服務後,輸入 hbase shell 命令,按回車即可進入 shell 介面。

img

\2. 檢視命令幫助文件:help

命令格式 1:help

在 shell 介面裡,輸入 help 命令,按回車,將顯示 shell 的所有命令資訊。

img

命令格式 2:help ‘命令’

例如:檢視 create 命令的說明,輸入 help‘create’

按回車,將顯示 create 命令的使用說明。

img

\3. 退出 shell 介面命令:quit 或 exit

輸入 quit 或 exit 按回車,即可退出 shell 介面。

img

\4. 建立表命令:create

命令格式 1:create ‘表名稱’,‘列族 1’,‘列族 2’,......

例如 :建立 表名稱 為 student ,列 族 1 為 base_info,列族 2 為 class_info, 列族 3 為other_info 的表。

輸入命令:create 'student','base_info','class_info','other_info' 按回車,結果如下:

img

命令格式 2:create '表名稱', {NAME => '列族 1'}, {NAME => '列族 2'}, {NAME => '列族 3',......}

例如:建立表名稱為 school,列族 1 為 base_info,列族 2 為 teacher_info,列族 3 為 student_info 的表。

輸 入 命 令 : create 'school', {NAME => 'base_info'}, {NAME => 'teacher_info'}, {NAME => 'student_info'} 顯示結果如下:

img

備註:建立表還有很多種命令格式,請查閱幫助文件。

\5. 列出所有表的命令:list

img

說明:已經存在 5 張表,分別為 mytable,school,student,tb1,tb2 表。

\6. 查看錶結構資訊命令:describe 或 desc

命令格式:describe ‘表名’

例如:檢視 student 表結構資訊。

輸入命令:describe ‘student’,如下圖:

img

\7. 查看錶資料命令:scan

命令格式:scan ‘表’

例如:檢視 student 的資料。

輸入命令:scan ‘student’按回車,顯示結果如下:

img

結果說明,student 表暫時沒有資料。

\8. 插入、修改或更新資料命令:put

Hbase 修改或者更新資料實質上也是新增新資料,只是舊版本的資料沒有被顯示出來或者 已經被清除。

插入資料命令格式:put ‘表名’,‘行值’,‘列族:列名’,‘資料’

例如 1:向表 stduent 中行 1,列族 base_info 加入列 name,新增資料 xiaoming

輸入命令: put 'student','1','base'

img

查看錶是否有資料,輸入命令:scan ‘student’,按回車,顯示結果如下:

img

例如 2:向表 stduent 中行 1,列族 class_info 加入列 grade,新增資料 2018

輸入命令: put 'student','1','class_info:grade','2018' 按回車,顯示結果如下:

img

查看錶是否有資料,輸入命令:scan ‘student’,按回車,顯示結果如下:

img

\9. 獲取某一行資料命令:get

命令格式 1:get '表名','行'

例如:查看錶 stduent 中行 1 的資料

輸入命令:get 'student','1' 按回車,顯示結果如下:

img

命令格式 2:get '表名','行','列族:列'

例如:查看錶 stduent 中行 1,列族 base_info 中列 name 的資料

輸入命令:get 'student','1' , 'base_info:name' 按回車,顯示結果如下:

img

命令格式 3:get '表名','行',{COLUMN=>'列族',VERSIONS=>版本數 n} 獲取某一行的某個列族最新的 n 個版本資料。

列如:獲取 student 錶行 1,列族 class_info 最新 4 個版本的資料

輸入命令:get 'student',1,{COLUMN=>'class_info',VERSIONS=>4}

img

備註:獲取表資料還有很多種命令格式,請查閱幫助文件。

\10. 刪除制定單元格的資料命令:delete

命令格式:delete ‘表’,‘行’,‘列’,時間戳

例如:刪除 student 錶行 1,列族 base_info 中 name 的資料

輸入命令:delete 'student','1','base_info:name',1533174244970

執行命令之前,先後利用 scan 查看錶資訊,結果如下

img

\11. 統計表中的行數命令:count

命令格式:count ‘表名’

例如:檢視 studen 表的行數

輸入命令:count ‘student’結果如下

img

\12. 清空表資料命令:truncate

命令格式:truncate ‘表名’

例如:清空表 tb2 的資料

輸入命令:truncate ‘tb2’,命令執行前後用 scan 查看錶資料,如下圖

img

說明資料已經清空。

注意

xshell無法刪除:修改檔案--屬性