CDP的Hive Metastore簡介
Hive Metastore (HMS) 是一種服務,用於在後端 RDBMS(例如 MySQL 或 PostgreSQL)中儲存與 Apache Hive 和其他服務相關的元資料。Impala、Spark、Hive 和其他服務共享元儲存。與 HMS 的連線包括 HiveServer、Ranger 和代表 HDFS 的 NameNode。
Beeline、Hue、JDBC 和 Impala shell 客戶端通過 thrift 或 JDBC 向 HiveServer 發出請求。HiveServer 例項向 HMS 讀/寫資料。預設情況下,冗餘的 HMS 以主動/主動模式執行。物理資料駐留在後端 RDBMS 中,一個用於 HMS的RDBMS。所有的 HMS 例項使用相同的後端資料庫。一個單獨的 RDBMS 支援安全服務,例如 Ranger。在任何給定時間,所有連線都路由到單一的 RDBMS 服務。HMS 通過thrift與 NameNode 對話,並充當 HDFS 的客戶端。
HMS 直接連線到 Ranger 和 NameNode (HDFS),HiveServer 也是如此,但為簡單起見,該圖中並未顯示。後端的一個或多個 HMS 例項可以與其他服務(例如 Ranger)通訊。
HMS表的儲存
當您執行 CREATE TABLE 語句或將表遷移到 Cloudera Data Platform 時,您需要了解 HMS 如何儲存 Hive 表。語句的成功或失敗、結果表型別和表位置取決於許多因素。
HMS 表的轉換
HMS 包含有關您建立的表的以下 Hive 元資料:
· 表的定義
· 列名
· 資料型別
· 中央的Schema儲存庫中的註釋
當您在 CREATE TABLE 語句中使用 EXTERNAL 關鍵字時,HMS 會將表儲存為外部表。當您省略 EXTERNAL 關鍵字並建立託管表或攝取託管表時,HMS 可能會將錶轉換為外部表,或者建立表可能會失敗,這具體取決於表的屬性。影響錶轉換的一個重要表屬性是 ACID 或非 ACID 表型別:
非ACID
表屬性不包含任何設定為 true 的 ACID 相關屬性。例如,該表不包含這樣的屬性 transactional=true 或 insert_only=true
ACID
表屬性確實包含一個或多個設定為 true 的 ACID 屬性。
完全的ACID
表屬性包含 transactional=true 但不包含insert_only=true
僅插入的ACID
表屬性包含 insert_only=true。
以下矩陣顯示了表型別以及是否支援位置屬性。
ACID |
託管表 |
位置屬性 |
註釋 |
行動 |
非ACID |
是的 |
是的 |
遷移到 CDP,例如從 HDP 或 CDH 叢集。 |
表儲存為外部表 |
非ACID |
是的 |
不 |
表位置為空(null) |
儲存在外部倉庫子目錄中的表* |
metastore.warehouse.external.dir
HMS 檢測與 HMS 互動的客戶端型別,例如 Hive 或 Spark,並將客戶端的能力與表的需求進行比較。HMS 根據比較結果執行以下操作:
表要求 |
客戶端符合要求 |
託管表 |
ACID 表型別 |
行動 |
客戶端可以寫入任何型別的 ACID 表 |
不 |
是的 |
是的 |
建立表失敗 |
客戶端可以寫入完整的 ACID 表 |
不 |
是的 |
insert_only=true |
建立表失敗 |
客戶端可以寫入僅插入的 ACID 表 |
不 |
是的 |
insert_only=true |
建立表失敗 |
例如,如果 Spark 客戶端不具備所需的功能,則會出現以下型別的錯誤訊息:
Spark has no access to table `mytable`. Clients can access this table only if
they have the following capabilities: CONNECTORREAD,HIVEFULLACIDREAD, HIVEFULLACIDWRITE,
HIVEMANAGESTATS, HIVECACHEINVALIDATE, . . .
原文連結:http://docs.cloudera.com/cdp-private-cloud-base/latest/hive-hms-overview/topics/hive-hms-introduction.html
本文分享自微信公眾號 - 大資料雜貨鋪(bigdataGrocery)。
如有侵權,請聯絡 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。
- Yarn管理放置規則
- Yarn在全域性級別配置排程程式屬性
- 使用YARN Web UI和CLI
- CDP中的Hive3系列之管理Hive的工作負載
- CDP中的Hive3系列之啟動Apache Hive3
- Hive on Tez 簡介
- CDP私有云基礎7.1.7發行說明
- CDP的Hive Metastore簡介
- FAQ系列之Impala
- CDP私有云基礎版7.1.6版本概要
- CDP通過支援谷歌雲擴充套件了混合雲的支援
- 教程|運營資料庫 Phoenix SQL:在CDP公有云上使用HBase、Nifi和Kafka
- 下一站–建立從邊緣到洞察的資料管道
- 配置客戶端以安全連線到Apache Kafka叢集4:TLS客戶端身份驗證
- 配置客戶端以安全連線到Kafka叢集–LDAP
- NiFi –混合雲環境中的資料移動賦能者
- 有關Apache NiFi的5大常見問題
- 使用YCSB進行HBase效能測試
- Cloudera Manager主機管理
- 使用CFM進行日誌減少技術