天天看點

蔣步星:輕量級大資料計算引擎

近幾年,大資料非常熱門,大資料計算的方案也較多,目前,大資料計算機平台有很多,但卻越來越沉重,主要是由于這三個方面的原因:

蔣步星:輕量級大資料計算引擎

并不是任何事物都需要沉重的大資料平台,許多還是需要輕量級計算。

輕量級計算需求

大資料的技術本質是高性能

提高性能的需求無處不在

不總是有那麼大的資料量

低延遲即時響應業務資料量并不

不總是适合部署大資料平台

即時查詢常常有被內建需求 臨時性資料處理來不及建 設

大資料平台 不總是可以擴容硬體(記憶體)

大資料開發難度大

大資料平台對SQL查詢關注過多

性能比拼的主要陣地 優化SQL性能幾乎無助于降低開 發難度

大量過程計算的開發難度還很大

用SQL很難描述,複雜SQL優化效果不好 仍需大量底 層的編碼,經常編寫UDF

提高性能本質上是降低開發難度

複雜運算的自動優化靠不住,需要快速編寫高性能算 法

舉例:漏鬥轉換器

蔣步星:輕量級大資料計算引擎

<b>叢集透明化</b>

讓通路叢集的時候和單擊運算一樣,看不見叢集。

大資料平台努力實作叢集透明化

單機與叢集一緻 網絡存儲系統+自動任務配置設定

透明化提高代碼相容性,降低開發難度

透明化難以獲得最優性能

高性能計算方案因場景而異,可能是沖突的

透明化隻能選擇最保險的方法,一般是性能較差的那 個,透明化架構對資源消耗嚴重

透明化與高性能的權衡

資料分布

節點檔案系統:可控備援,記憶體利用

網絡檔案系統

任務配置設定

程式員配置設定:根據節點能力安排任務,無架構資源消 耗,系統自動配置設定

輕量級計算的技術特征

目标:過程計算

可內建性

資料源開放性

直接檔案計算

注重單機優化

多線程并行

權衡叢集透明與高性能

節點檔案存儲,不用網絡檔案系統

多個單機運算,不用統一叢集架構

<b>集算器 — 技術特征</b>

面向過程計算

無縫應用內建

多樣性資料源接口 直接檔案計算

單機優化技術 多線程并行

無中心叢集結構 自由資料分布和任務配置設定

集算器 — 靈活文法體系

某支股票的漲幅交易日

蔣步星:輕量級大資料計算引擎

文法體系更容易描述人的思路

資料模型不限制高效算法實作

蔣步星:輕量級大資料計算引擎

<b>集算器 — 面向過程計算</b>

完整的循環分支控制

蔣步星:輕量級大資料計算引擎

<b>集算器 — 開發環境</b>

蔣步星:輕量級大資料計算引擎

<b></b>

<b>集算器 — 應用結構</b>

蔣步星:輕量級大資料計算引擎

高效二進制壓縮檔案、列式存儲

RDB:Oracle,DB2,MS SQL,MySQL,PG,….

TXT/CSV,JSON/XML,EXCEL

Hadoop:HDFS,HIVE,HBASE

MongoDB,REDIS,…

HTTP、ALI-OTS … …

内置接口,即裝即用

<b>單機計算技術 </b>

蔣步星:輕量級大資料計算引擎

1、周遊技術

周遊是大資料計算的基礎

蔣步星:輕量級大資料計算引擎

延遲遊标

遊标概念:

流式讀入資料,每次僅計算一小部分

延遲計算 :

在遊标上定義運算,傳回結果仍然是遊标,可再定義運算

不立即計算,最終一次性周遊和計算

蔣步星:輕量級大資料計算引擎

周遊複用

外存計算優化方向是減少通路量

可複用的周遊減少外存通路量

蔣步星:輕量級大資料計算引擎

一次周遊可傳回多個分組結果

聚合了解

從一個集合計算出一個單值或另一個集合都可了解為聚合

高複雜度的排序問題轉換為低複雜度的周遊問題

蔣步星:輕量級大資料計算引擎

有序遊标

針對已有序的資料可一次周遊實作大結果集分組運算,減少外存交換。

蔣步星:輕量級大資料計算引擎

複雜處理需要讀出到程式記憶體中再處理 有序遊标有效減少查找和周遊數量。

蔣步星:輕量級大資料計算引擎

2、連接配接解決

蔣步星:輕量級大資料計算引擎

區分JOIN

蔣步星:輕量級大資料計算引擎

外鍵指針化

外鍵需要随機小量頻繁通路

記憶體指針查找大幅提高性能

蔣步星:輕量級大資料計算引擎

外鍵序号化

序号化相當于外存指針化

蔣步星:輕量級大資料計算引擎

不需要再計算Hash值和比較

有序歸并

同維表和主子表連接配接可以先排序後變成有序歸并

追加資料的再排序也仍然是低成本的歸并計算

蔣步星:輕量級大資料計算引擎

3、存儲格式

蔣步星:輕量級大資料計算引擎

壓縮二進制

資料類型已存入,無須解析

輕量級壓縮

減少硬碟空間

很少占用CPU時間

泛型存儲,允許集合資料

可追加

自由列存

自由配置設定列組

行列存統一 重複值壓縮 對上透明通路

過濾優化

隻讀取與條件相關的列組

蔣步星:輕量級大資料計算引擎

序号主鍵

蔣步星:輕量級大資料計算引擎

多層序号式主鍵

外存指針式外鍵,高速引用

外存遊離記錄表示,離散性

天然有序,易于查找

分組針對外鍵

結果自然對齊有序

主子合一

