期末HBase簡答題

1、MapRedece從讀取數據開始到將最終結果寫入HDFS經過哪些步驟?

第一步:inputformat進行數據讀讀取,將數據發送給split
第二步:split 將數據進行切分,發送給RecordReader
第三步:RR將數據按照行再次切分,將切分好的數據組裝成key(行首偏移量),value(每行的數據) 發送給map
第四步:map 進行自定義邏輯的書寫,將數據傳給Shuffle
第五步:Shuffle中的Partition 將數據key的哈希值與ReduceTask數量取餘,餘幾就分到哪個區
第六步:Shuffle中的Sort 將數據按照一定規則進行排序
第七步:Shuffle中的Combine 將數據在map端先進行局部聚合,這樣做的好處數節省了網絡帶寬的消耗,效率更高
第八步:Shuffle中的Group 將數據相同的key變成一個key,將這個key的Value拼裝成一個Value的list
第九步:Reduce 進行自定義計算邏輯的書寫,將結果發送給OutputFormat
第十步:OutPutFormat 將結果數據輸出保存到HDFS上

2、Hadoop 的組成部分有哪些模塊?

HDFS 分佈式文件存儲系統
管理者:NameNode
工作者:DataNode
輔助者:SecondayNameNode
MapReduce 分佈式離線計算框架
Yarn Hadoop資源調度器
管理者:ResourceManager
工作者:NodeManager

3、請闡述一下Hbase詳細架構?★★★★★

Client:
訪問數據的入口,包含訪問hbase的API接口,維護着一些cache來加快對hbase的訪問
Zookeeper:
1.zookeeper的選舉機制保證任何時候,集羣中只有一個master
2.實時監控Region Server的狀態,將Region server的上線和下線信息實時通知給Master
3.存儲Hbase的schema
4 存貯所有Region的尋址入口
Master:
1.爲Region server分配region
2.負責region server的負載均衡
3.發現失效的region server並重新分配其上的region
4.處理schema(元數據)更新請求
Region server:
1.Region server維護Master分配給它的region,處理對這些region的IO請求
2.Region server負責切分在運行過程中變得過大的region

4、請說一下Hive的內部組成模塊,作用分別是什麼?

(1)解析器(SQL Parser):解析HQL語義
(2)編譯器(Physical Plan):將語HQL根據語義轉換成MR程序
(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。(對MR程序進行優化)
(4)執行器(Execution):把任務提交到hadoop集羣

5.hbase讀的過程

1、首先Client先去訪問zookeeper,從zookeeper裏面獲取meta表所在的位置信息
2、Client通過剛纔獲取到的IP來訪問Meta,讀取Meta內的數據,
3、Client通過元數據(meta表內的數據)中存儲的信息,找到region在哪個HRegionServer ,訪問對應的 HRegionServer讀取數據

6.hbase數據的寫入

1 Client 先訪問zookeeper,找到Meta表,並獲取Meta表元數據。確定將要寫入的數據所對應的HRegion和 HRegionServer服務器。
2 Client向該HRegionServer服務器發起寫入數據請求
3 RegionServer先把數據寫入到HLog,以防止數據丟失。
4 然後將數據寫入到Memstore。
5 若Memstore達到閾值,會將Memstore中的數據flush到Storefifile中
6 Storefifile數量達到閾值(默認3個)時,會觸發Compact合併操作,把過多的Storefifile合併成一個大的Storefifile

7.爲什麼要HBase預分區

增加數據讀寫效率: 默認方式所有數據存在一個節點上,預分區將數據分散到多各節點上。
負載均衡,防止數據傾斜: 數據的rowkey分成多個區間,每個區間就是一個region,數據寫入時,寫入自己所在範圍的region
方便集羣容災調度region: 將數據分散存儲到了多個region中,region的粒度更小 優化Map數量

8.HBase的基本介紹

a.Hbase是建立在hdfs之上的一個數據庫,
b.不支持join等SQL複雜操作
c.支持的數據類型:byte[],
d.依靠橫向擴展,一個表可以有上十億行,上百萬列。
e.面向列(族)的存儲和權限控制
f.對於爲空(null)的列,並不佔用存儲空間,是一個稀疏表

9.distribute by+sort by(相同字段) 與Cluster by的區別

在分區字段和排序字段相同時,這兩個可以作用是相同的,只是cluster by 的結果有限制,只能倒序排列,而distribute by+sort by 可根據需求進行排序

10.Hive支持的數據格式

可支持Text,SequenceFile,ParquetFile,ORC格式RCFILE

11.hive自定義函數的類型有哪幾種,分別表示什麼意思?

1.UDF(User-Defined-Function) 一進一出
2.UDAF(User- Defined Aggregation Funcation) 聚集函數,多進一出。Count/max/min

A長的像個傘,假設數據從下面流入,從上面流出,A就是聚集一堆,流出一個點
同理,T就像Y,由一股分成了好幾股。
前提是記住一進一出UDF(輸入一個數據,返回另一個數據)

3.UDTF(User-Defined Table-Generating Functions) 一進多出,如lateral view explore)

