ESProc高性能計算引擎介紹_第1頁
ESProc高性能計算引擎介紹_第2頁
ESProc高性能計算引擎介紹_第3頁
ESProc高性能計算引擎介紹_第4頁
ESProc高性能計算引擎介紹_第5頁
已閱讀5頁,還剩54頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、集算器創新大數據計算引擎高性能計算專家(HPC)ESProc高性能計算引擎介紹高性能計算理念軟件改變不了硬件的計算性能但軟件可以設計一些高效(低復雜度)算法,降低計算規模,從而提升計算性能 這類方案通常需要定制化,因地制宜,看菜吃飯集算器使用了諸多高效算法:分組計算關聯計算查找定位遍歷技術游標與管道并行計算softwarehardware高效算法舉例 分組計算結果集小能夠全內存結果集大不能全內存針對分組字段有序針對分組 字段無序分 組 計 算無需磁盤交互生成臨時緩存 可并行無需磁盤交互生成臨時緩存 可并行需要磁盤交互生成臨時緩存 無法并行了解了計算和數據特征,就可以選用適合的算法,從而獲得高性

2、能集算器性能表現測試結果(時間單位:秒)測試用例Intel X86芯片國產飛騰芯片SPL讀文件計算SPL讀數據庫計算數據庫中SQL計算SPL讀文件計算SPL讀數據庫計算連接后并集-3.81小時-連接后交集-3.91小時-多對多連接遍歷691031小時93268有序分組遍歷1006471小時1022037多步過程計算2728481小時3771小時大分組391552573562493大表關聯分組1115661小時1782106批量鍵值查詢151小時1小時151小時*數據規模:100億行;集群數量:4【注】SPL是潤乾集算器采用的程序設計語言;SQL是關系數據庫采用的程序設計語言國產飛騰芯片上運行的

3、潤乾集算器可以超越Intel芯片上分布式數據庫的性能輕量級大數據計算引擎23高性能計算技術4應用案例1現狀分析目 錄Contents沉重的大數據計算單機性能不被關注,依靠集群規模框架體系龐大復雜,試圖包羅萬象避開外存計算困難,指望巨大內存集1群2內存3框架大數據計算開發難度大大數據平臺對SQL查詢關注過多性能比拼的主要陣地優化SQL性能幾乎無助于降低開發難度大量過程計算的開發難度還很大用SQL很難描述,復雜SQL優化效果不好仍需大量底層的編碼,經常編寫UDF提高性能本質上是降低開發難度復雜運算的自動優化靠不住,需要快速編寫高性能算法難度大集群透明化大數據平臺努力實現集群透明化單機與集群一致網絡

