OpenHarmony啃論文成長計劃---Apache Avro與Twister
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
大家好! 我是深圳技術(shù)大學(xué)FSR實驗室的同學(xué),在OpenHarmony成長計劃啃論文俱樂部里,與華為、軟通動力、潤和軟件、拓維信息、深開鴻等公司一起,學(xué)習(xí)和研究序列化相關(guān)技術(shù)…
【本期看點】
- Apache Avro發(fā)展時間及應(yīng)用。
- 文獻(xiàn)場景概述。
- 與Apache Avro集成后的Twister體系結(jié)構(gòu)。
Apache Avro發(fā)展時間及應(yīng)用
開源地址:apache/avro: Apache Avro is a data serialization system. (github.com)。
今天我們要講的是Apache Avro,其是Hadoop的一個子項目,由Hadoop的創(chuàng)始人Doug Cutting牽頭開發(fā)。Avro是一個數(shù)據(jù)序列化系統(tǒng),設(shè)計用于支持大批量數(shù)據(jù)交換的應(yīng)用。它的主要特點有:支持二進(jìn)制序列化方式,可以便捷,快速地處理大量數(shù)據(jù);動態(tài)語言友好,Avro提供的機制使動態(tài)語言可以方便地處理Avro數(shù)據(jù)。
其主要應(yīng)用場景也是在大數(shù)據(jù)處理方面。
Apache Avro的 schema可以為單個字段聲明潛在類型的有序列表。在這些情況下,Apache Avro二進(jìn)制編碼會在值的前面加上一個32位 ZigZag編碼的小尾端基數(shù)128(LEB128)可變長度有符號整數(shù),該整數(shù)對應(yīng)于有序類型列表的索引。
對于多種類型組成的字段,會被編碼為數(shù)據(jù)類型索引(Type index)。例如下圖,如果schema定義了一個類型為[“string”、“int”、“null”]的字段,那么如果值是字符串,則該值將以0x00作為前綴,如果值是整數(shù),則以0x02作為前綴,如果值為空,則以0x04作為前綴,然后作為數(shù)據(jù)段的類型索引(Type index)。
文獻(xiàn)場景概述
這次我分享的文獻(xiàn)是關(guān)于Apache Avro在Twister信息傳遞系統(tǒng)的應(yīng)用,該項目的目標(biāo)是研究并實現(xiàn)一種用于Twister消息傳遞系統(tǒng)的新方法。
Twister是一個迭代的MapReduce框架,它將MapReduce范式提升到了一個更高的層次,滿足了迭代性質(zhì)的應(yīng)用。Twister通過Narada Brokering使用發(fā)布/訂閱消息系統(tǒng),但是由此引發(fā)的問題是,與較小的控制消息相比,在交換相對較大的數(shù)據(jù)消息時,消息傳遞體驗會延遲。
為了研究這個問題,該論文提出了另一種方法實現(xiàn),就是通過遠(yuǎn)程過程調(diào)用(RPC),并且選擇Apache Avro作為RPC框架,所有計算節(jié)點都可以直接從彼此發(fā)送和接收數(shù)據(jù),而不是通過代理系統(tǒng)。下面我們來看看Apache Avro和原Narada Brokerin系統(tǒng)的性能差別吧。
與Apache Avro集成后的Twister體系結(jié)構(gòu)
如上圖,ApacheAvro用于Twister驅(qū)動程序(Twister Driver)和Twister Daemon之間,以及Twister Daemon之間的通信。每個節(jié)點都可以通過RPC和序列化直接相互通信,而不是通過代理系統(tǒng)發(fā)送或接收消息。這樣就可以消除了發(fā)布/訂閱代理系統(tǒng)與計算節(jié)點之間的通信開銷和瓶頸。
測試結(jié)果
上圖展示了使用我們Apache Avro和原Narada Brokerin系統(tǒng)在不同的數(shù)據(jù)大小上運行K-means算法的時間性能差別。正如我們所期望的,這個基于Apache Avro的替代方法可以減少通信開銷并提高系統(tǒng)性能。
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??