




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
大數(shù)據(jù)與云計算知識點Avro簡介Avro
是
Hadoop
中的一個子項目,也是
Apache
中一個獨立的項目,Avro
是一個基于二進制數(shù)據(jù)傳輸高性能的中間件。在
Hadoop
的其他項目中例如HBase(Ref)和
Hive(Ref)的
Client
端與服務端的數(shù)據(jù)傳輸也采用了這個工具。一、概念Avro是一個數(shù)據(jù)序列化的系統(tǒng)。Avro可以將數(shù)據(jù)結構或對象轉化成便于存儲或傳輸?shù)母袷?。Avro設計之初就用來支持數(shù)據(jù)密集型應用,適合于遠程或本地大規(guī)模數(shù)據(jù)的存儲和交換。我們知道網(wǎng)絡傳輸?shù)臄?shù)據(jù)必須是二進制數(shù)據(jù),但是調用方的請求,它的出入?yún)?shù)都是對象,對象是不能直接在網(wǎng)絡中傳輸?shù)?,必須提前把它轉換成可傳輸?shù)亩M制數(shù)據(jù),這個過程就叫做“序列化”。序列化和反序列化的基本概念:舉個例子來說明:比如我們要運送一個超市里所有東西到一個地方,這里面有各式各樣的商品、貨架、空調什么的等等,我們要把這些分批分批的裝到一個一個車廂上運輸?shù)侥康牡?,這個標準的車廂我們就可以看成是二進制數(shù)據(jù),運輸過程中全部都是這樣的標準車廂。到了目的地以后再進行組裝。服務端必須要做到的就是接收到網(wǎng)絡傳輸過來的二進制數(shù)據(jù),能夠正確的分割出不同的請求,同時根據(jù)請求類型和序列化類型,把二進制的數(shù)據(jù)還原為請求對象,這個過程叫做“反序列化”。比如我把一個物品封裝在1、3車廂,我還原的時候也必須把1、3連接,不能連接成1、2。序列化和反序列化是一種數(shù)據(jù)轉化的技術,從數(shù)據(jù)的用途來看,序列化就是為了將數(shù)據(jù)按照規(guī)定的格式進行重組,在保持原有的數(shù)據(jù)語義不變的情況下,達到存儲或者傳輸?shù)哪康?。反序列化則是為了將序列化后的數(shù)據(jù)重新還原成具有語義的數(shù)據(jù),以達到重新使用或者重復使用原有數(shù)據(jù)的目的。二、特點豐富的數(shù)據(jù)結構類型快速可壓縮的二進制數(shù)據(jù)形式,對數(shù)據(jù)二進制序列化后可以節(jié)約數(shù)據(jù)存儲空間和網(wǎng)絡傳輸帶寬存儲持久數(shù)據(jù)的文件容器可以實現(xiàn)遠程過程調用RPC簡單的動態(tài)語言結合功能RPC簡介遠程過程調用(remoteprocedurecall)RPC的主要功能就是讓構建分布式計算(應用)更加容易,在提供強大的遠程調用能力時,不損失本地調用的語義簡潔性。簡單來說就好比你用的是別人家的工具就和用你自己的工具一樣,不用經歷一些繁瑣的手續(xù)。為實現(xiàn)該目標,RPC框架需提供一種透明調用機制讓使用者不必顯式的區(qū)分本地調用和遠程調用。RPC是一個軟件結構概念,是構建分布式應用的理論基礎。就好比為啥你家可以用到發(fā)電廠發(fā)出來的電?是因為電是可以傳輸?shù)?。至于用銅線還是用鐵絲還是其他種類的導線,也就是用http還是用其他協(xié)議的問題了,這個就不是我們目前需要關心的問題了。服務消費方(client客戶端)調用以本地調用方式調用服務;clientstub(客戶端存根)接收到調用后負責將方法、參數(shù)等組裝成能夠進行網(wǎng)絡傳輸?shù)南Ⅲw;clientstub(存根)找到服務地址,并將消息發(fā)送到服務端;serverstub收到消息后進行解碼;RPC結構調用過程:RPC結構調用過程:serverstub根據(jù)解碼結果調用本地的服務;本地服務執(zhí)行并將結果返回給serverstub;serverstub將返回結果打包成消息并發(fā)送至消費方;clientstub接收到消息,并進行解碼;服務消費方得到最終結果。舉個例子說明比如我現(xiàn)在本地有個加法函數(shù),可以做加法,輸入兩個數(shù)就能返回這兩個數(shù)的和。我現(xiàn)在想調用遠程的乘法函數(shù)。我就把調用語句、參數(shù)封裝好發(fā)給clientstub。Avro的細節(jié)部分Avro依賴模式(Schema)來實現(xiàn)數(shù)據(jù)結構定義??梢园涯J嚼斫鉃镴ava的類,它定義每個實例的結構,可以包含哪些屬性??梢愿鶕?jù)類來產生任意多個實例對象。對實例序列化操作時必須需要知道它的基本結構,也就需要參考類的信息。這里,根據(jù)模式產生的Avro對象類似于類的實例對象。每次序列化/反序列化時都需要知道模式的具體結構。所以,在Avro可用的一些場景下,如文件存儲或是網(wǎng)絡通信,都需要模式與數(shù)據(jù)同時存在。Avro數(shù)據(jù)以模式來讀和寫(文件或是網(wǎng)絡),并且寫入的數(shù)據(jù)都不需要加入其它標識,這樣序列化時速度快且結果內容少。由于程序可以直接根據(jù)模式來處理數(shù)據(jù),所以Avro更適合于腳本語言的發(fā)揮。avro支持跨編程語言實現(xiàn)(C,C++,C#,Java,Python,Ruby,PHP),類似于Thrift,但是avro的顯著特征是:avro依賴于模式,動態(tài)加載相關數(shù)據(jù)的模式,Avro數(shù)據(jù)的讀寫操作很頻繁,而這些操作使用的都是模式,這樣就減少寫入每個數(shù)據(jù)文件的開銷,使得序列化快速而又輕巧。這種數(shù)據(jù)及其模式的自我描述方便了動態(tài)腳本語言的使用。當Avro數(shù)據(jù)存儲到文件中時,它的模式也隨之存儲,這樣任何程序都可以對文件進行處理。如果讀取數(shù)據(jù)時使用的模式與寫入數(shù)據(jù)時使用的模式不同,也很容易解決,因為讀取和寫入的模式都是已知的。Avro依賴于模式(Schema)。通過模式定義各種數(shù)據(jù)結構,只有確定了模式才能對數(shù)據(jù)進行解釋,所以在數(shù)據(jù)的序列化和反序列化之前,必須先確定模式的結構。正是模式的引入,使得數(shù)據(jù)具有了自描述的功能,同時能夠實現(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.復雜數(shù)據(jù)類型:Avro定義了六種復雜數(shù)據(jù)類型,每一種復雜數(shù)據(jù)類型都具有獨特的屬性。下表就每一種復雜數(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)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 防水修繕合同范本
- 借款融資居間服務合同范本
- 加梯安裝合同范例
- 醫(yī)生技術股協(xié)議合同范本
- 單位燈具購買合同范本
- 修車合同范本模板
- 農村建房買房合同范本
- 農村豬場合同范本
- 人事專員勞務合同范本
- 勞務供銷合同范例
- 銷售人員商務禮儀培訓通用課件
- 全國各省(直轄市、自治區(qū))市(自治州、地區(qū))縣(縣級市)區(qū)名稱一覽表
- 大學美育導引 課件 第五章 體驗人生在世-戲劇
- 大學美育導引 課件 第六章 沉浸光影世界-電影
- 化學品危險物質替代技術
- 醫(yī)院收費價格注意培訓課件
- 臨港產業(yè)基地污水處理廠提標改造工程設備及安裝工程招投標書范本
- 中小學校課外讀物負面清單管理措施
- 高精度衛(wèi)星定位授時系統(tǒng)
- 中醫(yī)學教學課件經絡與穴位
- 第1課+古代亞非【中職專用】《世界歷史》(高教版2023基礎模塊)
評論
0/150
提交評論