4、存儲系統+自動任務分配透明化提高代碼兼容性,降低開發難度透明化難以獲得最優性能高性能計算方案因場景而異,可能是矛盾的透明化只能選擇最保險的方法,一般是性能較差的那個 透明化框架對資源消耗嚴重透明化輕量級大數據計算引擎23高性能計算技術4應用案例1現狀分析目 錄Contents集算器 技術特征面向過程計算無縫應用集成多樣性數據源接口直接文件計算單機優化技術多線程并行無中心集群結構自由數據分布和任務分配集算器 敏捷語法體系思考:按照自然思維怎么做?1select max(連續日數)2from (select count(*) 連續日數3from (select sum(漲跌標志) over(ord

5、er by 交易日) 不漲日數4from (select 交易日,5case when 收盤價lag(收盤價) over(order by 交易日)6then 0 else 1 end 漲跌標志7from 股價表) )SQL8group by 不漲日數)A1=股價表.sort(交易日)2=03=A1.max(A2=if(收盤價收盤價-1,A2+1,0)集算腳本某支股票最長連續漲了多少交易日語法體系更容易描述人的思路數據模型不限制高效算法實現集算器 面向過程計算完整的循環分支控制天然分步、層次清晰、直接引用單元格名無需定義變量集算器 開發環境執行、調試執行、單步執行設置斷點語法簡單,符合自然思維

6、,比其他高級開發語言更簡單網格結果所 見即所得, 易于調試; 方便引用中 間結果系統信息輸出,異常隨時查看集算器 應用結構應用程序集算器IDE數據計算層集算器腳本(DFX)集算器JDBC數據存儲層(RDB、NoSQL、TXT、CSV、JSON、Hadoop)輕量級大數據計算引擎23高性能計算技術4應用案例1現狀分析目 錄Contents分段并行高性能計算技術連接解決集群方案使用索引遍歷技術存儲格式遍歷技術聚合理解遍歷復用延遲游標有序游標遍歷是大數據計算的基礎遍歷技術 延遲游標游標概念流式讀入數據,每次僅計算一小部分延遲計算在游標上定義運算,返回結果仍然是游標,可再定義運算 不立即計算,最終一次

7、性遍歷和計算AB1=file(“data.txt”).cursort()/創建游標2=A1.select(product=“1”)/過濾3=A2.derive(quantity*price:amount)/計算列4=A3.sum(amount)/實際計算遍歷技術 遍歷復用外存計算優化方向是減少訪問量可復用的遍歷減少外存訪問量一次遍歷可返回多個分組結果A1=file(“data.txt”).cursor()2=channel().groups(;count(1)配置同步計算3A1.push(A2)綁定4=A1.sortx(key)排序,遍歷過程中處理綁定計算5=A2.result().#1取出綁

8、定計算的結果,即總記錄數6=A4.skip(A5-1)2).fetchx(2-A5%2).avg(key)取出中位數記錄并計算中位數遍歷技術 聚合理解從一個集合計算出一個單值或另一個集合都可理解為聚合高復雜度的排序問題轉換為低復雜度的遍歷問題A1=file(“data.txt”).cursort()2=A1.groups(;top(10,amount)金額在前10名的訂單3=A1.groups(area;top(10,amount)每個地區金額在前10名的訂單遍歷技術 有序游標針對已有序的數據可一次遍歷實現大結果集分組運算,減少外存交換A1=file(“data.txt”).cursort()

9、2=A1.groupxo(uid;count(1),max(login)ABC1=file(“user.dat”).cursorb()/按用戶id排序的源文件2for A1;id/從游標中循環讀入數據,每次讀出一組id相同3/處理計算該組數據復雜處理需要讀出到程序內存中再處理有序游標有效減少查找和遍歷數量連接解決外鍵序號化外鍵指針化區分JOIN有序歸并連接計算是結構化數據的最大難點指針化序號化外鍵維表1:N有序歸并同維表1:1有序歸并主子表1:N連接解決區分JOIN!外鍵需要隨機小量頻繁訪問內存指針查找大幅提高性能Java指針連接Oracle0.623sA單表無連接0.57ss5.1s1=fi

10、le(“Products.txt”).import()讀入商品列表五表外鍵連接2.32=file(“Sales.txt”).import()讀入銷售記錄3A2.switch(productid,A1:id)建立指針式連接,把商品編號轉換成指針4=A2.sum(quantity*productid.price)計算銷售金額,用指針方式引用商品單價ProductsidnamevendortypepriceSalesseqdateproductidquantity連接解決 外鍵指針化序號化相當于外存指針化不需要再計算Hash值和比較A1=file(“Products.txt”).import()讀入

11、商品列表2=file(“Sales.txt”).cursor()根據已序號化的銷售記錄建立游標3=A2.switch(productid,A1:#)用序號定位建立連接指針,準備遍歷4=A3.groups(;sum(quantity*productid.price)計算結果連接解決 外鍵序號化同維表和主子表連接可以先排序后變成有序歸并追加數據的再排序也仍然是低成本的歸并計算A1=file(“Order.txt”).cursort()訂單游標,按訂單id排序2=file(“Detail.txt”).cursort()訂單明細游標,也按訂單id排序3=joinx(A1:O,id;A2:D,id)有序

12、歸并連接,仍返回游標4=A3.groups(O.area;sum(D.amount)按地區分組匯總金額,地區字段在主表中,金額字段在明細子表中連接解決 有序歸并序號主鍵自由列存壓縮二進制主子合一有效的存儲格式是 高性能的保證存儲格式數據類型已存入,無須解析輕量級壓縮減少硬盤空間很少占用CPU時間泛型存儲,允許集合數據可追加存儲格式 壓縮二進制自由分配列組行列存統一 重復值壓縮 對上透明訪問過濾優化只讀取與條件相關的列組組1組2組k列1列2列3列41210231024存儲格式 自由列存多層序號式主鍵外存指針式外鍵,高速引用 外存游離記錄表示,離散性 天然有序,易于查找分組針對外鍵結果自然對齊有序

13、北京1海淀1,1朝陽1,2上海2浦東2,1存儲格式 序號主鍵多層復式表層次式有序集合每層均可以有數據結構同維表與主子表統一 消除對齊式連接訂單客戶地區日期訂單明細產品數量單價存儲格式主子合一有序對分查找有序數據提供對分查找,快速定位普通定位索引按鍵值找到數據兩段式索引提高維護性能片狀索引連續記錄的索引使用索引片狀索引普通定位索 引有序對分查找CUBE切片索引的困難列存索引太大數據必須實際排序雙向逆序索引按D1,Dn和Dn,D1雙倍排序 只針對前半部分維度使用片式索引使用索引應用:切片的雙向逆序索引數據分段是并行計算的基礎列存分段倍增分段文本分段有序/對位 分段多路游標分段并行文件線程1線程4線

14、程2線程3并行處理需要將數據文件分段,每個線程處理一段簡單按字節分段按行分段去頭補尾的字節分段文本并行解析A1=file(“data.txt”).cursortm(amount)/定義并行取數的游標(并行)2=A1.groups(;sum(amount):amount)/遍歷游標匯總amount(串行)分段并行 文本分段分段數足夠大,以適應變化的并行數每段記錄數相對平均數據追加時不必重寫所有數據,保持連續性AB1=file(“data.bin”)2fork 4=A1.cursorb(amount;A2:4)3=B2.groups(;sum(amount):a)4=A2.conj().sum(a

15、)追加前追加后11232453674810235121024513分段并行 倍增分段倍增分段方案解決列存并行困難各列同步分段同列連續存儲AB1=1,3.(file(“col”/”.bin”)2fork 4=A1.cursor(amount;A2:4)3=B2.groups(;sum(amount):a)4=A2.conj().sum(a)段列1列211,k1,k2k+1,2kk+1,2k32k+1,3k2k+1,3k43k+1,4k3k+1,4k10231024分段并行 列存分段有序數據的分段點要落在組邊界上才能分段并行同維表、主子表需同步分段A1=file(“userlog.txt”).cu

16、rsort()原始數據游標2=A1.sortx(id)按id排序3file(“userlog.dat”).exportz(A2;id)寫成按id分段的文件A1=file(“Order.txt”).cursort()2=A1.sortx(id)按id排序3file(“Order.dat”).exportz(A2;id)寫成按id分段的文件4=file(“Detail.txt”).cursort()5=A4.sortx(id)按id排序6file(“Detail.dat”).exportz(A2;id,file(“Order.dat”),id )和Order.dat同步按id分段分段并行 有序與對

17、位分段建立多路游標,可繼續進行過程計算,會自動并行執行,簡化書寫難度。A1=file(“Order.txt”).cursortm()建立多路游標,自動并行執行2=A1.select(month(Date)=10)條件過濾3=A2.groups(ID;sum(COST*WEIGHT):VALUE)分組匯總分段并行 多路游標集群方案集群設計原則確保容錯減少網絡傳輸量 考慮負載均衡集群計算技術集群維表外存分布內存分布集群方案 無中心設計服務器集群無中心集算器沒有框架,沒有永久的中心主控節點,程序員用代碼控制參與計算的節點無中心不會發生單點失效所有節點地位都等同,不會發生單點失效,某個節點有故障時整個

18、集群仍然可以運行計算任務有主控節點在計算過程中由主控節點臨時尋找其它節點參與計算集群方案 負載均衡與容錯具備負載均衡能力根據每個節點空閑程度(當前正在運行的線程數量)決定是否分配任務,實現負擔和資源的有效平衡具備容錯能力某個節點失效導致子任務失敗,主控程序還會再次將這個子任務分配給其它有效的節點集算器數據源集群方案 并行邏輯結構sub.dfxsub.dfxsub.dfxORAMSSQL本地文件HDFSmain.dfx共享式數據計算分布共享數據源方式:計算分布實現,數據共享讀取集算器數據源并行節點并行節點并行節點ORAMSSQL本地文件HDFSAB1=4.(“192.168.0.”/(10+)/

19、”:1234”)節點機列表,4個2fork to(8);A1到節點機上執行,分成8個任務3=hdfsfile(“hdfs:192.168.0.1persons.txt”)HDFS上的文件4=B3.cursort(;A2:8)分段游標5=B4.select(gender=M).groups(;count(1):C)過濾并計數6=A2.conj().sum(C)匯總結果冗余式外存分布所有任務都需要用到的公共維表復制存儲事務數據分成N個區,根據需要的容錯指數循環分區 存儲利用率約為1/k(允許k-1個節點失效)1223344551X3X4X5X1X2外存分布 數據同步集算器提供節點之間的同區數據同步

20、功能每個節點都是獨立的計算機,可以應用內存和外存的計算方法。1new3new13122外存分布 動態任務分配主控程序分配任務節點程序收到任務本節點 是否有 所需數 據節點程序執行任務有無ABC1=4.(“192.168.0.”/(10+)/”:1234”)節點機列表,4個2fork to(8);A1到節點機上執行,分成8個任務3=file(“person.txt”,A2)A2為數據區號4if !B3.exists()end “data not find”找不到返回錯誤再分配5=B3.cursor()6=B5. select(gender=M).groups(;count(1):C)計算7=A2

21、.conj().sum(C)匯總備胎式內存分布數據分區分別加載進節點內存n個節點(每節點一個分區)+k個備份節點內存利用率n/(n+k)X5X4X3X2X1XX內存分布 靜態任務分配預留備份節點(備胎)不加載任何數據分區發現有分區在所有可用節點都找不到時,啟動找備份節點執行加載該分區 任務直接分配到相應節點,不再動態詢問A主程序1=8.(“192.168.0.”/(10+)/”:1234”)節點列表,共8個2=hosts(A1,to(4),”init.dfx”)在其中尋找4個節點加載內存數據3=callxa(“sub.dfx”,to(4);A2)調用這些節點上程序計算4=A3.sum()匯總結

22、果A節點初始化程序init.dfx1=file(“Product.txt”,z).import()讀入第z分區的數據2env(T,A1)將數據記入環境3zone(z)登記本節點的分區A節點程序sub.dfx1=T從環境中取出數據2=A1.count(gender=M)過濾并計數3return A2返回結果MapReduce-ForkReduceMapReduce的問題任務太碎,管理成本過高 難以實現關聯運算Hash Shuffle隨意性太強ForkReduce批量任務,調度成本低結合對位分段技術實現關聯運算Shuffle結果有確定分布方案輕量級大數據計算引擎23高性能計算技術4應用案例1現狀分

23、析目 錄Contents某大型保險公司 - 存儲過程優化【案例背景】定報價風險保費通過informix存儲過程計算,運行1小時,效率低下影響使用;初始化車 險新規車輛歸并,找到上三年保單,數據量大(30天)時,運行將近2小時,急需優化【數據規模】保單表:0.35億;保單明細表:1.23億【優化效果】【使用的集算器技術】壓縮列存:使用集算器組表的列式壓縮存儲,空間小,并且減少了參與計算的列數(約1/7) 有序存儲:數據按照保險單號順序存放,這樣可以使用有序關聯提升計算效率高效計算:原來需要遍歷多次完成多表關聯,現在只需遍歷一次即可完成多表關聯 并行技術:集算器提供多線程并行計算,在多核環境下可以

24、加速計算場景優化前優化后提升倍數定報價風險保費3600秒68秒52.9倍查找上三年保單6672秒1020秒6.5倍52.9倍某金融機構 報表優化【案例背景】該金融機構需要維護的報表超過7500張,其中20%查詢速度為分鐘級,5%的查詢速度 為小時級,這5%非常慢的查詢SQL代碼行數有幾百行,存儲過程更是達到幾千行,關聯運算多。用通 俗的語言描述報表慢的原因主要是數據量大,業務邏輯復雜。【數據規模】POS交易情況統計表運行時間為3700秒,4個SQL數據集,涉及6個數據庫表的關聯運算,其中3個表的數據量為千萬級(1708萬-4886萬)。【優化效果】不改變硬件環境的條件下,報表查詢速度從3700

25、秒降到105秒。【使用的集算器技術】高效關聯技術:將原來報表的順序關聯改為更高效的外鍵指針式關聯方式并行計算:將原有串行計算的4個SQL,改為4線程并行加速計算35.2倍某銀行 報表優化【案例背景】隨著客戶業務數據量級的日益增長,使原有業務報表在查詢和導出時的效率明顯降低, 已經跟不上業務的發展;并且在引入HBase后,仍無法解決批量查詢效率問題。【數據規模】千萬級【優化效果】原有回單報表查詢一個分行一個月的數據需要18分鐘,甚至造成內存溢出,引入集算器 后,每頁展示2000條數據,首頁加載時間為10秒,一個分行一個月的數據全部加載完成縮短至5分鐘,并且不會造成內存溢出的問題。【使用的集算器技術】高性能存儲:集算器提供了私有二進制壓縮存儲,提供保存數據類型、泛型存儲、任意分段等機制雙線程異步計算:與報表工具結合,將取數計算和數據呈現使用不同的異步線程處理,提升數據展現速度,并降低內存使用率3.6倍某電信運營商 Excel財務報表優化【案例背景】月財務結算時需要各省市分級按科目上報財務報表,但由于集團下屬分子公司使用了不 同的財務軟件(SAP和用友),上報的數據存在財務賬套無法完全匹配,不同科目需要關聯替換等業 務數據準備工作需要財務人員手工完成,使用Excel進行報表統計十分低效

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論