在 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

热门文章

暂无图片
编程学习 ·

【数据结构】-排序-快速排序

~快速排序在平均情况下是效果最好的排序算法~每趟子表的排序都是从两头向中间交替逼近,接下来举一个例子类别排序方法最好时间最坏时间平均时间空间复杂度稳定性序列特征适用于插入排序直接插入排序n(顺序)n2(逆序)n21稳定有序序列+待排序元素+无序序列基本有序/n很小折半插…
暂无图片
编程学习 ·

CnPlugin是PL/SQL Developer工具插件使用

CnPlugin是PL/SQL Developer工具插件,支持PL/SQL Developer 7.0以上版本。1、安装2、拷贝文件安装结束后,得到一个 CnPlugin.dll 和 “CnPlugin”的文件夹,把这两个拷贝到 PL/SQL Developer的安装路径下的 “PlugIns”目录下,重启PL/SQL Develop可以使用了,打开的时候 会在…
暂无图片
编程学习 ·

【Flutter 实战】简约而不简单的计算器

老孟导读:这是 【Flutter 实战】组件系列文章的最后一篇,其他组件地址:http://laomengit.com/guide/widgets/Text.html,接下来将会讲解动画系列,关注老孟,精彩不断。先看一下效果:大家学习UI编程语言时喜欢用哪个 App 当作第一个练手的项目呢?,我喜欢使用 计算器 ,可…
暂无图片
编程学习 ·

Docker 2375 端口入侵服务器,部分解决方案

docker remote API的同学对2375端口入侵服务器2375->上传镜像-》获取控制权-》ssh pub key 注入-》登入服务器核心总结:1.禁用2375 2.创建linux新用户 3.禁止root远程登录4.卸载重新安装docker,并删除之前的文件5.禁止外网一、创建新用户以及授权创建用户adduser limp用户…
暂无图片
编程学习 ·

Vue&Element

Vue&Element Vue 快速入门 Vue 介绍Vue 是一套构建用户界面的渐进式前端框架。 只关注视图层,并且非常容易学习,还可以很方便的与其它库或已有项目整合。 通过尽可能简单的 API 来实现响应数据的绑定和组合的视图组件。 特点 易用:在有 HTML CSS JavaScript 的基础上,快…
暂无图片
编程学习 ·

linux安装nginx及https化

Linux安装nginx安装操作系统:centos 安装前先确保系统安装了g++、gcc、openssl-devel、pcre-devel和zlib-devel软件yum install gcc-c++ yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel上传nginx安装包nginx-1.13.0.tar.gz至linux指定位置(/usr/loc…
暂无图片
编程学习 ·

NLP 任务中有哪些巧妙的 idea?

文章目录1. 分布式假设(Distributional Hypothesis)2. 词袋模型(Bag-of-Words)3. 潜在语义分析(Latent Semantic Analysis)4. 概率主题模型(Probabilistic Topic Models )5. 基于BMES的中文分词或基于BIO的NER/Chunking6. 基于PageRank的TextRank转载来源:https://www…
暂无图片
编程学习 ·

挂牌一年,关于 5G 的 9 个变化

简介:2019 年 6 月 6 日的一张新闻图片瞬间刷遍全网,意味着中国正式进入 5G 时代,2019 年也被业界称为 5G 商用元年。转眼间一年过去,这个不断被提及的 5G 新星发展到了什么程度呢,让我们再来回顾和展望一下。3GPP 标准进展移动通讯网络作为全球的基础设施,标准化是基础,…
暂无图片
编程学习 ·

Spark1.x升级Spark2.x常见异常Kafka篇【TopicMetadataRequest】

一.原因分析 当Spark从1.x升级到2.x时,如果使用SparkStreaming加载Kafka的数据,即使Kafka版本没有变化【一般会有所升级】,对应的spark-streaming-kafka也必须升级到对应版本,访问方式也会有所变化。 此处是从Spark1.6.0升级到Spark2.4.3,Kafka略有升级【从2.1.0升级到2.2…
暂无图片
编程学习 ·

C#读取csv数据隔行读取异常问题

##CSV隔行读取 读取代码 StreamReader sd = new StreamReader(SavePath, Encoding.Default); sting stringLine=""; while (sd.ReadLine()!=NULL)//此处已读取一行,但未赋值{stringLine = sd.ReadLine(); }应修改为 while (sd.Peek()>0)//此处已读取一行,但未赋…
暂无图片
编程学习 ·

手动连接线上presto

命令如下: java -jar presto-cli-0.237-executable.jar --server https://presto.ludp.lenovo.com:30070 --catalog hive --truststore-path /opt/jdk1.8.0_25/jre/lib/security/keystore.jks --truststore-password changeit在之前可以先测试一下网络 ping presto.ludp.lenov…
暂无图片
编程学习 ·

linux 修改时间并永久生效

Centos系统,必须同时修改系统时间和硬件时间,才可以保证修改有效,单纯的使用date命令修改系统时间,是立即生效,重启后系统还原。具体操作如下:1.date {查看目前本地的时间}2.hwclock --show {查看硬件的时间}3.如果硬件时间和系统时间不同,那就对硬件的时间进行修改4.hw…
暂无图片
编程学习 ·

TabRow + TextView导致文字显示不完全

我们在使用表格布局TabLayout时会出一个现象:TextView显示文字时当超过屏幕换行是最后一个文字显示不完全,这个时候我们可以将Textview改成如下布局即可将android:layout_width="wrap_content"改为android:layout_width="0dp" 同时添加该属性android:lay…
暂无图片
编程学习 ·

小样本如何选择学习方法

小样本该如何学习: https://zhuanlan.zhihu.com/p/152122909 小样本学习专栏:https://zhuanlan.zhihu.com/c_1258398000180768768 若喜欢,请关注知乎专栏账号,后面持续更新小样本学习相关内容。
暂无图片
编程学习 ·

opencv画圆与棋盘图

画出的效果如下:代码 import os import cv2 import numpy as npboard_pixel_width=200 ncols=9 nrows=6if __name__=="__main__":image_width=(ncols+1)*board_pixel_widthimage_height=(nrows+1)*board_pixel_widthres=np.zeros((image_height,image_width,1),np.u…
暂无图片
编程学习 ·

数据库原理及应用教程陈志泊-第三章课后习题

一、选择题1. B 2. A 3. C 4. B 5. C 6. C7. B 8. D 9. A 10. D 11. C 12. D二、填空题1. 结构化查询语言2. 数据查询、数据定义、数据操纵、数据控制3. 外模式、模式、内模式4. 数据库、事务日志5. NULL/NOT NULL 、 UNIQUE 约束、 PRIMARY KEY 约束、 FOREIGN KEY …
暂无图片
编程学习 ·

Java中的递归

Java中的递归(涉及到面试)举个例子: package com.wang.digui; /* 递归*/ public class Demo {public static void main(String[] args) {int calcetor = calcetor(3);System.out.println(calcetor);}//算阶乘的public static int calcetor(int n){if (n == 1){return 1;}els…