CDH Hive 元數(shù)據(jù)庫模式

翻譯: https://www.cloudera.com/documentation/enterprise/latest/topics/cdh_ig_hive_metastore_configure.html
版本: 5.14.2

Hive Metastore服務(wù)將Hive表和分區(qū)的元數(shù)據(jù)存儲在關(guān)系數(shù)據(jù)庫中汛闸,并提供Metastore服務(wù)API供客戶端(包括Hive)訪問元數(shù)據(jù)。此頁面介紹了部署選項,并提供了在建議配置中設(shè)置數(shù)據(jù)庫的說明株搔。

繼續(xù)閱讀:

Metastore部署模式

注意:在此頁面上伏蚊,HiveServer指的是HiveServer1或HiveServer2。

嵌入式模式

Cloudera建議僅將此模式用于實驗目的。

圖片.png

嵌入模式是默認部署模式倒慧。在此模式下站玄,Metastore使用Derby數(shù)據(jù)庫枚驻,數(shù)據(jù)庫和Metastore服務(wù)都嵌入主HiveServer進程中。當您啟動HiveServer進程時株旷,兩者都會啟動再登。此模式需要花費最少的努力進行配置,但一次只能支持一個活動用戶晾剖,并且未經(jīng)生產(chǎn)認證锉矢。

本地模式

圖片.png

在本地模式下,Hive Metastore服務(wù)在主HiveServer進程的同一進程中運行齿尽,但Metastore數(shù)據(jù)庫在單獨的進程中運行沽损,并且可以位于單獨的主機上。Metastore服務(wù)通過JDBC與Metastore數(shù)據(jù)庫進行通信循头。

遠程模式

Cloudera建議您使用此模式缠俺。

圖片.png

在遠程模式下,Hive Metastore服務(wù)在其自己的JVM進程中運行贷岸。HiveServer2壹士,HCatalog,Impala和其他進程使用Thrift API與它進行通信(使用hive.metastore.uris屬性)偿警。Metastore服務(wù)通過JDBC與Metastore數(shù)據(jù)庫進行通信(使用 javax.jdo.option.ConnectionURL 屬性)躏救。數(shù)據(jù)庫,HiveServer進程和Metastore服務(wù)都可以位于同一主機上螟蒸,但在單獨的主機上運行HiveServer進程可提供更好的可用性和可伸縮性盒使。

遠程模式優(yōu)于本地模式的主要優(yōu)點是遠程模式不需要管理員與每個Hive用戶共享Metastore數(shù)據(jù)庫的JDBC登錄信息。 HCatalog需要此模式七嫌。

支持的Metastore數(shù)據(jù)庫

有關(guān)最新信息少办,請參閱CDH和Cloudera Manager支持的數(shù)據(jù)庫。Cloudera強烈建議您使用MySQL诵原,因為它是Hive用戶社區(qū)中最受歡迎的英妓,因此挽放,它比其他選項獲得更多測試。有關(guān)安裝信息蔓纠,請參閱:

除了上述支持的數(shù)據(jù)庫之外辑畦,CDH還支持使用MariaDB。有關(guān)安裝和配置MariaDB for CDH的信息腿倚,請參閱MariaDB數(shù)據(jù)庫纯出。

Metastore內(nèi)存和硬件要求

圖片.png

圖片.png

Cloudera建議將HiveServer2分成多個實例,并在您開始為HiveServer2分配超過12 GB的空間時對其進行負載平衡敷燎。目標是調(diào)整大小以減少Java垃圾回收對服務(wù)進行的活動處理的影響暂筝。

使用Bytes Hive配置屬性中的HiveServer2的Java堆大小來設(shè)置此值。

使用Bytes Hive配置屬性中的Hive Metastore Server的Java堆大小設(shè)置此值硬贯。

重要提示:這些數(shù)字只是一般性指導焕襟,可能會受到諸如列數(shù),分區(qū)澄成,復雜聯(lián)接和客戶端活動等因素的影響胧洒。根據(jù)您的預期部署,通過測試進行優(yōu)化以達到您的環(huán)境的最佳值墨状。

有關(guān)為Hive元存儲配置堆以及HiveServer2和Hive客戶端的信息卫漫,請參閱Hive組件的堆大小和垃圾收集

配置Metastore數(shù)據(jù)庫

本節(jié)介紹如何配置Hive以使用遠程數(shù)據(jù)庫肾砂,以及MySQL列赎, PostgreSQLOracle的示例。

Hive Metastore的配置屬性記錄在Apache wiki上的Hive Metastore Administration文檔中镐确。

