最常見的 HBase 面試問題和答案 [終極指南]

已發表: 2020-09-21

當您希望應用程序實時推送或拉取數據時,Apache HBase 是一個出色的大數據解決方案。 它主要以其靈活的模式和高速而聞名。 本文旨在為您解答一些熱門的HBase 面試問題 面試官想要測試候選人的技術和一般意識。 因此,您的努力應該是準確而徹底地傳達這些概念。

許多領先的公司在世界各地使用 Hbase 技術,包括 Adob​​e、HubSpot、Facebook、Twitter、Yahoo!、OpenLogic 和 StumbleUpon。 對於希望構建可擴展網站的有抱負的 Web 開發人員來說,掌握 Hadoop 和 HBase 等工具可能非常有用。

從世界頂尖大學學習數據科學獲得行政 PG 課程、高級證書課程或碩士課程,以加快您的職業生涯。

閱讀: Hadoop 項目理念

目錄

頂級 HBase 面試問題和答案

1.什麼是HBase?

它是由 Apache 軟件基金會開發的面向列的數據庫。 HBase 運行在 Hadoop 集群之上,用於存儲半結構化和非結構化數據。 因此,它沒有像傳統關係數據庫那樣的死板模式。 此外,它不支持 SQL 語法結構。 HBase 通過管理集群和區域服務器的主節點存儲和操作數據。

2、使用Hbase的原因有哪些?

HBase 提供大容量存儲系統和隨機讀寫操作。 它可以處理大型數據集,每秒執行多個操作。 分佈式和水平可擴展的設計使 HBase 成為實時應用程序的流行選擇。

3.解釋HBase的關鍵組件。

HBase 的工作部分包括 Zookeeper、HBase Master、RegionServer、Region 和 Catalog Tables。 每個元素的用途可以描述如下:

  • 客戶端和 HBase Master 之間的 Zookeeper 協調
  • HBase Master 監控 RegionServer 並負責管理功能
  • RegionServer 監管 Region
  • Region 包含 MemStore 和 HFile
  • 目錄表包含 ROOT 和 META

基本上,Hbase 由一組表組成,每個表都有行、列和主鍵。 它是 HBase 列,表示對象的屬性。

4. HBase 中有哪些不同類型的操作命令?

HBase 中有五個關鍵的操作命令:Get、Delete、Put、Increment 和 Scan。

Get 用於讀取表格。 通過 HTable.get 執行,它從表中返回特定行的數據或屬性。 Delete 從表中刪除行,而 Put 添加或更新行。 增量啟用對單行的增量操作。 最後,Scan 用於對某些屬性的多行進行迭代。

5. 你對 WAL 和 Hlog 的理解是什麼?

  • WAL 代表 Write Ahead Log,與 MySQL 中的 BIN 日誌非常相似。 它記錄了數據的所有變化。
  • HLog 是 Hadoop 的標準內存序列文件,用於維護 HLogkey 存儲。

WAL 和 HLog 充當服務器故障和數據丟失事件的生命線。 如果 RegionServer 崩潰或變得不可用,WAL 文件確保可以重放數據更改。

6. 描述一些你會使用 Hbase 的情況。

在以下情況下適合使用 HBase:

  • 您的數據量很大,需要您對數百萬條記錄進行操作。
  • 您正在實施徹底的重新設計並徹底檢修傳統的 RDBMS。
  • 您有資源在集群中進行基礎設施投資。
  • 有特定的無 SQL 命令,例如事務、類型化列、內部行等。

7. 列族和行鍵是什麼意思?

列族構成了 HBase 中的基本存儲單元。 這些是在表創建期間定義的,並一起存儲在磁盤上,稍後允許應用壓縮等功能。

行鍵可以對單元格進行邏輯分組。 它以組合鍵為前綴,讓應用程序定義排序順序。 這樣,所有具有相同行鍵的單元格都可以保存在同一台服務器上。

8. HBase 與關係型數據庫有何不同?

HBase 與關係數據庫不同,因為它是一種無模式、面向列的數據存儲,包含稀疏填充的表。 關係數據庫是基於模式的、面向行的,並將規範化的數據存儲在精簡表中。 此外,HBase 具有自動分區的優勢,而 RDBMS 中沒有這樣的內置支持。

閱讀: DBMS 與 RDBMS:DBMS 和 RDBMS 之間的區別

9. HBase 中的 cell 由什麼構成?

單元格是 HBase 表的最小單位,以元組的形式保存數據。 元組是具有多個部分的數據結構。 在 HBase 中,它由 {row, column, version} 組成。

