不多说,直接上干货!

 Kudu1.1.0

新特性

  1. python API升级,具备JAVA C++client一样的功能(从0.3版本直接升级到1.1),主要的点如下: 
    1.1. 改进了Parial Row的语义 
    1.2. 增加了range partition支持 
    1.3. 提供了 scan api 
    1.4. 增强predicate支持 
    1.5. 支持所有kudu的类型,包括datetime.datetime转化成UNIXTIME_MICROS 
    1.6. 支持修改表(alter) 
    1.7. scanner可以读取快照数据 
    1.8. 支持scanner副本选择 
    1.9. python 
    1.10. 一些bug的修复
  2. 为了优化过滤,增加了IN LIST predicate pushdown的支持(即匹配一列中一个集合的数据,predicate push down类似于hbase的协处理器coprocessors),有些过滤在后台执行。spark、mr和impala query的此项功能还没有完成。 
    为了便于查错,Java client增加了client-side请求追踪。原先只有最终的错误日志,没有导致最终错误其他日志信息。

优化和改进

  1. kudu发布了spark2.0(编译于scala2.11)的JAR。
  2. 通过配置java client可以从最近的副本读取数据,而不是原先的从leader副本读取数据。不过默认还是后者,可以通过设置scanner builder replicaSelection参数来调整。
  3. Tablet server采用一种新策略来维护write-ahead log(WAL)。原先使用log_min_segments_to_retain=2的策略,这种策略会过于频繁flush内存数据,限制了写入的性能。新策略引入了一个新的参数log_target_replay_size_mb,它决定了flush内存数据的阀值,而且这个参数值已经经过实验验证,用户不需要去修改它。这个新策略在某些写入用例下,提升了相对2x倍的写入性能。
  4. kudu Raft consensus algorithm 算法加入了一个新的阶段pre-election,它可以在高负荷的情况下,更稳定的进行leader选举,特别在一个tabletserver含有大量的tablet的情况下。
  5. 提升了在tabletserver含有大量的tombstoned tablet时,tabletserver的启动的速度。

工具

  1. kudu tablet leader_step_down,step down一个leader tablet。
  2. kudu remote_replica copy拷贝tablet从一个running tabletserver。
  3. kudu local_replica delet删除tablet。
  4. kudu test loadgen

兼容性

  1. 1.1的client可以连接到1.0的kudu服务。
  2. 1.0的client可以无限制的连接到1.1kudu服务。
  3. 滚动升级从1.0到1.1是可能的,但是没有完整的测试。建议安装关闭所有节点,更新版本,启动更新的节点的步骤来升级。

参考

https://github.com/cloudera/kudu/blob/master/docs/prior_release_notes.adoc 
个人github https://github.com/qiulp/doc/edit/master/kudu/kudu1.1.0.md

Kudu1.2.0

新特性

  1. kudu clients和servers可以编辑用户的数据,例如log信息,java的异常信息和状态信息。但用户的元数据是不可编辑的,例如表名,字段名,分区边界。默认是可编辑的,但可以通过设置log_redact_user_data=false关闭。
  2. kudu一致性保证的能力大幅度提升了: 
    每个副本都会track它们的 safe timestamp,这个时间戳是最大时间戳,在这个时间戳上读是可重复的。

    SCAN_AT_SNAPSHOT模式的scan,要不等待本副本的snapshot safe后再查,要不路由到一个safe的副本查。如此保证数据scan是可重复的。

    Kudu会保留以往所有历史数据,无论是插入,还是删除,还是相同key插入一条新的数据。以往版本的kudu不会保留历史数据在这种情况下。如此tablet server可以得到历史某一时间段点的准确的快照,即便是重新插入的情形。

    kudu client会自动记住它们最近成功读取或者写入操作的时间戳。在使用READ_AT_SNAPSHOT模式,且没有指定时间戳的情况下,scan会自动指定一个比最近写入时间戳大的时间戳。写入同样会传播timestamp,确认一系列的有因果关系的操作,能被指定有序的时间戳。总的来说,这个改变,可以保证数据的读写一致性,同样保证了在其他clients上的快照查询能等到一致的结果。

  3. kuduserver自动限制了log文件数量,默认是10个,通过参数max_log_files设置。

优化和改进

  1. java和c++client的日志将会变得更平和,不在记录正常操作的日志,而记录error日志。
  2. c++client提供一个KuduSession::SetErrorBufferSpace API,通过它可以限制同步操作异常的buffer大小。
  3. java client可以获取tablet地址信息1000个一个批次(原先是10)。如此可以提升spark或者impala查询具有大量tablets的表性能。
  4. kudu master表元数据信息的锁竞争大幅度缓解。如此提升了在大集群环境下寻址(tablet)的高并发度。
  5. tablet server端的高并发写的锁竞争同样被缓解了。
  6. 写日志的锁竞争也被缓解。

