![《大數(shù)據(jù)與云計算》課件-15.avro簡介_第1頁](http://file4.renrendoc.com/view2/M03/35/0B/wKhkFmazeQCAfsVHAAIGRswyHDw352.jpg)
![《大數(shù)據(jù)與云計算》課件-15.avro簡介_第2頁](http://file4.renrendoc.com/view2/M03/35/0B/wKhkFmazeQCAfsVHAAIGRswyHDw3522.jpg)
![《大數(shù)據(jù)與云計算》課件-15.avro簡介_第3頁](http://file4.renrendoc.com/view2/M03/35/0B/wKhkFmazeQCAfsVHAAIGRswyHDw3523.jpg)
![《大數(shù)據(jù)與云計算》課件-15.avro簡介_第4頁](http://file4.renrendoc.com/view2/M03/35/0B/wKhkFmazeQCAfsVHAAIGRswyHDw3524.jpg)
![《大數(shù)據(jù)與云計算》課件-15.avro簡介_第5頁](http://file4.renrendoc.com/view2/M03/35/0B/wKhkFmazeQCAfsVHAAIGRswyHDw3525.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
大數(shù)據(jù)與云計算知識點Avro簡介Avro
是
Hadoop
中的一個子項目,也是
Apache
中一個獨立的項目,Avro
是一個基于二進制數(shù)據(jù)傳輸高性能的中間件。在
Hadoop
的其他項目中例如HBase(Ref)和
Hive(Ref)的
Client
端與服務(wù)端的數(shù)據(jù)傳輸也采用了這個工具。一、概念A(yù)vro是一個數(shù)據(jù)序列化的系統(tǒng)。Avro可以將數(shù)據(jù)結(jié)構(gòu)或?qū)ο筠D(zhuǎn)化成便于存儲或傳輸?shù)母袷?。Avro設(shè)計之初就用來支持數(shù)據(jù)密集型應(yīng)用,適合于遠程或本地大規(guī)模數(shù)據(jù)的存儲和交換。我們知道網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)必須是二進制數(shù)據(jù),但是調(diào)用方的請求,它的出入?yún)?shù)都是對象,對象是不能直接在網(wǎng)絡(luò)中傳輸?shù)?,必須提前把它轉(zhuǎn)換成可傳輸?shù)亩M制數(shù)據(jù),這個過程就叫做“序列化”。序列化和反序列化的基本概念:舉個例子來說明:比如我們要運送一個超市里所有東西到一個地方,這里面有各式各樣的商品、貨架、空調(diào)什么的等等,我們要把這些分批分批的裝到一個一個車廂上運輸?shù)侥康牡?,這個標準的車廂我們就可以看成是二進制數(shù)據(jù),運輸過程中全部都是這樣的標準車廂。到了目的地以后再進行組裝。服務(wù)端必須要做到的就是接收到網(wǎng)絡(luò)傳輸過來的二進制數(shù)據(jù),能夠正確的分割出不同的請求,同時根據(jù)請求類型和序列化類型,把二進制的數(shù)據(jù)還原為請求對象,這個過程叫做“反序列化”。比如我把一個物品封裝在1、3車廂,我還原的時候也必須把1、3連接,不能連接成1、2。序列化和反序列化是一種數(shù)據(jù)轉(zhuǎn)化的技術(shù),從數(shù)據(jù)的用途來看,序列化就是為了將數(shù)據(jù)按照規(guī)定的格式進行重組,在保持原有的數(shù)據(jù)語義不變的情況下,達到存儲或者傳輸?shù)哪康?。反序列化則是為了將序列化后的數(shù)據(jù)重新還原成具有語義的數(shù)據(jù),以達到重新使用或者重復(fù)使用原有數(shù)據(jù)的目的。二、特點豐富的數(shù)據(jù)結(jié)構(gòu)類型快速可壓縮的二進制數(shù)據(jù)形式,對數(shù)據(jù)二進制序列化后可以節(jié)約數(shù)據(jù)存儲空間和網(wǎng)絡(luò)傳輸帶寬存儲持久數(shù)據(jù)的文件容器可以實現(xiàn)遠程過程調(diào)用RPC簡單的動態(tài)語言結(jié)合功能RPC簡介遠程過程調(diào)用(remoteprocedurecall)RPC的主要功能就是讓構(gòu)建分布式計算(應(yīng)用)更加容易,在提供強大的遠程調(diào)用能力時,不損失本地調(diào)用的語義簡潔性。簡單來說就好比你用的是別人家的工具就和用你自己的工具一樣,不用經(jīng)歷一些繁瑣的手續(xù)。為實現(xiàn)該目標,RPC框架需提供一種透明調(diào)用機制讓使用者不必顯式的區(qū)分本地調(diào)用和遠程調(diào)用。RPC是一個軟件結(jié)構(gòu)概念,是構(gòu)建分布式應(yīng)用的理論基礎(chǔ)。就好比為啥你家可以用到發(fā)電廠發(fā)出來的電?是因為電是可以傳輸?shù)?。至于用銅線還是用鐵絲還是其他種類的導(dǎo)線,也就是用http還是用其他協(xié)議的問題了,這個就不是我們目前需要關(guān)心的問題了。服務(wù)消費方(client客戶端)調(diào)用以本地調(diào)用方式調(diào)用服務(wù);clientstub(客戶端存根)接收到調(diào)用后負責(zé)將方法、參數(shù)等組裝成能夠進行網(wǎng)絡(luò)傳輸?shù)南Ⅲw;clientstub(存根)找到服務(wù)地址,并將消息發(fā)送到服務(wù)端;serverstub收到消息后進行解碼;RPC結(jié)構(gòu)調(diào)用過程:RPC結(jié)構(gòu)調(diào)用過程:serverstub根據(jù)解碼結(jié)果調(diào)用本地的服務(wù);本地服務(wù)執(zhí)行并將結(jié)果返回給serverstub;serverstub將返回結(jié)果打包成消息并發(fā)送至消費方;clientstub接收到消息,并進行解碼;服務(wù)消費方得到最終結(jié)果。舉個例子說明比如我現(xiàn)在本地有個加法函數(shù),可以做加法,輸入兩個數(shù)就能返回這兩個數(shù)的和。我現(xiàn)在想調(diào)用遠程的乘法函數(shù)。我就把調(diào)用語句、參數(shù)封裝好發(fā)給clientstub。Avro的細節(jié)部分Avro依賴模式(Schema)來實現(xiàn)數(shù)據(jù)結(jié)構(gòu)定義。可以把模式理解為Java的類,它定義每個實例的結(jié)構(gòu),可以包含哪些屬性??梢愿鶕?jù)類來產(chǎn)生任意多個實例對象。對實例序列化操作時必須需要知道它的基本結(jié)構(gòu),也就需要參考類的信息。這里,根據(jù)模式產(chǎn)生的Avro對象類似于類的實例對象。每次序列化/反序列化時都需要知道模式的具體結(jié)構(gòu)。所以,在Avro可用的一些場景下,如文件存儲或是網(wǎng)絡(luò)通信,都需要模式與數(shù)據(jù)同時存在。Avro數(shù)據(jù)以模式來讀和寫(文件或是網(wǎng)絡(luò)),并且寫入的數(shù)據(jù)都不需要加入其它標識,這樣序列化時速度快且結(jié)果內(nèi)容少。由于程序可以直接根據(jù)模式來處理數(shù)據(jù),所以Avro更適合于腳本語言的發(fā)揮。avro支持跨編程語言實現(xiàn)(C,C++,C#,Java,Python,Ruby,PHP),類似于Thrift,但是avro的顯著特征是:avro依賴于模式,動態(tài)加載相關(guān)數(shù)據(jù)的模式,Avro數(shù)據(jù)的讀寫操作很頻繁,而這些操作使用的都是模式,這樣就減少寫入每個數(shù)據(jù)文件的開銷,使得序列化快速而又輕巧。這種數(shù)據(jù)及其模式的自我描述方便了動態(tài)腳本語言的使用。當Avro數(shù)據(jù)存儲到文件中時,它的模式也隨之存儲,這樣任何程序都可以對文件進行處理。如果讀取數(shù)據(jù)時使用的模式與寫入數(shù)據(jù)時使用的模式不同,也很容易解決,因為讀取和寫入的模式都是已知的。Avro依賴于模式(Schema)。通過模式定義各種數(shù)據(jù)結(jié)構(gòu),只有確定了模式才能對數(shù)據(jù)進行解釋,所以在數(shù)據(jù)的序列化和反序列化之前,必須先確定模式的結(jié)構(gòu)。正是模式的引入,使得數(shù)據(jù)具有了自描述的功能,同時能夠?qū)崿F(xiàn)動態(tài)加載,另外與其他的數(shù)據(jù)序列化系統(tǒng)如Thrift相比,數(shù)據(jù)之間不存在其他的任何標識,有利于提高數(shù)據(jù)處理的效率。三、Avro類型數(shù)據(jù)類型標準化的意義:一方面使不同系統(tǒng)對相同的數(shù)據(jù)能夠正確解析,另一方面,數(shù)據(jù)類型的標準定義有利于數(shù)據(jù)序列化/反序列化。類型說明nullnovaluebooleanabinaryvalueint32-bitsignedintegerlong64-bitsignedintegerfloatsingleprecision(32-bit)IEEE754floating-pointnumberdoubledoubleprecision(64-bit)IEEE754floating-pointnumberbytessequenceof8-bitunsignedbytesstringunicodecharactersequence簡單的數(shù)據(jù)類型:Avro定義了幾種簡單數(shù)據(jù)類型類型屬性說明Recordstype
namerecordnamea
JSON
string
providing
the
name
of
the
re
(required).namespacea
JSON
string
that
qualifies
the
name(optidoca
JSON
string
providing
documentation
to
t
this
schema
(optional).aliasesa
JSON
array
of
strings,
providing
alterna
this
record
(optional).fieldsa
JSON
array,
listing
fields
(required).namea
JSON
string.typea
schema/a
string
of
defined
record.defaulta
default
value
for
field
when
lack.orderordering
of
this
field.復(fù)雜數(shù)據(jù)類型:Avro定義了六種復(fù)雜數(shù)據(jù)類型,每一種復(fù)雜數(shù)據(jù)類型都具有獨特的屬性。下表就每一種復(fù)雜數(shù)據(jù)類型進行說明:類型屬性說明Enumstype
nameenumnamea
JSON
string
providing
the
name
of
the
en
(required).namespacea
JSON
string
that
qualifies
the
name.doca
JSON
string
providing
documentation
to
t
this
schema
(optional).aliasesa
JSON
array
of
strings,
providing
alterna
this
enum
(optional)symbolsa
JSON
array,
listing
symbols,
as
JSON
str
(required).
All
symbols
in
an
enum
must
beArraystype
namearrayitemsthe
schema
of
the
array’s
items.類型屬性說明Mapstype
namemapvaluesthe
schema
of
the
map’s
values.Fixedtype
namefixednamea
string
naming
this
fixed
(required).namespacea
string
that
qualifies
the
name.aliasesa
JSON
array
of
strings,
providing
alterna
this
enum
(optional).sizean
integer,
specifying
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 股東間股權(quán)轉(zhuǎn)讓協(xié)議
- 月嫂家政服務(wù)合同
- 廣告位租賃的合同
- 設(shè)備維護服務(wù)合同
- 停車車位租賃合同
- 模具鋼材采購合同
- 一兒一女夫妻離婚協(xié)議書
- 2025年日照貨運從業(yè)資格證模擬考試駕考
- 2025年德州貨運從業(yè)資格證模擬考試下載安裝
- 電梯管理方維修方及業(yè)主方三方合同(2篇)
- 14S501-1 球墨鑄鐵單層井蓋及踏步施工
- YB 4022-1991耐火泥漿荷重軟化溫度試驗方法(示差-升溫法)
- 胸腔積液護理查房-范本模板
- 水土保持方案中沉沙池的布設(shè)技術(shù)
- 安全生產(chǎn)技術(shù)規(guī)范 第25部分:城鎮(zhèn)天然氣經(jīng)營企業(yè)DB50-T 867.25-2021
- 現(xiàn)代企業(yè)管理 (全套完整課件)
- 走進本土項目化設(shè)計-讀《PBL項目化學(xué)習(xí)設(shè)計》有感
- 《網(wǎng)店運營與管理》整本書電子教案全套教學(xué)教案
- 教師信息技術(shù)能力提升培訓(xùn)課件希沃的課件
- 高端公寓住宅項目營銷策劃方案(項目定位 發(fā)展建議)
- 執(zhí)業(yè)獸醫(yī)師聘用協(xié)議(合同)書
評論
0/150
提交評論