注意:有關(guān)安全群集中可能需要的其他配置的信息包吝,請參閱Hive身份驗證

為Hive Metastore配置遠程MySQL數(shù)據(jù)庫

Cloudera建議您在駐留在主機上的一臺或多臺遠程服務(wù)器上配置Metastore的數(shù)據(jù)庫源葫,或與HiveServer1或HiveServer2進程分開的主機上配置數(shù)據(jù)庫诗越。MySQL是最常用的數(shù)據(jù)庫。使用以下步驟配置遠程Metastore息堂。如果您打算使用云服務(wù)數(shù)據(jù)庫(例如Amazon Relational Database Service(RDS))嚷狞,請參閱如何將共享Amazon RDS設(shè)置為CDH的Hive Metastore,以獲取有關(guān)如何將共享Amazon RDS設(shè)置為您的Hive的信息metastore荣堰。

  1. 如果您尚未安裝并啟動MySQL床未,請安裝并啟動它

    在RHEL系統(tǒng)上安裝MySQL:

$ sudo yum install mysql-server

在使用該命令安裝MySQL之后,您可能需要確認您確實想要完成安裝振坚。安裝完成后薇搁,啟動 MySQL的 守護進程。

**在RHEL系統(tǒng)上**
$ sudo service mysqld start
  1. 配置MySQL服務(wù)和連接器

    在您可以使用遠程MySQL數(shù)據(jù)庫運行Hive Metastore之前渡八,您必須為遠程MySQL數(shù)據(jù)庫配置連接器啃洋,設(shè)置初始數(shù)據(jù)庫模式传货,并為Hive用戶配置MySQL用戶帳戶。

    要在RHEL 6系統(tǒng)上安裝MySQL連接器裂允,請執(zhí)行以下操作:

    在Hive Metastore服務(wù)器主機上安裝 mysql-connector-java 到/usr/lib/hive/lib/ 目錄损离。

$ sudo yum install mysql-connector-java
$ ln -s /usr/share/java/mysql-connector-java.jar /usr/lib/hive/lib/mysql-connector-java.jar
注意:在發(fā)布時哥艇,版本為5.1.31 绝编,但是在閱讀本文時,版本可能已更改貌踏。如果您正在使用MySQL版本5.6十饥,則必須使用版本5.1.26或更高版本的驅(qū)動程序。
  1. 創(chuàng)建數(shù)據(jù)庫和用戶

    本節(jié)中的說明假定您正在使用遠程模式祖乳,并且MySQL數(shù)據(jù)庫安裝在不同于主機上逗堵。在這個例子中mysql主機名為 metastorehost 。

    注意:如果Metastore服務(wù)將在安裝數(shù)據(jù)庫的主機上運行眷昆,在 CREATE USER例子中使用localhost 替換 'metastorehost'蜒秤。同樣,在/etc/hive/conf/hive-site.xml文件中亚斋,設(shè)置javax.jdo.option.ConnectionURL的值為jdbc:mysql://localhost/metastore 作媚。有關(guān)添加MySQL用戶的更多信息,請參閱http://dev.mysql.com/doc/refman/5.5/en/adding-users.html帅刊。

    創(chuàng)建初始數(shù)據(jù)庫模式纸泡。Cloudera建議使用Hive模式工具(schemaTool) 來執(zhí)行此操作。

    如果由于某種原因你決定不使用模式工具赖瞒,你可以使用 hive-schema-n.n.n.mysql.sql 文件; 該文件位于/usr/lib/hive/scripts/metastore/upgrade/mysql/目錄女揭。(n.n.n是當前的Hive版本,例如1.1.0)如果您決定使用栏饮,請按以下步驟操作 hive-schema-n.n.n.mysql.sql

    使用 hive-schema-n.n.n.mysql.sql的示例

    注意:僅當您不使用Hive模式工具時才執(zhí)行此操作吧兔。

$ mysql -u root -p
Enter password:
mysql> CREATE DATABASE metastore;
mysql> USE metastore;
mysql> SOURCE /usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-n.n.n.mysql.sql;

您還需要一個Hive用于訪問Metastore的MySQL用戶帳戶。防止此用戶帳戶在Metastore數(shù)據(jù)庫模式中創(chuàng)建或更改表格非常重要袍嬉。

重要提示:為防止用戶在使用較低或較高版本的Hive時無意中破壞了Metastore模式境蔼,請設(shè)置 hive.metastore.schema.verification 為true。

