在 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  
      
    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 中添加如下配置
      
        hive.metastore.transactional.event.listeners
        
          org.apache.hive.hcatalog.listener.DbNotificationListener,
          org.apache.kudu.hive.metastore.KuduMetastorePlugin
        
      
      
      
        hive.metastore.disallow.incompatible.col.type.changes
        false
      
      
      
        hive.metastore.notifications.add.thrift.objects
        true
      
      
    2. 将 hms-plugin.jar 添加到 HMS 类路径下。
    3. 重新启动 HMS 服务。
    4. 在 Kudu 中配置以下属性
      --hive_metastore_uris=
      --hive_metastore_sasl_enabled=
      
      --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

你可能感兴趣的:(Kudu)