這讓人想到了進進出出。

12.集羣擴容,添加新節點需要做哪些準備?

1.配置JDK
2.配置SSH免密鑰
3.關閉防火牆
4.關閉selinux
5.修改主機名
6.修改hosts

新節點必須有jdk,節點間溝通需要ssh免密,節點需要關閉防火牆增加效率,
節點需要關閉殺軟selinux,節點需要改名方便交流,每個節點需要認識其它節點hosts

13.hadoop 的組成部分?

HDFS 分佈式文件存儲系統
管理者:NameNode
工作者:DataNode
輔助者:SecondayNameNode

MapReduce 分佈式離線計算框架

Yarn Hadoop資源調度器
管理者:ResourceManager
工作者:NodeManager

14.Namenode作用

一:管理,維護文件系統的元數據/名字空間/目錄樹,管理數據與節點之間的映射關係(管理文件系統中每個文件/目錄的block塊信息)
二:管理DataNode彙報的心跳日誌/報告
三:客戶端和DataNode之間的橋樑(元數據信息共享)

15.DataNode作用

一:負責數據的讀寫操作
二:週期性的向NameNode彙報心跳日誌/報告
三:執行數據流水線的複製

16.hbase中如何解決rowkey的熱點問題

熱點就是數據分佈不均勻,集中到一個節點了。

1.哈希(隨機數):將哈希值放在高位(每條數據hash值不同)
2.反轉:反轉固定長度或者數字格式的數據(時間戳反轉、手機號反轉,訂單號反轉)
3.加鹽:本質時是加隨機數,並且放在高位。

17.hbase中Hlog的切分機制

1.當數據寫入hlog以後,hbase發生異常。關閉當前的hlog文件
2.當日志的大小達到HDFS數據塊的0.95倍的時候,關閉當前日誌,生成新的日誌
3.每隔一小時生成一個新的日誌文件

18.HBase的三個重要機制是什麼?

1、flush機制

2、compact機制

3、split機制

把小的storeFile文件合併成大的Storefile文件。
清理過期的數據,包括刪除的數據
將數據的版本號保存爲3個

當Region達到閾值,會把過大的Region一分爲二。

19.Crontab 定時器怎麼寫?

每個*什麼意思,給出一個定時任務,描述出相應的內容

日 月 時 分 星期

20.SecondaryNamenode 的工作機制是什麼?

NameNode創建一個Edits.new
SNN從NameNode節點拷貝Fsimage和Edits文件到SNN
SNN將兩個文件導入內存進行合併操作生成一個新的Fsimage.ckpt文件
SNN將新的Fsimage.ckpt發送到NameNode節點
重命名爲Fsimage替換原先的Fsimage
原先的Edits生成Edits.new文件
將Edits替換爲新的Edits.new
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章