2015-10-15 64 views
0

我們有兩個羣集,一個是舊的,一個是新的。他們都在AWS-EMR上。將Hive放在這些羣集上,指向RDS上的同一Hive metastore。我們正在從舊的遷移到新的。Hive - 指向同一Metastore的多個羣集

現在的問題是,如果我停止舊集羣訪問舊錶會有什麼問題嗎? 「所有的數據是S3。所有的表是外部的。不過還是數據庫在HDFS ..喜歡

hdfs://old:1234/user/hive/warehouse/myfirst.db 

如果我停止舊的羣集這個位置是無效的,這使得DB無效,也表?雖然他們是外部的。

,我真的不知道這是否會是一個問題,但是這是在督促,所以我試圖尋找是否有人已經面臨這個問題。

謝謝!

回答

0

只要所有你的表格將LOCATION設置爲S3,失去了位置DATABASE/SCHEMA不會影響對元數據的訪問。

它將在您的新集羣中產生的唯一影響是,在沒有顯式LOCATION的自定義數據庫(您的示例中爲「myfirstdb」)中執行的CREATE TABLE語句將無法達到默認HDFS路徑,該路徑從數據庫位置。

在「默認」模式下創建的表不會失敗,因爲Hive會將新表的位置解析爲屬性「hive.metastore.warehouse.dir」的值,即「/ user/hive/warehouse 「在Elastic MapReduce中。

同樣,這不會影響表在創建時具有明確的LOCATION設置。

一般來說,徹底實現了「便攜式」 Metastore你會想要做的是:

  • 確保所有的表使用了位置設置爲S3(HDFS中的任何數據顯然是綁定到集羣生命週期)。 這可以通過以下方式實現:
    • 明確地設置位置在CREATE TABLE語句或
    • 設置位置對所有的數據庫/ SCHEMAS(比「默認」其他)至S3
  • 的路徑可選(但強烈推薦)使用EXTERNAL(用戶管理的又稱非管理)表來防止由於DDL語句導致的意外數據丟失
相關問題