Kudu1.1.0 、 Kudu1.2.0 Kudu1.3.0的版本信息异同比较

 

 

  不多说,直接上干货!

 

 

 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/257379.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ASP.NET Web API 中 特性路由(Attribute Routing) 的重名问题

刚才忘了说了,在控制器名重名的情况下,特性路由是不生效的。不然的话就可以利用特性路由解决同名的问题了。 而且这种不生效是真的不生效,不会提示任何错误,重名或者什么的,直接会报告404,所以也是个坑。转…

Python3爬取网页信息乱码怎么解决?(更新:已解决)

更新:乱码问题已经解决了。 将下面代码中的红色部分改为下面这样就不会出现个别职位信息乱码的情况了。 soup2 BeautifulSoup(wbdata2, html.parser,from_encoding"GBK") 另外: 建立了一个微信公众号,主要分享软件视频教程、文档笔…

洗衣机洗涤部分c语言程序,51单片机洗衣机控制板及C语言程序

51单片机洗衣机控制板及C语言程序,该控制板单片机采用AT89C51单片机,所设计全自动洗衣机功能有:标准洗衣、经济洗衣、单独洗衣以及排水四种洗衣等四种方式,有强洗、弱洗及运行/暂停、显示及报警功能,程序利用利用Protues仿真软件观…

数据存储

一、NSCoding &#xff1a; 使用NSCoding需要遵守<NSCoding> 保存&#xff1a; /** * 将某个对象写入文件时会调用 * 在这个方法中说清楚哪些属性需要存储 */ MJStudent.m - (void)encodeWithCoder:(NSCoder *)encoder { [encoder encodeObject:self.no forKey:"…

犯人释放的C语言程序,C语言的自动关机程序和一个用来整人的小程序

可以用C语言中的system()函数来实现系统的自动关机程序&#xff0c;可以设置多长时间后将自动关机。当然马上关机也是可以的&#xff0c;我们就可以恶搞别人计算机了(你事先得知道怎么解)&#xff0c;将写好的自动关机程序复制到别人电脑&#xff0c;然后将可执行的文件设为开机…

[mysql] linux下使用yum安装mysql

From: http://www.2cto.com/database/201207/141878.html linux下使用yum安装mysql1、安装查看有没有安装过&#xff1a;yum list installed mysql*rpm -qa | grep mysql*查看有没有安装包&#xff1a;yum list mysql*安装mysql客户端&#xff1a;yum install mysql安装mysql 服…

图解MapReduceMapReduce整体流程图

1.图解MapReduceMapReduce整体流程图 并行读取文本中的内容&#xff0c;然后进行MapReduce操作 Map过程&#xff1a;并行读取三行&#xff0c;对读取的单词进行map操作&#xff0c;每个词都以<key,value>形式生成 reduce操作是对map的结果进行排序&#xff0c;合并&#…

阿里云推出CloudDBA,解决数据库性能优化和问题诊断难题

问题诊断(trouble shooting) 和 性能优化(performance tunning) 一直都是数据库领域的专业问题&#xff0c;需要资深DBA的专业技能才能胜任解决&#xff0c;但这样的人才是稀缺的&#xff0c;无法及时满足大部分的企业紧急需求。如果有一款产品能够在大多数情况下&#xff0c;用…

c语言程序设计学生信息管理系统代码,c语言程序设计学生成绩管理系统源代码.pdf...

c语言程序设计 学 生 成 绩 管 理 系 统 源代码#include#include#include#include#define MAX 80int a;typedef struct /*定义结构体数组*/{ char num[10];char name[20];int score;} Student;Student stu[MAX];int menu_select(){char c;do{system("cls");/*清屏*/p…

初探ArrayList之删除

