14 Star 36 Fork 13

xuchg / kudu-plus

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
Apache-2.0

kudu-plus kudu可视化工具

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

kudu-plus是什么

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

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,但我偶尔发现在某些集群的使用中产生如下错误:

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表导入数据

软件截图

soft1

soft2

soft3

下载试用

链接:https://pan.baidu.com/s/1_VX0wwAIh60-Mnus8r8uqQ 提取码:7ltk

Copyright 2018 xuchg Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

简介

kudu-plus是可视化管理kudu的工具,由于kudu虽然是列式数据库,但是可以表达成关系数据库类似的表和字段等信息,某种情况下通过可视化管理更加轻松。kuduplus包括对表和数据的操作约束,可以帮助更好的理解kudu 展开 收起
JavaScript 等 4 种语言
Apache-2.0
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
JavaScript
1
https://gitee.com/xuchg/kudu-plus.git
git@gitee.com:xuchg/kudu-plus.git
xuchg
kudu-plus
kudu-plus
master

搜索帮助