修复的bug

  1. KUDU-1508,ext4file的文件系统损坏。
  2. KUDU-1399,实现LRU cache解决长时间运行的kudu机器openfiles不够的问题。默认kudu会使用ulimit的一半的量。 
    省略

兼容性

  1. 1.2.0与历史版本兼容
  2. 1.2client可以了解1.0server,只是有些没有的功能不可用。
  3. 1.0cleint可以连接1.2,没有任何限制。
  4. 滚动升级从1.0到1.1是可能的,但是没有完整的测试。建议安装关闭所有节点,更新版本,启动更新的节点的步骤来升级。

不可兼容变化

  1. 副本因子最大值改成7,并且副本不能是偶数。
  2. 不提供GROUP_VARINT无损压缩算法。

约束性

  1. 列数,建议不超过300列,建议列数越少越好。
  2. cell大小,不能大于64KB,不然写入时client有error信息。
  3. 有效标识符,表名列名严格要求是UTF-8,且不能超过256个字符。

引用

https://github.com/cloudera/kudu/blob/master/docs/release_notes.adoc 
我的github https://github.com/qiulp/doc/blob/master/kudu/kudu1.2.0.md

Kudu1.3.0

新特性

  1. 增加了kerberos安全认证,可以通过kerberos tickets或者keytabs文件认证。此新特性是个可选项,推荐在部署环境中增加安全机制。

  2. 增加了Transport Layer Security(TLS)网络安全传输协议,kudu将会对任意client和server间的信息通信进行加密。默认加密是开启的,无论client或者server端都可以决定是否启用加密。

  3. 增加了粗粒度服务级别的授权。细粒度的授权,例如表级别、字段级别,暂不支持。

  4. 增加了清理过期历史版本数据(超过保留时间)的后台任务。减少磁盘空间的使用,特别是有频繁更新的数据。

  5. 便于诊断错误,集成了Google Breakpad,它产生的reports可以在配置的日志文件夹中看到。

优化

  1. 修改了数据目录和数据文件的权限,可以通过–umask配置。升级之后文件权限会更加严格。

  2. Web UI 去除了一些用户的敏感信息,例如查询时的predicate values。

  3. 默认kudu对配置的磁盘预留1%空间,当磁盘空闲空间不足1%时,为避免完全写满磁盘,会停止写入数据。

  4. 数字列(int float double)默认编码BIT_SHUFFLE,binary string类型的变成DICT_ENCODING。此类编码存储机制类似于parquet。

  5. WAL使用LZ4压缩,提升写入性能和稳定性。

  6. Delta file使用LZ4压缩,可以提高读和写,特别是频繁更新的可压缩数据。

  7. Kudu API在查询时支持IS NULL 和 IS NOT NULL(KuduPredicate.newIsNotNullPredicate)的pridicate,spark datasource集成可以利用这些新的predicate。

  8. C++ 和 Java client “in partitions”的查询有优化。

  9. Java client的异常信息被截断成最大的32KB。

兼容性

  1. Kudu 1.3 可连接kudu1.0 server,调用新特性时会报错。

  2. kudu 1.1 可连接kudu1.3 server,但当集群配置了安全认证,将会报错。

  3. 从1.2滚动升级到1.3没有被充分验证。建议使用者关闭整个集群,升级版本,然后重启新版本,通过这种方式来升级。

  4. 升级后,如果1.3版本设置了安全认证(authentication or encryption set to “required”),老版本的client将不能连接服务。

  5. 升级后,如果1.3版本没有设置安全认证(set to “optional” or “disabled”),老版本的client还能继续连接server。

不可兼容变化

  1. 因为存储格式变化,1.3版本将不能降级到老版本。

  2. 为了在配置了安全的集群上跑mr或者spark任务,需要提供认证凭证。

引用

https://github.com/cloudera/kudu/blob/master/docs/release_notes.adoc 
个人github https://github.com/qiulp/doc/edit/master/kudu/kudu1.3.0.md