1.返回删除元素的删除方法 public E remove(int index) {rangeCheck(index);modCount;//记录修改次数的变量E oldValue elementData(index);//根据数组下标拿到指定元素int numMoved size - index - 1;//计算移动位数if (numMoved > 0)System.arraycopy(elementData, inde…

UESTC_秋实大哥与花 2015 UESTC Training for Data StructuresProblem B

B - 秋实大哥与花 Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit Status秋实大哥是一个儒雅之人&#xff0c;昼听笙歌夜醉眠&#xff0c;若非月下即花前。 所以秋实大哥精心照料了很多花朵。现在所有的花朵排成了一行&#xff…

java的三大特性,封装,继承,多态

封装 Java代码 /** * 所谓封装&#xff0c;就是将对象具有的成员变量和成员函数包装和隐藏起来&#xff0c;让外界无法直接使用&#xff0c; * 被封装的成员只能通过某些特定的方式才能访问。 * 实现封装有两个步骤&#xff1a; * 1、将不能暴露的成员隐藏起来&#x…

银行家算法实验报告c语言版,银行家算法实验报告C语言版.doc

《操作系统》课程综合性实验报告姓名&#xff1a; 学号&#xff1a; 2016 年 11 月 20 日实验题目进程调度算法程序设计一、实验目的通过对安全性算法和银行家算法的模拟&#xff0c;进一步理解资源分配的基本概念&#xff0c;加深对资源申请&#xff0c;资源分配(银行家算法)以…

GetModuleHandle(NULL)获取当前DLL模块基址?

做一项目想在DLL内部代码实现获取本DLL的模块基址&#xff0c;而且不知道本DLL名称 最简单的方法是想到GetModuleHandle(NULL)&#xff0c;是否可以呢? 参看http://blog.csdn.net/guzhou_diaoke/article/details/8826558到的答案是否 自己尝试了一下: DLL代码(testDll): BOOL …

DataTable是否存在某个列的判断

使用 DataTable.Columns.Contains方法可以判断某个列名是否存在于某个DataTable中 //添加模拟数据 DataTable t new DataTable(); DataColumn col new DataColumn("aaa"); t.Columns.Add(col); col new DataColumn("bbb"); t.Columns.Add(col); col ne…

【评分】第三次作业-团队展示

【评分】第三次作业-团队展示 总结 【2017-10-10】更新&#xff1a; 分数映射至 [1,2] 分 【注意】&#xff1a; 为了保护大家隐私&#xff0c;以后发表博客&#xff1a; 涉及到学号时&#xff0c;仅提供后三位涉及到姓名时&#xff0c;仅提供名&#xff08;省略姓&#xff09;…

c语言变量为什么要定义,C语言为什么要规定对所用到的变量要“先定义,后使用”...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼int a10;以上一句话对变量a进行了声明&#xff0c;定义以及初始化extern int a;以上一句话仅仅对变量a进行了声明&#xff0c;将a的链接属性设置为externalint *p;以上定义了一个指针int a10;int *p;p&a;以上为指针变量进行了赋…

iOS 开发--github的demo

令人惊讶的是&#xff0c;YYText 虽然代码量很大&#xff08;超过一万行&#xff09;&#xff0c;但它只是 ibireme 的作品之一。ibireme 利用业余时间完成了 YYKit 工具库&#xff0c;包括&#xff1a; YYModel — 高性能的 iOS JSON 模型框架。 YYCache — 高性能的 iOS 缓存…

RabbitMQ快速安装配置指南

RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话&#xff0c;这里总结一下在CentOS7环境下的安装配置过程。如需理解原理&#xff0c;请看官网原文的安装指南或翻译1. 安装RabbitMQ server ## 安装epel源 yum install -y epel-release## 安装Erlang yum inst…

[转]基于Starling移动项目开发准备工作

最近自己趁业余时间做的flash小游戏已经开发得差不多了&#xff0c;准备再完善下ui及数值后&#xff0c;投放到国外flash游戏站。期间也萌生想法&#xff0c;想把游戏拓展到手机平台。这两天尝试了下&#xff0c;除去要接入ane接口的工作&#xff0c;小游戏本身不用做任何改动就…