kudu可视化工具:kudu-plus

2023-10-17 08:56:21 浏览数 (1)

kudu

Kudu是为Apache Hadoop平台开发的列式数据库。Kudu拥有Hadoop生态系统应用程序的常见技术属性:它可以商用硬件上运行,可横向扩展,并支持高可用性操作。

kudu-plus是什么

kudu-plus是可视化管理kudu的工具,由于kudu虽然是列式数据库,但是可以表达成关系数据库类似的表和字段等信息,某种情况下通过可视化管理更加轻松。kuduplus包括对表和数据的操作约束,可以帮助更好的理解kudu。本工具可用于学习和测试等。

github地址

https://github.com/Xchunguang/kudu-plus

kudu基础

kudu列类型

  • 布尔
  • 8位有符号整数
  • 16位有符号整数
  • 32位有符号整数
  • 64位有符号整数
  • unixtime_micros(Unix时代以来的64位微秒)
  • 单精度(32位)IEEE-754浮点数
  • 双精度(64位)IEEE-754浮点数
  • 十进制(详见十进制类型)
  • UTF-8编码字符串(最多64KB未压缩)
  • 二进制(最多64KB未压缩)

kudu分区

  • 范围分区: Kudu允许在运行时动态添加和删除范围分区,而不会影响其他分区的可用性。删除分区将删除属于该分区的平板电脑以及其中包含的数据。后续插入到已删除的分区中将失败。可以添加新分区,但它们不得与任何现有范围分区重叠。Kudu允许在单个事务更改表操作中删除和添加任意数量的范围分区。 动态添加和删除范围分区对于时间序列用例特别有用。随着时间的推移,可以添加范围分区以覆盖即将到来的时间范围。例如,存储事件日志的表可以在每个月开始之前添加月份分区,以便保存即将发生的事件。可以删除旧范围分区,以便根据需要有效地删除历史数据。
    • 范围分区的键必须是主键列的一个子集
    • 在没有散列分区的范围分区表中,每个范围分区将恰好对应于一个tablet
    • kudu允许在运行时添加或删除范围分区,而不会影响其他分区的可用性。删除分区将删除属于该分区的tablet以及其中包含的数据。后续插入到已删除的分区的数据将失败。添加的新分区不能与现有的范围分区重叠。
    • 动态添加和删除范围分区对于时间序列用例特别有用。随着时间的推移,可以添加范围分区以覆盖即将到来的时间范围。例如,存储事件日志的表可以在每个月开始之前添加月份分区,以便保存即将发生的事件。可以删除旧范围分区,以便在必要时有效地删除历史数据。
  • 哈希分区: 散列分区按散列值将行分配到许多存储桶之一。在单级散列分区表中,每个桶只对应一个tablet。在表创建期间设置桶的数量。通常,主键列用作要散列的列,但与范围分区一样,可以使用主键列的任何子集。 当不需要对表进行有序访问时,散列分区是一种有效的策略。散列分区对于在tablet之间随机传播写入非常有效,这有助于缓解热点和不均匀的tablet大小。
    • 哈希分区不允许动态添加和删除
  • 优缺点: 散列分区可以最大限度地提高写入吞吐量,而范围分区可以避免无限制的tablet增长问题。这两种策略都可以利用分区修剪来优化不同场景下的扫描。使用多级分区,可以将这两种策略结合起来,以获得两者的好处,同时最大限度地减少每种策略的缺点。
  • java操作分区: 查看测试用例部分代码

kudu主键设计

  • 每个Kudu表必须声明由一列或多列组成的主键。与RDBMS主键一样,Kudu主键强制执行唯一性约束。尝试插入具有与现有行相同的主键值的行将导致重复键错误。
  • 主键列必须是非可空的,并且可能不是boolean,float或double类型。
  • 在表创建期间设置后,主键中的列集可能不会更改。
  • 与RDBMS不同,Kudu不提供自动递增列功能,因此应用程序必须始终在插入期间提供完整的主键。
  • 行删除和更新操作还必须指定要更改的行的完整主键。Kudu本身不支持范围删除或更新。
  • 插入行后,可能无法更新列的主键值。但是,可以删除行并使用更新的值重新插入。

kudu存在的已知限制

  • 列数 默认情况下,Kudu不允许创建超过300列的表。我们建议使用较少列的架构设计以获得最佳性能。
  • 单元格大小 在编码或压缩之前,单个单元不得大于64KB。在Kudu完成内部复合密钥编码之后,构成复合密钥的单元限制为总共16KB。插入不符合这些限制的行将导致错误返回给客户端。
  • 行的大小 虽然单个单元可能高达64KB,而Kudu最多支持300列,但建议单行不要大于几百KB。
  • 有效标识符 表名和列名等标识符必须是有效的UTF-8序列且不超过256个字节。
  • 不可变主键 Kudu不允许您更新一行的主键列。
  • 不可更改的主键 Kudu不允许您在创建表后更改主键列。
  • 不可更改的分区 除了添加或删除范围分区之外,Kudu不允许您在创建后更改表的分区方式。
  • 不可改变的列类型 Kudu不允许更改列的类型。
  • 分区拆分 创建表后,无法拆分或合并分区。
  • 主键列必须在非主键列之前
  • 表的副本为奇数,且不能大于7,在建表时指定,且不可修改

分支说明

master为主要分支,使用kudu-client1.8.0,但我偶尔发现在某些集群的使用中产生如下错误:

代码语言:javascript复制
Caused by: org.apache.kudu.client.NoLeaderFoundException: Master config (192.168.20.133:7051) has no leader.Exceptions received: org.apache.kudu.client.RecoverableException: connection disconnected

但是将kudu-client的版本改为1.4.0则不会产生此问题,为了正常使用产生了develop-1.4分支,问题正在研究,给出的打包文件也先基于develop-1.4分支进行打包

kudu-plus版本功能实现

v0.0.1(当前)

  • 查看kudu集群所有表
  • 创建kudu表
  • 删除kudu表
  • 重命名kudu表
  • 更新kudu表结构:修改非主键列名、修改非主键列默认值、修改非主键列的是否允许为空、新增非主键字段、删除非主键字段
  • 查看kudu表分区信息
  • 预览kudu表数据
  • 编辑kudu表非主键列数据
  • 删除kudu表数据行
  • 新增kudu表数据行
  • 检索kudu表数据添加筛选条件

v0.0.2功能(预期)

  • 创建kudu表可以添加hash分区和range分区
  • 编辑kudu表可以添加和删除range分区
  • kudu表导出为MySQL或其他类型导出
  • kudu表导入数据

软件截图

下载试用

链接:百度网盘 请输入提取码 提取码:7ltk

0 人点赞