10. 在 HBase 中定義壓縮。

壓縮是在從數據庫中刪除舊文件之前將 HFile 合併為單個文件的過程。

11、可以不使用HBase直接訪問HFile嗎?

是的,有一種獨特的技術可以在不借助 HBase 的情況下直接訪問 HFile。 HFile.main 方法可用於此目的。

12. 討論 HBase 中的刪除和墓碑標記。

在 HBase 中,正常的刪除過程會產生一個墓碑標記。 刪除的單元格變得不可見,但它們所代表的數據實際上在壓縮過程中被刪除。 HBase 具有三種類型的墓碑標記:

  • 版本刪除標記:它標記要刪除的列的單個版本
  • 列刪除標記:它標記列的所有版本
  • 族刪除標記:設置一個列族的所有列進行刪除

這裡需要注意的是,HBase 中的一行在major compaction 之後會被完全刪除。 因此,當您刪除並添加更多數據時,Get 可能會被墓碑標記所掩蓋,並且您可能在壓縮之後才能看到插入的值。

13. 當你改變列族的塊大小時會發生什麼?

如果您的數據庫已經被佔用,並且您希望更改 HBase 中列族的塊大小,則舊數據可能會保留在舊塊大小中。 在壓縮期間,新舊數據的行為如下:

  • 現有數據將採用新的塊大小並繼續正確讀取。
  • 新文件將具有新的塊大小。

這樣,在下一次主要壓縮之前,所有數據都轉換為所需的塊大小。

14.定義HBase可以運行的不同模式。

HBase 可以在獨立模式或分佈式模式下運行。 Standalone 是 HBase 的默認模式,它使用本地文件系統而不是 HDFS。 至於分佈式模式,又可以進一步細分為:

  • 偽分佈式模式:所有守護進程運行在單個節點上
  • 全分佈式模式:守護進程跨集群中的所有節點運行

15. 你將如何在 HBase 中實現連接?

HBase 使用 MapReduce 作業以可擴展的方式處理數 TB 的數據。 它不直接支持連接,但連接查詢是通過從 HBase 表中檢索數據來實現的。

結帳: Hadoop 面試問題

16. 討論 HBase 中過濾器的用途。

在 Apache HBase 0.92 中引入了過濾器,以幫助用戶通過 Shell 或 Thrift 訪問 HBase。 因此,它們會滿足您的服務器端過濾需求。 還有裝飾過濾器,它們擴展了過濾器的使用,以獲得對返回數據的額外控制。 以下是 HBase 中過濾器的一些示例:

  • Bloom Filter:通常用於實時查詢,它是一種節省空間的方式來了解 HFile 是否包含特定的行或單元格
  • 頁面過濾器:接受頁面大小作為參數,頁面過濾器可以優化單個 HRegions 的掃描

17. 將 HBase 與 (i) Cassandra (ii) Hive 進行比較。

(i) HBase 和 Cassandra: Cassandra 和 HBase 都是旨在管理大型數據集的 NoSQL 數據庫。 但是, Cassandra 查詢語言 (CQL ) 的語法是根據 SQL 建模的。 在這兩種數據存儲中,行鍵構成主索引。 Cassandra 可以在列值上創建二級索引。 因此,它可以改善重複級別高的列中的數據訪問。 HBase 缺少此規定,但具有其他機制來引入二級索引功能。 這些方法可以在在線參考指南中輕鬆找到。

(ii) HBase 和 Hive:它們都是基於 Hadoop 的技術。 如上所述,HBase 是一個 NoSQL 鍵/值數據庫。 另一方面,Hive 是一個類似 SQL 的引擎,能夠運行複雜的 MapReduce 作業。 您可以執行從 Hive 到 HBase 的讀取和寫入數據操作,反之亦然。 雖然 Hive 更適合分析任務,但 HBase 是實時查詢的絕佳解決方案。

另請閱讀: HBase 架構:您需要知道的一切

結論

這些HBase 面試問題和用例將我們帶到了本文的結尾。 我們試圖涵蓋不同的主題,以迎合基礎、中級和高級水平。 所以,繼續修改,給你的招聘人員留下深刻的印象!

如果您想了解數據科學,請查看 IIIT-B 和 upGrad 的數據科學執行 PG 計劃,該計劃是為在職專業人士創建的,提供 10 多個案例研究和項目、實用的實踐研討會、行業專家的指導、1與行業導師一對一,400 多個小時的學習和頂級公司的工作協助。

掌握未來的技術

申請數據科學高級證書課程