当前位置:   article > 正文

在 Kudu 中集成 Hive Metastore_kudu 与hive结合

kudu 与hive结合

在启用 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
    
    • 1
  2. 执行升级
    1. 运行 kudu hms precheck 工具检查 Kudu 表名称是否不同。如果未报告任何警告,则可以跳过第二步。
      [root@node01 ~]# sudo -u kudu kudu hms precheck cdh01:7051,cdh02:7051,cdh03:7051
      
      • 1
    2. 如果 kudu hms precheck 工具有冲突,可以使用以下命令将它们重命名为不区分大小写的唯一名称
      $ sudo -u kudu kudu table rename_table cdh01:7051,cdh02:7051,cdh03:7051 <conflicting_table_name> <new_table_name>
      
      • 1
    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
      
      • 1
    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
      
      • 1
    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
      
      • 1
    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>
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
    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>
      
      • 1
      • 2
      --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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/417484
推荐阅读
相关标签
  

闽ICP备14008679号