CDH 使用 Hive schematool

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

使用Hive命令行 schematool 为非托管集群升级或验证Hive Metastore数据库schema 。

注意:

如果您正在使用Cloudera Manager来管理群集,则schematool 也可以在Hive服务页面中验证或升级Metastore:

  1. 从Cloudera Manager管理控制台中,选择Hive服务。
    • 要验证架构,请在Hive服务页面上单击Actions ,然后选择Validate Hive Metastore Schema。
    • 升级模式:
      1. 在Hive服务页面上,单击Actions ,然后选择 停止服务。
      2. 仍然在Hive服务页面上,单击Actions ,然后选择升级Hive数据库Metastore架构。
      3. 升级完成后,重新启动服务。

继续阅读:

Schema版本Verification 和Validation

Hive将schema 版本记录在Metastore数据库中,并验证Metastore schema版本是否与即将访问Metastore的Hive二进制文件兼容。隐式创建或更改现有schema的Hive配置属性在默认情况下处于禁用状态。因此,Hive不会尝试隐式更改Metastore schema 。当您对schema 未初始化或 旧schema的Metastore执行Hive查询时,它无法访问Metastore,并且错误日志中会显示与以下示例类似的条目:

...
Caused by: MetaException(message:Version information not found in metastore. )
        at org.apache.hadoop.hive.metastore.ObjectStore.checkSchema(ObjectStore.java:5638)
...

使用Hive schematool 通过初始化schema或升级它来修复导致此错误的条件。

使用schematool

使用Hive schematool 为当前Hive版本初始化Metastore schema 或从旧版本升级架构。如果该工具在该处可用,该工具将尝试从Metastore中查找当前schema。

schematool 确定初始化或升级schema所需的SQL脚本,然后在Metastore数据库执行这些脚本。Metabase数据库连接信息(如JDBC URL,JDBC驱动程序和数据库凭证)从Hive配置中提取。如果需要,您可以提供备用数据库凭据。

以下选项是schematool 其中的一部分:

$ schematool -help
usage: schemaTool
 -dbType <databaseType>             Metastore database type                 
 -dryRun                                  List SQL scripts (no execute)                                       
 -help                                    Print this message
 -info                                    Show config and schema details
 -initSchema                              Schema initialization
 -initSchemaTo <initTo>             Schema initialization to a version
 -passWord <password>               Override config file password
 -upgradeSchema                           Schema upgrade
 -upgradeSchemaFrom <upgradeFrom>   Schema upgrade from a version
 -userName <user>                   Override config file user name
 -validate                                Validate the database
 -verbose                                 Only print SQL statements

dbType 选项必须始终指定,并且可以是以下之一:

derby|mysql|postgres|oracle

先决条件配置

在你使用schematool之前 ,您必须将以下属性添加到/etc/hive/conf/hive-site.xml 文件:

  • javax.jdo.option.ConnectionURL
  • javax.jdo.option.ConnectionDriverName

例如,以下 hive-site.xml, 如果您使用MySQL数据库作为您的Hive Metastore,hive1 是数据库用户名:

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:mysql://my_cluster.com:3306/hive1?useUnicode=true&amp;characterEncoding=UTF-8</value>
</property>
<property>
   <name>javax.jdo.option.ConnectionDriverName</name>
   <value>com.mysql.jdbc.Driver</value>
</property>

用法示例

使用 schematool 命令行工具,导航到它所在的目录:

  • 如果您使用parcel安装CDH,schematool 通常位于:/opt/cloudera/parcels/CDH/lib/hive/bin/schematool

  • 如果您使用软件包安装CDH, schematool 通常位于:/usr/lib/hive/bin/schematool

找到可执行文件后,可以使用 schematool 执行以下操作:

  • 使用initSchema 将您的Metastore初始化为新的Hive。
$ schematool -dbType mysql -initSchema -passWord <db_user_pswd> -userName
  <db_user_name>
Metastore connection URL:
jdbc:mysql://<cluster_address>:3306/<user_name>?useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: <user_name>
Starting metastore schema initialization to <new_version>
Initialization script hive-schema-<new_version_number>.mysql.sql
Initialization script completed
schemaTool completed
  • 使用info 获取模式信息。
