鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程式現已上線,官網地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內容,還包含特色的解鎖屏幕複習面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來的是今日的面試題: 1.HBa ...
鎖屏面試題百日百刷,每個工作日堅持更新面試題。鎖屏面試題app、小程式現已上線,官網地址:https://www.demosoftware.cn。已收錄了每日更新的面試題的所有內容,還包含特色的解鎖屏幕複習面試題、每日編程題目郵件推送等功能。讓你在面試中先人一步!接下來的是今日的面試題:
1.HBase的導入導出方式?
1)導入:bin/hbase org.apache.hadoop.hbase.mapreduce.Driver import 表名 路徑
路徑:來源
本地路徑 file:///path
HDFS hdfs://cluster1/path
2)導出:bin/hbase org.apache.hadoop.hbase.mapreduce.Driver export 表名 路徑
路徑:目的地
本地路徑 file:///path
HDFS hdfs://cluster1/path
2.Region如何預建分區?
預分區的目的主要是在創建表的時候指定分區數,提前規劃表有多個分區,以及每個分區的區間範圍,這樣在存儲的時候rowkey按照分區的區間存儲,可以避免region熱點問題。
通常有兩種方案:
方案1:shell 方法
create 'tb_splits', {NAME => 'cf',VERSIONS=> 3},{SPLITS => ['10','20','30']}
方案2: JAVA程式控制
· 取樣,先隨機生成一定數量的rowkey,將取樣數據按升序排序放到一個集合里;
· 根據預分區的region個數,對整個集合平均分割,即是相關的splitKeys;
· HBaseAdmin.createTable(HTableDescriptor tableDescriptor,byte[][]splitkeys)可以指定預分區的splitKey,即是指定region間的rowkey臨界值。
3.HRegionServer宕機如何處理?
1)ZooKeeper會監控HRegionServer的上下線情況,當ZK發現某個HRegionServer宕機之後會通知HMaster
進行失效備援;
2)該HRegionServer會停止對外提供服務,就是它所負責的region暫時停止對外提供服務;
3)HMaster會將該HRegionServer所負責的region轉移到其他HRegionServer上,並且會對HRegionServer上存在memstore中還未持久化到磁碟中的數據進行恢復;
4) 這個恢復的工作是由WAL重播來完成,這個過程如下:
· wal實際上就是一個文件,存在/hbase/WAL/對應RegionServer路徑下。
· 宕機發生時,讀取該RegionServer所對應的路徑下的wal文件,然後根據不同的region切分成不同的臨時文件recover.edits。
· 當region被分配到新的RegionServer中,RegionServer讀取region時會進行是否存在recover.edits,如果有則進行恢復。
4.HBase讀寫流程?
讀:
① HRegionServer保存著meta表以及表數據,要訪問表數據,首先Client先去訪問zookeeper,從zookeeper裡面獲取meta表所在的位置信息,即找到這個meta表在哪個HRegionServer上保存著。
② 接著Client通過剛纔獲取到的HRegionServer的IP來訪問Meta表所在的HRegionServer,從而讀取到Meta,進而獲取到Meta表中存放的元數據。
③ Client通過元數據中存儲的信息,訪問對應的HRegionServer,然後掃描所在HRegionServer的Memstore和Storefile來查詢數據。
④ 最後HRegionServer把查詢到的數據響應給Client。
寫:
① Client先訪問zookeeper,找到Meta表,並獲取Meta表元數據。
② 確定當前將要寫入的數據所對應的HRegion和HRegionServer伺服器。
③ Client向該HRegionServer伺服器發起寫入數據請求,然後HRegionServer收到請求並響應。
④ Client先把數據寫入到HLog,以防止數據丟失。
⑤ 然後將數據寫入到Memstore。
⑥ 如果HLog和Memstore均寫入成功,則這條數據寫入成功
⑦ 如果Memstore達到閾值,會把Memstore中的數據flush到Storefile中。
⑧ 當Storefile越來越多,會觸發Compact合併操作,把過多的Storefile合併成一個大的Storefile。
⑨ 當Storefile越來越大,Region也會越來越大,達到閾值後,會觸發Split操作,將Region一分為二。