蔣步星:輕量級大資料計算引擎

多層複式表

層次式有序集合 每層均可以有資料結構 同維表與主子表統一 消除對齊式連接配接

4、使用索引

有序對分查找

有序資料提供對分查找,快速定位

普通定位索引

按鍵值找到資料

兩段式索引提高維護性能

片狀索引

連續記錄的索引

應用:切片的雙向逆序索引

CUBE切片索引的困難

列存索引太大

資料必須實際排序

雙向逆序索引

按D1,…,Dn和Dn,…,D1雙倍排序

隻針對前半部分次元使用片式索引

5、分段并行

蔣步星:輕量級大資料計算引擎

文本分段

蔣步星:輕量級大資料計算引擎

倍增分段

蔣步星:輕量級大資料計算引擎
蔣步星:輕量級大資料計算引擎

分段數足夠大,以适應變化的并行數

每段記錄數相對平均

資料追加時不必重寫所有資料,保持連續性

列存分段

蔣步星:輕量級大資料計算引擎
蔣步星:輕量級大資料計算引擎

有序與對位分段

倍增分段方案解決列存并行困難 各列同步分段

同列連續存儲

有序資料的分段點要落在組邊界上才能分段并行

蔣步星:輕量級大資料計算引擎

同維表、主子表需同步分段

蔣步星:輕量級大資料計算引擎

多路遊标

建立多路遊标,可繼續進行過程計算,會自動并行執行,簡化書寫難度。

蔣步星:輕量級大資料計算引擎

<b>叢集方案</b>

叢集設計原則

確定容錯

減少網絡傳輸量

考慮負載均衡

叢集計算技術

<b>叢集方案 — 無中心設計</b>

<b></b><b></b>

<b>伺服器叢集無中心</b>

集算器沒有架構,沒有永久的中心主要節點,程式員用代碼控制參與計算的節點

無中心不會發生單點失效

所有節點地位都等同,不會發生單點失效,某個節點有故障時整個叢集仍然可以運作

計算任務有主要節點

在計算過程中由主要節點臨時尋找其它節點參與計算

<b>叢集方案 — 負載均衡與容錯</b>

具備負載均衡能力

根據每個節點空閑程度(目前正在運作的線程數量)決定是否配置設定任務, 實作負擔和資源的有效平衡

具備容錯能力

某個節點失效導緻子任務失敗,主要程式還會再次将這個子任務配置設定給

其它有效的節點

<b>叢集方案 — 并行邏輯結構</b>

蔣步星:輕量級大資料計算引擎

<b>共享式資料計算分布</b>

蔣步星:輕量級大資料計算引擎

共享資料源方式:計算分布實作,資料共享讀取

蔣步星:輕量級大資料計算引擎

<b>備援式外存分布</b>

所有任務都需要用到的公共維表複制存儲

事務資料分成N個區,根據需要的容錯指數循環分區 存儲使用率約為1/k(允許k-1個節點失效)

蔣步星:輕量級大資料計算引擎

<b>外存分布 — 資料同步</b>

集算器提供節點之間的同區資料同步功能。

每個節點都是獨立的計算機,可以應用記憶體和外存的計算方法。

蔣步星:輕量級大資料計算引擎

<b>外存分布 — 動态任務配置設定</b>

蔣步星:輕量級大資料計算引擎

<b>備胎式記憶體分布</b>

資料分區分别加載進節點記憶體

n個節點(每節點一個分區)+k個備份節點

記憶體使用率n/(n+k)

蔣步星:輕量級大資料計算引擎

<b>記憶體分布 — 靜态任務配置設定</b>

預留備份節點(備胎)不加載任何資料分區

發現有分區在所有可用節點都找不到時,啟動找備份節點執行加載該分區

任務直接配置設定到相應節點,不再動态詢問

蔣步星:輕量級大資料計算引擎

<b>叢集維表</b>

大維表分段存入節點機記憶體

利用記憶體特性提供随機通路

批量通路+節點過濾降低網絡負擔

蔣步星:輕量級大資料計算引擎

JOIN總結

外鍵式:小維表、大維表

對齊式:有序歸并

避免低效率Hash分段算法

蔣步星:輕量級大資料計算引擎

<b>叢集維表 — 示例</b><b>MapReduce-&gt;ForkReduce</b>

MapReduce的問題

任務太碎,管理成本過高

難以實作關聯運算

Hash Shuffle随意性太強

ForkReduce

批量任務,排程成本低

結合對位分段技術實作關聯運算

Shuffle結果有确定分布方案

<b>叢集應用 — 異構資料</b>

集算器可以基于同構或異構資料庫叢集進行結果彙總,為報表輸出彙總後的結果集。

蔣步星:輕量級大資料計算引擎

<b>叢集應用 — 異構資料庫叢集(聯合查詢)</b>

集算器與報表V5合作提供DQL語言,可基于異構資料庫叢集進行聯合查詢,結果彙總後為上層應用提供資料輸出服務。

蔣步星:輕量級大資料計算引擎

<b>叢集應用 — 協助HADOOP工作</b>

集算器是輕量級、高性能、分布式的計算引擎,解決HADOOP上SQL能力弱、開發難、運算慢的問題,可以極大地縮減大資料平台的搭建周期和實施成本。

蔣步星:輕量級大資料計算引擎

<b>叢集應用 — 獨立工作</b>

集算器作為獨立的大資料計算引擎,可自己管理資料,不需要網絡檔案系統,通過标準的接口為上層應

用提供資料輸出服務。

蔣步星:輕量級大資料計算引擎

原文釋出時間為:2017-11-15

本文作者:蔣步星