1. 程式人生 > >大資料Hbase 面試題

大資料Hbase 面試題

hbase 的特點是什麼

 (1) Hbase一個分散式的基於列式儲存的資料庫,基於Hadoop的hdfs儲存,zookeeper進行管理。

(2) Hbase適合儲存半結構化或非結構化資料,對於資料結構欄位不夠確定或者雜亂無章很難按一個概念去抽取的資料。

(3) Hbase為null的記錄不會被儲存.

(4)基於的表包含rowkey,時間戳,和列族。新寫入資料時,時間戳更新,同時可以查詢到以前的版本.

(5) hbase是主從架構。hmaster作為主節點,hregionserver作為從節點。

Hbase和hive 有什麼區別

Hive和Hbase是兩種基於Hadoop的不同技術--Hive是一種類SQL 的引擎,並且執行MapReduce 任務,Hbase 是一種在Hadoop之上的NoSQL的Key/vale資料庫。當然,這兩種工具是可以同時使用的。就像用Google 來搜尋,用FaceBook 進行社交一樣,Hive 可以用來進行統計查詢,HBase 可以用來進行實時查詢,資料也可以從Hive 寫到Hbase,設定再從Hbase 寫回Hive。

Hive是一個構建在Hadoop 基礎之上的資料倉庫。通過Hive可以使用HQL語言查詢存放在HDFS 上的資料。

HQL是一種類SQL語言,這種語言最終被轉化為Map/Reduce. 雖然Hive提供了SQL查詢功能,但是Hive 不能夠進行互動查詢,因為它只能夠在Haoop上批量的執行Hadoop。

Hive 被分割槽為表格,表格又被進一步分割為列簇。列簇必須使用schema 定義,列簇將某一型別列集合起來(列不要求schema定義)。

限制 :

Hive 目前不支援更新操作。

另外,由於hive在hadoop上執行批量操作,它需要花費很長的時間,通常是幾分鐘到幾個小時才可以獲取到查詢的結果。

Hive 適合用來對一段時間內的資料進行分析查詢,例如,用來計算趨勢或者網站的日誌。

Hive 不應該用來進行實時的查詢。因為它需要很長時間才可以返回結果。

HBase 查詢是通過特定的語言來編寫的,這種語言需要重新學習。類SQL 的功能可以通過Apache Phonenix 實現,但這是以必須提供schema 為代價的。另外,Hbase 也並不是相容所有的ACID 特性,雖然它支援某些特性。最後但不是最重要的--為了執行Hbase,Zookeeper是必須的,zookeeper 是一個用來進行分散式協調的服務,這些服務包括配置服務,維護元資訊和名稱空間服務。

Hbase非常適合用來進行大資料的實時查詢。Facebook用Hbase 進行訊息和實時的分析。它也可以用來統計Facebook的連線數。

HBase 是一種Key/Value 系統,它執行在HDFS 之上。和Hive 不一樣,Hbase 的能夠在

它的資料庫上實時執行,而不是執行MapReduce 任務。

參考網址:http://www.cnblogs.com/justinzhang/p/4273470.html

描述Hbase的rowKey的設計原則.

Rowkey長度原則

Rowkey 是一個二進位制碼流,Rowkey 的長度被很多開發者建議說設計在10~100 個位元組,

不過建議是越短越好,不要超過16 個位元組。

原因如下:

(1)資料的持久化檔案HFile 中是按照KeyValue 儲存的,如果Rowkey 過長比如100 個

位元組,1000 萬列資料光Rowkey 就要佔用100*1000 萬=10 億個位元組,將近1G 資料,這會極

大影響HFile 的儲存效率;

(2)MemStore 將快取部分資料到記憶體,如果Rowkey 欄位過長記憶體的有效利用率會降

低,系統將無法快取更多的資料,這會降低檢索效率。因此Rowkey 的位元組長度越短越好。

(3)目前作業系統是都是64 位系統,記憶體8 位元組對齊。控制在16 個位元組,8 位元組的

整數倍利用作業系統的最佳特性。

Rowkey雜湊原則

如果Rowkey 是按時間戳的方式遞增,不要將時間放在二進位制碼的前面,建議將Rowkey

的高位作為雜湊欄位,由程式迴圈生成,低位放時間欄位,這樣將提高資料均衡分佈在每個

Regionserver 實現負載均衡的機率。如果沒有雜湊欄位,首欄位直接是時間資訊將產生所有

新資料都在一個 RegionServer 上堆積的熱點現象,這樣在做資料檢索的時候負載將會集中