$ schematool -dbType mysql -info -passWord <db_user_pswd> -userName
  <db_user_name>
Metastore connection URL:
jdbc:mysql://<cluster_address>:3306/<user_name>?useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: <user_name>
Hive distribution version:       <new_version>
Required schema version:         <new_version>
Metastore schema version:        <new_version>
schemaTool completed
  • 如果您尝试从未存储版本信息的旧版metastore获取架构信息,或者架构未初始化,则该工具将按如下所示报告错误。
$ schematool -dbType mysql -info -passWord <db_user_pswd> -userName
  <db_user_name>
Metastore connection URL:
jdbc:mysql://<cluster_address>:3306/<user_name>?useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: <user_name>
Hive distribution version:       <new_version>
Required schema version:         <new_version>
org.apache.hadoop.hive.metastore.HiveMetaException: Failed to get schema version,
Cause:<cause_description>
*** schemaTool failed ***
  • 您可以通过指定特定发行版来升级架构 -upgradeSchemaFrom 。-upgradeSchemaFrom选项需要Hive版本而不是CDH版本。有关每个CDH版本附带哪个Hive版本的信息,请参阅CDH 5 Packaging and Tarball信息。以下示例显示了如何从CDH 5.2 / Hive 0.13.1升级:
$ schematool -dbType mysql -passWord <db_user_pswd> -upgradeSchemaFrom
  0.13.1 -userName <db_user_name>
Metastore connection URL:
jdbc:mysql://<cluster_address>:3306/<user_name>?useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: <user_name>
Starting upgrade metastore schema from version 0.13.1 to <new_version>
Upgrade script upgrade-0.13.1-to-<new_version>.mysql.sql
Completed pre-0-upgrade-0.13.1-to-<new_version>.mysql.sql
Completed upgrade-0.13.1-to-<new_version>.mysql.sql
schemaTool completed
  • 使用 -validate 选项来验证Metastore schema。以下示例显示schematool 与此选项一起使用时对Metastore模式执行的验证类型:
$ schematool -dbType mysql -passWord <db_user_pswd> -userName
               <db_user_name> -validate
Starting metastore validation

Validating schema version
Succeeded in schema version validation.
[SUCCESS]

Validating sequence number for SEQUENCE_TABLE
Succeeded in sequence number validation for SEQUENCE_TABLE
[SUCCESS]

Validating metastore schema tables
Succeeded in schema table validation.
[SUCCESS]

Validating database/table/partition locations
Succeeded in database/table/partition location validation
[SUCCESS]

Validating columns for incorrect NULL values
Succeeded in column validation for incorrect NULL values
[SUCCESS]

Done with metastore validation: [SUCCESS]
schemaTool completed
  • 如果您想查找schema升级所需的所有脚本,请使用 dryRun 选项。
$ schematool -dbType mysql -upgradeSchemaFrom 0.10.0 -dryRun -passWord
              <db_user_pswd> -userName <db_user_name>
Metastore connection URL:
jdbc:mysql://<cluster_address>:3306/<user_name>?useUnicode=true&characterEncoding=UTF-8
Metastore Connection Driver : com.mysql.jdbc.Driver
Metastore connection User: <user_name>
Starting upgrade metastore schema from version 0.10.0 to <new_version>
Upgrade script upgrade-0.10.0-to-0.11.0.mysql.sql
Upgrade script upgrade-0.11.0-to-0.12.0.mysql.sql
Upgrade script upgrade-0.12.0-to-0.13.0.mysql.sql
Upgrade script upgrade-0.13.0-to-0.14.0.mysql.sql
Upgrade script upgrade-0.14.0-to-1.1.0.mysql.sql
Upgrade script upgrade-1.1.0-to-<new_version>.mysql.sql
schemaTool completed
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,928评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,192评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,468评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,186评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,295评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,374评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,403评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,186评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,610评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,906评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,075评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,755评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,393评论 3 320
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,079评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,313评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,934评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,963评论 2 351

推荐阅读更多精彩内容