1. 程式人生 > 實用技巧 >大資料的那些面試題及答案(二)HBase

大資料的那些面試題及答案(二)HBase

文章目錄

什麼是Hbase

HBase是一個高可靠、高效能、面向列、可伸縮的分散式資料庫,是谷歌BigTable的開源實現,主要用來 儲存非結構化和半結構化的鬆散資料

Hbase的本質

面向列的分散式資料庫

hbase來源於谷歌的哪篇論文

BigTable

Hbase埠號

16010

Hbase的資料的維度及代表的意思

hbase可以視為一個“四維座標”資料,維度分別代表[行鍵, 列族, 列限定符, 時間戳]

rowkey設計原則

唯一原則:必須在設計上保證其唯一性,Rowkey是按照字典順序儲存的,所以設計Rowkey時,要充分利用這一特點,將往常一起讀取的資料儲存到一塊。
長度原則:越短越好,最大長度為64Kb,太長的影響有兩點。
(1)極大影響了HFile的儲存效率。
(2)快取memstore不能得到有效利用,快取不能存放太多的資訊,造成檢索效率的降低。
雜湊原則: 由於region儲存是按行鍵儲存的,如果行鍵的值都是類似的那就容易導致資料都堆在一個Rowkey上產生熱點問題。所以可以通過一下方法讓Rowkey儘量雜湊化。
(1)加鹽在Rowkey前生成隨機數。
(2)反轉把最沒有用的放在前面以增加隨機性。

HBASE原理機制

(1)HBASE是一款應用在大資料情境下的資料庫。
(2)HBASE是分散式的利用hdfs作為儲存系統的面向列的資料庫。
(3)HBASE的叢集中主要由Master和Regionserver以及zookeeper組成。Master為Regionserver分配region
(4)HBASE使用Memstore和storeFile儲存對錶的更新,使用者寫入的資料首先會放入Memstore,當Memstore滿了以後會flush成一個storeFile(底層實現是HFile)。
(5)HBASE使用和bigTable非常相同的資料模型。使用者儲存資料行在一個表裡,在HBASE中資料按主鍵排序,同時表按主鍵劃分多個Region。

Hbase怎麼更新資料

通過=追版本形式執行更新操作。
並不會刪除資料舊的版本,而是生成一個新的版本,舊有的版本仍然保留(這是和HDFS只允許追加不允許修改的特性相關的)

HBase系統架構由什麼組成

客戶端、Zookeeper伺服器 、Master(一個)、Region伺服器(多個)

HBase中最核心的模組是?

Region伺服器

HBase最小儲存資料的單元是?HBase在hdfs上儲存的形式是?

HFile

HBase的相關操作命令(對錶、對資料)

分隔 用‘ ’註明
對錶

 (1)建立表 create
  語句:create 't1','f1' 		 ti為表名,f1為列族
 (2)修改表 alter
 語句:alter 't1','f2' 		增加一個列族
 (3)刪除表 drop
 語句:diasble 't1' 		drop 't1'  刪除表時分兩步,先disable再drop
 (4)查看錶的結構  describe
 語句:describe 't1'
 (5)查詢表中的資料行數 count
 count 't1', {INTERVAL => 100, CACHE => 500}		
 語句:查詢表t1中的行數,每100條顯示一次,快取區為500
(6)掃描表 scan
  語句:scan 't1',{LIMIT=>5}		掃描表t1的前5條資料
  語句:scan 't1',{STARTROW=>'2',STOPROW=>'4'}		掃描表t1的第2行到第4行
  語句: scan 'score',{COLUMNS=>'egrade:cet4',VERSIONS=>5} 		掃描表score的grade:cet4,版本號為5的資訊
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

對資料

(1) 插入、新增、修改資料  put
 語句:put 't1','001','f1:col1','value01'		t1是表名,001是行鍵、f1是列族、col1是列、value01是值
 (2)查詢、取出資料  get
 語句:get 't1','001', 'f1:col1‘
 (3)刪除資料  delete
 語句:delete 't1','001','f1:col1'
 刪除整行資料  deleteall
 語句:deleteall 't1','001'
 刪除表中的所有資料 truncate
 語句:truncate 't1'