大數據經典面試題答疑---經常問的原理問題總結(系列文章,持續更新),幫你解決大數據開發中的困擾。
1. hive+MapReduce
答案區:
1.hbase
1.1. hbase基礎
1.1.1. hbase數據模型
1.1.2. Row Key
概括:最大64KB;在hbase中以字節數組保存;不同rowkey按字典順序排序
1.1.3. Columns Family
列簇 :HBASE表中的每個列,都歸屬于某個列族。列族是表的schema的一部分(而列不是),必須在使用表之前定義。列名都以列族作為前綴。例如 courses:history,courses:math都屬于courses 這個列族。
1.1.4. Cell
由{row key, columnFamily, version} 唯一確定的單元。cell中 的數據是沒有類型的,全部是字節碼形式存貯。
關鍵字:無類型、字節碼
1.1.5. Time Stamp
HBASE 中通過rowkey和columns確定的為一個存貯單元稱為cell。每個 cell都保存 著同一份數據的多個版本。版本通過時間戳來索引。時間戳的類型是 64位整型。時間戳可以由HBASE(在數據寫入時自動 )賦值,此時時間戳是精確到毫秒的當前系統時間。時間戳也可以由客戶顯式賦值。如果應用程序要避免數據版 本沖突,就必須自己生成具有唯一性的時間戳。每個 cell中,不同版本的數據按照時間倒序排序,即最新的數據排在最前面。
為了避免數據存在過多版本造成的的管理 (包括存貯和索引)負擔,HBASE提供 了兩種數據版本回收方式。
一是保存數據的最后n個版本;
二是保存最近一段 時間內的版本(比如最近七天)。用戶可以針對每個列族進行設置。
1.2. 原理
Region是Hbase中分布式存儲和負載均衡的最小單元,不同Region分布到不同RegionServer上。
Region雖然是分布式存儲的最小單元,但并不是存儲的最小單元。Region由一個或者多個Store組成,每個store保存一個columns family;每個Strore又由一個memStore和0至多個StoreFile組成,StoreFile包含HFile;memStore存儲在內存中,StoreFile存儲在HDFS上。
1.2.1. 寫流程:
1、client向hregionserver發送寫請求。
2、hregionserver將數據寫到hlog(write ahead log)。為了數據的持久化和恢復。
3、hregionserver將數據寫到內存(memstore)
4、反饋client寫成功。
1.2.2. 數據flush:
1、當memstore數據達到閾值(默認是128M)或region中所有Memstore的大小總和達到了上限(默認 2*128 = 256MB)會觸發將將數據刷到硬盤,將內存中的數據刪除,同時刪除Hlog中的歷史數據。
2、并將數據存儲到hdfs中。
3、在hlog中做標記點。
1.2.3. 數據compact(合并):
將storefile 中的hfile 合并成大的hfile;
在hbase中主要存在兩種類型的compaction合并
minor compaction 小合并
在將Store中多個HFile合并為一個HFile,對于超過了TTL的數據、刪除的數據僅僅只是做了標記。
major compaction 大合并
合并Store中所有的HFile為一個HFile,清理三類無意義數據:被刪除的數據、TTL過期數據、版本號超過設定版本號的數據。默認7天執行一次,并且性能消耗非常大。手動觸發:major_compact tableName
1.2.4. 讀流程
1、通過zookeeper和-ROOT- .META.表定位region
2、hbase會首先在布隆過濾器中查詢(如果設置的話),然后MemStore,BlockCache(LRUCache存放最近讀取數據),磁盤的HFile,找到并存儲到BlockCache
3、數據塊會緩存
1.2.5. hregionserver的職責
HRegion Server主要負責響應用戶I/O請求,向HDFS文件系統中讀寫數據,是HBASE中最核心的模塊。
HRegion Server管理region。
1.3. hbase 布隆過濾器
不存在的一定不存在,存在的不一定存在;
1.3.1. 布隆過濾器的存儲在哪?
對于hbase而言,當我們選擇采用布隆過濾器之后,HBase會在生成StoreFile(HFile)時包含一份布隆過濾器結構的數據,稱其為MetaBlock;MetaBlock與DataBlock(真實的KeyValue數據)一起由LRUBlockCache維護。
cell較小的不適用布隆過濾器;
按行讀,更新數據量大,范圍廣(多列),用row;
1.3.2. 協處理器
observe:通過鉤子函數,做一些預處理和后處理;類似于 RDBMS 中的觸發器,主要在服務端工作,主要有三種
regionObserve:處理數據修改數據;如:創建二級索引
maserObserve:管理DDL類型操作
WALObserve:提供針對WAL的鉤子函數
endpoint:類似于 RDBMS 中的存儲過程,主要在服務端工作,可以實現 min、max、avg、sum、distinct、group by 等功能。
更多關于大數據培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。