**例**
mysql> CREATE USER 'hive'@'metastorehost' IDENTIFIED BY 'mypassword';
...
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'hive'@'metastorehost';
mysql> GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'metastorehost';
mysql> FLUSH PRIVILEGES;
mysql> quit;
  1. 配置Metastore服務(wù)與MySQL數(shù)據(jù)庫進行通信

    此步驟顯示您需要在 hive-site.xml (/usr/lib/hive/conf/hive-site.xml)中設(shè)置的屬性冬竟。雖然你可以在所有主機(客戶端欧穴,Metastore,HiveServer)上使用相同的hive-site.xml 泵殴, hive.metastore.uris是唯一必須配置的屬性; 其他只用于metastore主機涮帘。

    給定一個MySQL數(shù)據(jù)庫 為myhost 和用戶帳戶hive 與密碼 mypassword,請按如下所示設(shè)置配置(覆蓋任何現(xiàn)有值)笑诅。

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://myhost/metastore</value>
  <description>the URL of the MySQL database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>mypassword</value>
</property>

<property>
  <name>datanucleus.autoCreateSchema</name>
  <value>false</value>
</property>

<property>
  <name>datanucleus.fixedDatastore</name>
  <value>true</value>
</property>

<property>
  <name>datanucleus.autoStartMechanism</name> 
  <value>SchemaTable</value>
</property> 

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://<n.n.n.n>:9083</value>
  <description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property>

<property>
<name>hive.metastore.schema.verification</name>
<value>true</value>
</property>
注: hive.metastore.local 不再被支持(截至Hive 0.10); 設(shè)置hive.metastore.uris  足以表明您正在使用遠程Metastore调缨。

為Hive Metastore配置遠程PostgreSQL數(shù)據(jù)庫

為Hive Metastore配置遠程Oracle數(shù)據(jù)庫

在您可以使用遠程Oracle數(shù)據(jù)庫運行Hive Metastore之前疮鲫,您必須配置連接器到遠程Oracle數(shù)據(jù)庫,設(shè)置初始數(shù)據(jù)庫模式并為Hive用戶配置Oracle用戶帳戶弦叶。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末俊犯,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子伤哺,更是在濱河造成了極大的恐慌燕侠,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,539評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立莉,死亡現(xiàn)場離奇詭異绢彤,居然都是意外死亡,警方通過查閱死者的電腦和手機蜓耻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,594評論 3 396
  • 文/潘曉璐 我一進店門茫舶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人刹淌,你說我怎么就攤上這事饶氏。” “怎么了有勾?”我有些...
    開封第一講書人閱讀 165,871評論 0 356
  • 文/不壞的土叔 我叫張陵疹启,是天一觀的道長。 經(jīng)常有香客問我柠衅,道長皮仁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,963評論 1 295
  • 正文 為了忘掉前任菲宴,我火速辦了婚禮贷祈,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘喝峦。我一直安慰自己势誊,他們只是感情好,可當我...
    茶點故事閱讀 67,984評論 6 393
  • 文/花漫 我一把揭開白布谣蠢。 她就那樣靜靜地躺著粟耻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪眉踱。 梳的紋絲不亂的頭發(fā)上挤忙,一...
    開封第一講書人閱讀 51,763評論 1 307
  • 那天,我揣著相機與錄音谈喳,去河邊找鬼册烈。 笑死,一個胖子當著我的面吹牛婿禽,可吹牛的內(nèi)容都是我干的赏僧。 我是一名探鬼主播大猛,決...
    沈念sama閱讀 40,468評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淀零!你這毒婦竟也來了挽绩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤驾中,失蹤者是張志新(化名)和其女友劉穎唉堪,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哀卫,經(jīng)...
    沈念sama閱讀 45,850評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡巨坊,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,002評論 3 338
  • 正文 我和宋清朗相戀三年撬槽,在試婚紗的時候發(fā)現(xiàn)自己被綠了此改。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,144評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡侄柔,死狀恐怖共啃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情暂题,我是刑警寧澤移剪,帶...
    沈念sama閱讀 35,823評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站薪者,受9級特大地震影響纵苛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜言津,卻給世界環(huán)境...
    茶點故事閱讀 41,483評論 3 331
  • 文/蒙蒙 一攻人、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悬槽,春花似錦怀吻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,026評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至磅叛,卻和暖如春屑咳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背弊琴。 一陣腳步聲響...
    開封第一講書人閱讀 33,150評論 1 272
  • 我被黑心中介騙來泰國打工兆龙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人访雪。 一個月前我還...
    沈念sama閱讀 48,415評論 3 373
  • 正文 我出身青樓详瑞,卻偏偏與公主長得像掂林,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坝橡,可洞房花燭夜當晚...
    茶點故事閱讀 45,092評論 2 355

推薦閱讀更多精彩內(nèi)容