在 Kudu 中集成 Hive Metastore

在启用 Kudu-HMS 集成之前,要确保 Kudu 和 HMS 现有表的视图一致。这可能需要重命名Kudu表以符合Hive命名约束。在启用与 Hive Metastore 集成之前应升级现有 Kudu 表。

  1. 准备升级

    在升级过程中,Kudu群集仍然可用。Kudu 和 Hive Metastore 中的表可能会更改或重命名。
    可以使用以下命令记录所有外部表并将其删除。这减少了与 Kudu 表发生命名冲突,导致升级过程中出现错误。升级完成后,重新创建外部表。

    [root@node01 ~]# sudo -u kudu kudu hms list cdh01:7051,cdh02:7051,cdh03:7051
    
  2. 执行升级
    1. 运行 kudu hms precheck 工具检查 Kudu 表名称是否不同。如果未报告任何警告,则可以跳过第二步。
      [root@node01 ~]# sudo -u kudu kudu hms precheck cdh01:7051,cdh02:7051,cdh03:7051
      
    2. 如果 kudu hms precheck 工具有冲突,可以使用以下命令将它们重命名为不区分大小写的唯一名称
      $ sudo -u kudu kudu table rename_table cdh01:7051,cdh02:7051,cdh03:7051 <conflicting_table_name> <new_table_name>
      
    3. 使用 kudu hms check 工具检查目录是否一致,如无,跳至第七步。
      [root@node01 ~]# sudo -u kudu kudu hms check cdh01:7051,cdh02:7051,cdh03:7051 --hive_metastore_uris=thrift://hive-metastore:9083 --ignore_other_clusters=false
      
    4. 使用 kudu hms fix 解决可自动修复的问题
      [root@node01 ~]# sudo -u kudu kudu hms fix cdh01:7051,cdh02:7051,cdh03:7051 --hive_metastore_uris=thrift://hive-metastore:90 --dryrun=true --ignore_other_clusters=false
      
    5. 手动修复检查工具无法自动修复的所有问题。
    6. 使用 kudu hms fix 工具自动修复所有剩余的问题
      [root@node01 ~]# sudo -u kudu kudu hms fix cdh01:7051,cdh02:7051,cdh03:7051 --hive_metastore_uris=thrift://hive-metastore:90 --dryrun=true --ignore_other_clusters=false
      
    7. 使用 Impala Shell 重新创建在准备升级时删除的所有外部表。
  3. 与 Hive Metastore 集成
    1. 在 hive-site.xml 中添加如下配置
      <property>
        <name>hive.metastore.transactional.event.listeners</name>
        <value>
          org.apache.hive.hcatalog.listener.DbNotificationListener,
          org.apache.kudu.hive.metastore.KuduMetastorePlugin
        </value>
      </property>
      
      <property>
        <name>hive.metastore.disallow.incompatible.col.type.changes</name>
        <value>false</value>
      </property>
      
      <property>
        <name>hive.metastore.notifications.add.thrift.objects</name>
        <value>true</value>
      </property>
      
    2. 将 hms-plugin.jar 添加到 HMS 类路径下。
    3. 重新启动 HMS 服务。
    4. 在 Kudu 中配置以下属性
      --hive_metastore_uris=<HMS Thrift URI(s)>
      --hive_metastore_sasl_enabled=<value of the Hive Metastore's hive.metastore.sasl.enabled configuration>
      
      --hive_metastore_sasl_enabled 设置为 true 时,--hive_metastore_kerberos_principal 必须与 Hive Metastore 中 hive.metastore.kerberos.principal 匹配
    5. 重新启动 Kudu 服务。

    注意:
    如果 Hive Metastore 使用了 Apache Sentry 配置了细粒度的授权并且启用Sentry HDFS Sync功能时,Kudu 管理员需要能够访问和修改 HMS 为 Kudu 创建的目录。需要将 Kudu 管理员用户添加到 Hive 服务用户组中,usermod -aG hive kudu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值