在個別RegionServer,降低查詢效率。

Rowkey唯一原則

必須在設計上保證其唯一性。

描述Hbase中scan和get的功能以及實現的異同.

HBase的查詢實現只提供兩種方式:

1、按指定RowKey 獲取唯一一條記錄,get方法(org.apache.hadoop.hbase.client.Get)

Get 的方法處理分兩種 : 設定了ClosestRowBefore 和沒有設定的rowlock .主要是用來保證行的事務性,即每個get 是以一個row 來標記的.一個row中可以有很多family 和column.

2、按指定的條件獲取一批記錄,scan方法(org.apache.Hadoop.hbase.client.Scan)實現條件查詢功能使用的就是scan 方式.

1)scan 可以通過setCaching 與setBatch 方法提高速度(以空間換時間);

2)scan 可以通過setStartRow 與setEndRow 來限定範圍([start,end)start 是閉區間,

end 是開區間)。範圍越小,效能越高。

3)、scan 可以通過setFilter 方法新增過濾器,這也是分頁、多條件查詢的基礎。

請描述Hbase中scan物件的setCache和setBatch 方法的使用.

為設定獲取記錄的列個數,預設無限制,也就是返回所有的列.每次從伺服器端讀取的行數,預設為配置檔案中設定的值.

23 請詳細描述Hbase中一個Cell 的結構

HBase 中通過row 和columns 確定的為一個存貯單元稱為cell。

Cell:由{row key, column(=<family> + <label>), version}唯一確定的單元。cell 中的數

據是沒有型別的,全部是位元組碼形式存貯。

請描述如何解決Hbase中region太小和region太大帶來的衝突.

Region過大會發生多次compaction,將資料讀一遍並重寫一遍到hdfs 上,佔用io,region過小會造成多次split,region 會下線,影響訪問服務,調整hbase.hregion.max.filesize 為256m.

以 start-hbase.sh 為起點,Hbase 啟動的流程是什麼?

start-hbase.sh 的流程如下:

1.執行 hbase-config.sh

hbase-config.sh的作用:

1>.裝載相關配置,如HBASE_HOME目錄,conf目錄,regionserver機器列表,JAVA_HOME 目錄等,它會呼叫$HBASE_HOME/conf/hbase-env.sh .

2>.解析引數(0.96 版本及以後才可以帶唯一引數 autorestart,作用就是重啟)

3>.呼叫 hbase-daemon.sh 來啟動 master.

4>.呼叫 hbase-daemons.sh 來啟動 regionserver zookeeper master-backup.

2.hbase-env.sh 的作用:

主要是配置 JVM 及其 GC 引數,還可以配置 log 目錄及引數,配置是否需要 hbase 管

理 ZK,配置程序 id 目錄等.

3.hbase-daemons.sh 的作用:根據需要啟動的程序,

如 zookeeper,則呼叫 zookeepers.sh

如 regionserver,則呼叫 regionservers.sh

如 master-backup,則呼叫 master-backup.sh

4.zookeepers.sh 的作用:

如果 hbase-env.sh 中的 HBASE_MANAGES_ZK"="true",那麼通過ZKServerTool這個類解析xml配置檔案,獲取 ZK 節點列表,然後通過 SSH 向這些節點發送遠端命令執行。

5.regionservers.sh 的作用:

與 zookeepers.sh 類似,通過配置檔案,獲取 regionserver 機器列表,然後 SSH 向這些機器傳送遠端命令:

6.master-backup.sh 的作用:

通過 backup-masters 這個配置檔案,獲取 backup-masters 機器列表,然後 SSH 向這些機器傳送遠端命令。

簡述 HBASE中compact用途是什麼,什麼時候觸發,分為哪兩種,有什麼區別,有哪些相關配置引數?

在hbase中每當有memstore資料flush到磁碟之後,就形成一個storefile,當storeFile的數量達到一定程度後,就需要將 storefile 檔案來進行 compaction 操作。

Compact 的作用:

1>.合併檔案

2>.清除過期,多餘版本的資料

3>.提高讀寫資料的效率

HBase 中實現了兩種 compaction 的方式:minor and major. 這兩種 compaction 方式的區別是:

1、Minor 操作只用來做部分檔案的合併操作以及包括 minVersion=0 並且設定 ttl 的過

期版本清理,不做任何刪除資料、多版本資料的清理工作。

2、Major 操作是對 Region 下的HStore下的所有StoreFile執行合併操作,最終的結果是整理合並出一個檔案。

相關配置舉例: