CDH Hive 元数据库模式

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

Hive Metastore服务将Hive表和分区的元数据存储在关系数据库中,并提供Metastore服务API供客户端(包括Hive)访问元数据。此页面介绍了部署选项,并提供了在建议配置中设置数据库的说明。

继续阅读:

Metastore部署模式

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

嵌入式模式

Cloudera建议仅将此模式用于实验目的。

图片.png

嵌入模式是默认部署模式。在此模式下,Metastore使用Derby数据库,数据库和Metastore服务都嵌入主HiveServer进程中。当您启动HiveServer进程时,两者都会启动。此模式需要花费最少的努力进行配置,但一次只能支持一个活动用户,并且未经生产认证。

本地模式

图片.png

在本地模式下,Hive Metastore服务在主HiveServer进程的同一进程中运行,但Metastore数据库在单独的进程中运行,并且可以位于单独的主机上。Metastore服务通过JDBC与Metastore数据库进行通信。

远程模式

Cloudera建议您使用此模式。

图片.png

在远程模式下,Hive Metastore服务在其自己的JVM进程中运行。HiveServer2,HCatalog,Impala和其他进程使用Thrift API与它进行通信(使用hive.metastore.uris属性)。Metastore服务通过JDBC与Metastore数据库进行通信(使用 javax.jdo.option.ConnectionURL 属性)。数据库,HiveServer进程和Metastore服务都可以位于同一主机上,但在单独的主机上运行HiveServer进程可提供更好的可用性和可伸缩性。

远程模式优于本地模式的主要优点是远程模式不需要管理员与每个Hive用户共享Metastore数据库的JDBC登录信息。 HCatalog需要此模式。

支持的Metastore数据库

有关最新信息,请参阅CDH和Cloudera Manager支持的数据库。Cloudera强烈建议您使用MySQL,因为它是Hive用户社区中最受欢迎的,因此,它比其他选项获得更多测试。有关安装信息,请参阅:

除了上述支持的数据库之外,CDH还支持使用MariaDB。有关安装和配置MariaDB for CDH的信息,请参阅MariaDB数据库

Metastore内存和硬件要求

图片.png

图片.png

Cloudera建议将HiveServer2分成多个实例,并在您开始为HiveServer2分配超过12 GB的空间时对其进行负载平衡。目标是调整大小以减少Java垃圾回收对服务进行的活动处理的影响。

使用Bytes Hive配置属性中的HiveServer2的Java堆大小来设置此值。

使用Bytes Hive配置属性中的Hive Metastore Server的Java堆大小设置此值。

重要提示:这些数字只是一般性指导,可能会受到诸如列数,分区,复杂联接和客户端活动等因素的影响。根据您的预期部署,通过测试进行优化以达到您的环境的最佳值。

有关为Hive元存储配置堆以及HiveServer2和Hive客户端的信息,请参阅Hive组件的堆大小和垃圾收集

配置Metastore数据库

本节介绍如何配置Hive以使用远程数据库,以及MySQLPostgreSQLOracle的示例。

Hive Metastore的配置属性记录在Apache wiki上的Hive Metastore Administration文档中

注意:有关安全群集中可能需要的其他配置的信息,请参阅Hive身份验证

为Hive Metastore配置远程MySQL数据库

Cloudera建议您在驻留在主机上的一台或多台远程服务器上配置Metastore的数据库,或与HiveServer1或HiveServer2进程分开的主机上配置数据库。MySQL是最常用的数据库。使用以下步骤配置远程Metastore。如果您打算使用云服务数据库(例如Amazon Relational Database Service(RDS)),请参阅如何将共享Amazon RDS设置为CDH的Hive Metastore,以获取有关如何将共享Amazon RDS设置为您的Hive的信息metastore。

  1. 如果您尚未安装并启动MySQL,请安装并启动它

    在RHEL系统上安装MySQL:

$ sudo yum install mysql-server

在使用该命令安装MySQL之后,您可能需要确认您确实想要完成安装。安装完成后,启动 MySQL的 守护进程。

**在RHEL系统上**
$ sudo service mysqld start
  1. 配置MySQL服务和连接器

    在您可以使用远程MySQL数据库运行Hive Metastore之前,您必须为远程MySQL数据库配置连接器,设置初始数据库模式,并为Hive用户配置MySQL用户帐户。

    要在RHEL 6系统上安装MySQL连接器,请执行以下操作:

    在Hive Metastore服务器主机上安装 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
注意:在发布时,版本为5.1.31 ,但是在阅读本文时,版本可能已更改。如果您正在使用MySQL版本5.6,则必须使用版本5.1.26或更高版本的驱动程序。
  1. 创建数据库和用户

    本节中的说明假定您正在使用远程模式,并且MySQL数据库安装在不同于主机上。在这个例子中mysql主机名为 metastorehost 。

    注意:如果Metastore服务将在安装数据库的主机上运行,在 CREATE USER例子中使用localhost 替换 'metastorehost'。同样,在/etc/hive/conf/hive-site.xml文件中,设置javax.jdo.option.ConnectionURL的值为jdbc:mysql://localhost/metastore 。有关添加MySQL用户的更多信息,请参阅http://dev.mysql.com/doc/refman/5.5/en/adding-users.html

    创建初始数据库模式。Cloudera建议使用Hive模式工具(schemaTool) 来执行此操作。

    如果由于某种原因你决定不使用模式工具,你可以使用 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模式工具时才执行此操作。

$ 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数据库模式中创建或更改表格非常重要。

重要提示:为防止用户在使用较低或较高版本的Hive时无意中破坏了Metastore模式,请设置 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服务与MySQL数据库进行通信

    此步骤显示您需要在 hive-site.xml (/usr/lib/hive/conf/hive-site.xml)中设置的属性。虽然你可以在所有主机(客户端,Metastore,HiveServer)上使用相同的hive-site.xml , hive.metastore.uris是唯一必须配置的属性; 其他只用于metastore主机。

    给定一个MySQL数据库 为myhost 和用户帐户hive 与密码 mypassword,请按如下所示设置配置(覆盖任何现有值)。

<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); 设置hive.metastore.uris  足以表明您正在使用远程Metastore。

为Hive Metastore配置远程PostgreSQL数据库

为Hive Metastore配置远程Oracle数据库

在您可以使用远程Oracle数据库运行Hive Metastore之前,您必须配置连接器到远程Oracle数据库,设置初始数据库模式并为Hive用户配置Oracle用户帐户。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容