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.pswp.cn/news/257379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/257379.shtml
英文地址,請注明出處:http://en.pswp.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;小游戲本身不用做任何改動就…