Kudu1.1.0 、 Kudu1.2.0 Kudu1.3.0的版本信息异同比较相关推荐

  1. WIN10+RTX 2080Ti深度学习平台搭建,VS2019+CUDA11.0+cuDNN8.0+python3.8.7+Tensorflow2.4.0+Keras,以及各种科学包

    WIN10+RTX 2080Ti深度学习平台搭建 前置声明:博文中有一些图片来自网上截图(因为安装完成后做的记录,有些安装过程图嫌麻烦没有复现),侵删. 可选步骤: 如果之前有python环境,需要卸 ...

  2. Python将小于0的书数换成0的几种方式

    >>> import numpy as np >>> a = np.random.randint(-5, 5, (5, 5)) >>> a arr ...

  3. aix oracle 10.2.0.1 升级 10.2.0.4,安装oracle 10.2.0.4 on aix 6.1的不同之处

    根据Oracle Database Installation Guide 10g Release 2 (10.2) for AIX 5L Based Systems (64-Bit)文档,在AIX 6 ...

  4. 创建符合标准的、有语意的HTML页面——ASP.NET 2.0 CSS Friendly Control Adapters 1.0发布...

    ASP.NET 2.0提供了非常多的Web开发中常用到的复杂控件,例如Menu.GridView.Login等.虽然这些控件使用方法极为简单,且功能异常强大,但若你查看一些由这些控件所生成的HTML代 ...

  5. mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could not open libgthreads.so help!!!!

    周五, 2007/07/06 - 17:28 - zhenghz mysql-4.0.20 use on scounix 5.0.7 error :dynamic linker:..:could no ...

  6. windows 2003 下oracle从10.2.0.1升级到10.2.0.4

    方法一: 1. 完全安装10.2.0.1 2. 安装完成后,停止所有的oracle服务,可以通过停止oracle 的window services或者使用以下命令来实现. emctl stop dbc ...

  7. MonoDevelop 1.0 和 Mono 1.9(2.0 beta)发布了

    经过了几年时间的发展,MonnoDevelop终于发布了一个Release版本.MonoDevelop 是一个开放源代码的 Mono 开发工具,它允许开发人员在 Linux 和 Mac OS X 平台 ...

  8. VMware vSphere Client(4.1/5.0/5.1/5.5/6.0) 客户端下载地

    前言 VMware作为商业虚拟化方案的佼佼者不知不觉中已经成长为一颗苍天大树,面对OpenStack和Docker的夹击希望VMware可以继续勇往直前,从vSphere 6.5开始终于彻底告别Cli ...

  9. Oracle 10g(10.2.0.4)升级到10.2.0.5.19

    一.将数据库版本从10.2.0.4 升级到 10.2.0.5,再升级到10.2.0.5.19 (1) 备份等过程略过,一个老库的升级过程,记录之.   (2) 一致性关闭数据库及监听 sqlplus ...

最新文章

  1. Java 爬虫--类似Python的requests库--HttpClient, HttpAsyncClient--Maven
  2. Qt学习之路(24): QPainter
  3. Netty-案例 WebSocket与netty实现长连接案例(代码注释详解)
  4. viewer vue 文档_vue基于viewer实现的图片查看器
  5. opengl与Directx的区别
  6. php mkdir 无效,PHP mkdir()无写权限的问题解决方法
  7. 谷歌能让死去的亲人继续活在网络世界,即便他们从来不上网
  8. apache代理weblogic集群办法
  9. php中type的格式,javascript – 在php中动态生成的输入[type = date]格式值
  10. XLua访问C#中的List或者数组
  11. sed的选项与命令简要
  12. java 句柄无效_sql报句柄无效。 (异常来自 HRESULT:0x80070006 (E_HANDLE))
  13. 路线规划算法设计要点
  14. 查找——图文翔解RadixTree(基数树)
  15. 计算机网络知识自问自答,2020计算机网络学习心得体会.doc
  16. 数据建模 Database Modeling:概念 (Conceptual) vs 逻辑 (Logical) vs 物理数据 (Physical) 模型
  17. 在Ubuntu上安装Azure DevOps self-hosted agent
  18. (1)网站搭建BT面板的安装步骤
  19. 数字图像处理与应用——图像和视频压缩技术
  20. MFC 的 Picture Control 加载 BMP/PNG 图片的方法

热门文章

  1. 监听Hierachy、Project等视图结构变化的事件
  2. Java生鲜电商平台-SpringCloud微服务架构高并发参数优化实战
  3. How to ignore files and directories in subversion?
  4. python os操作
  5. python全栈开发-json和pickle模块(数据的序列化)
  6. 用一辈子去领悟的生活经典[转帖]
  7. █年薪20万招聘软件工程师!!!
  8. VS 2005 安装一个的小问题
  9. bootstrap-select采坑
  10. vs code打开文件显示的中文乱码