主流開源云計算系統(tǒng)_第1頁
主流開源云計算系統(tǒng)_第2頁
主流開源云計算系統(tǒng)_第3頁
主流開源云計算系統(tǒng)_第4頁
主流開源云計算系統(tǒng)_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章主流開源云計算系統(tǒng)

《云計算(第二版)》購買網址:當當網

京東商城姊妹力作《實戰(zhàn)Hadoop》購買網址:當當網

京東商城提綱

簡介

Cassandra

Hive

VoltDBCassandra

Cassandra

一套高度可擴展、最終一致、分布式的結構化鍵值存儲系統(tǒng)

結合了Dynamo的分布技術和Google的BigTable數(shù)據模型,更好滿足了海量數(shù)據存儲需求,解決了應用與關系數(shù)據庫模型之間存在的非依賴關系

設計目標高可用性最終一致性動態(tài)可伸縮

動態(tài)調整一致性/持久性與延時

節(jié)點管理要保持低開銷最小化管理開銷Cassandra

Cassandra突出特點321模式靈活

真正的可擴展性

多數(shù)據中心識別

65范圍查詢列表數(shù)據結構分布式寫操作

4Hive

Hive--起源于Facebook,是一個基于Hadoop的數(shù)據倉庫工具,同時也是Hadoop的一個主要子項目--提供了一系列的工具,可以用來進行數(shù)據的提取、轉換和加載(ETL),同時可以實現(xiàn)對Hadoop中大規(guī)模數(shù)據存儲、查詢和分析Hive已經增加和將要增加的一些新特性(1)增加了用于收集分區(qū)和列的水平統(tǒng)計數(shù)值的命令(2)支持在Partition級別去更改Bucket的數(shù)量(3)在Hive中實現(xiàn)檢索(4)為Hive增加并發(fā)模型(5)支持在兩個或兩個以上列中的差別選擇(6)利用bloom過濾器提高連接的效果(7)建立Hive的授權結構和認證結構(8)在Hive中使用位圖檢索VoltDB

VoltDB--MikeStonebraker(Postgres和Ingres的聯(lián)合創(chuàng)始人)領導團隊開發(fā)的下一代開源數(shù)據庫管理系統(tǒng)--在VoltDB內部,采用并行單線程從而保證了事務一致性和高效率優(yōu)點

可達到幾乎線性的擴展

滿足ACID特性

提供相比傳統(tǒng)數(shù)據庫好很多的性能

SQL作為數(shù)據庫接口

限制

不支持動態(tài)修改Schema

增加節(jié)點需要停止服務

不支持xDBC

Adhoc查詢性能不優(yōu)化

EnomalyECP

EnomalyECP是一個開放源代碼項目,提供了一個功能類似于EC2的云計算框架EnomalyECP特性(1)自動供應(2)靈活性(3)可擴展性(4)整合現(xiàn)有基礎設施

EnomalyECP兩個版本--免費的社區(qū)版--提供全方位技術支持的服務提供商版Nimbus

Nimbus是一個開源的工具集,它可以把集群部署到IaaS云中。通過一整套的工具來提供IaaS形式的云計算解決方案Nimbus特點(1)兩套Web服務接口(AmazonEC2WSDL和WSRF規(guī)范接口)(2)可以執(zhí)行基于Xen管理程序(3)可以使用如PBS或SGE調度器去調度虛擬機(4)定義了一個可擴展架構,用戶可以根據項目的需求進行定制

(1)標準客戶端(ReferenceClient):以命令行的方式訪問服務,全面支持WSRF前臺的各種特性(2)WSRF:WebServicesResourceFramework,即Web服務資源框架(3)RMAPI:也就是資源管理(4)工作區(qū)(Workspace):實際上就是一個計算節(jié)點SectorandSphere

SectorandSphere--Sector是部署在廣域網上的分布式存儲系統(tǒng)--Sphere是建立在Sector之上的計算服務Sector架構Sphere的基本數(shù)據處理模型具體流程(1)當主服務器接收到Sphere數(shù)據處理的客戶端請求,主服務器向客戶端發(fā)送一個可用的從節(jié)點列表(2)客戶端選擇一些或者所有從節(jié)點,讓SPE在其上運行(3)客戶端與SPE建立UDT連接(4)流處理函數(shù)被發(fā)送給每個SPE,并儲存在從節(jié)點上(5)SPE打開動態(tài)庫并獲得各種處理函數(shù)SectorandSphere

第一階段采用哈希函數(shù)掃描全部的數(shù)據流,把每個元素放置到相應的桶中

使用兩個Sphere過程執(zhí)行分布式排序的過程第二個階段使用SPE對每個桶排序

abiquoAbiquo——幫助用戶在各種復雜環(huán)境下高效地構建公有、私有或混合云。這套方案主要包括三個部分:abiCloud、abiNtense和abiData--abiCloud是abiquo可以創(chuàng)建管理資源并且可以按需擴展。該工具能夠以快速、簡單和可擴展的方式創(chuàng)建和管理大型、復雜的IT基礎設施--abiCloud目前主要有三個版本:社區(qū)版(CommunityVersion)、企業(yè)版(EnterpriseVersion)和ISP版(ISPVersion,ISP表示互聯(lián)網服務提供商)abiquoabiCloud基本構架abiCloud_WS——虛擬工廠,主要負責管理各種虛擬化技術abiCloud_VMS——用來監(jiān)控虛擬化設備的運行狀態(tài)

MongoDBMongoDB——由10gen公司支持的一項開源計劃。10gen云平臺可用于創(chuàng)建私有云,目標是構建一個基于分布式文件存儲系統(tǒng)的數(shù)據庫

MongoDB主要特性(1)易存儲對象類型的數(shù)據(2)高性能,特別適合“高容量、值較低”的數(shù)據類型(3)支持動態(tài)查詢(4)支持復制和故障恢復(5)自動處理碎片以支持云計算層次上的擴展性(6)使用高效的二進制數(shù)據存儲方式,可以存儲包括視頻在內的大型數(shù)據MongoDBMongoDB的架構主流存儲方案對比

提綱

簡介

Cassandra

Hive

VoltDB體系結構

(1)核心層主要提供一些底層服務包括用戶的信息服務、基于DHT的分區(qū)策略、復制策略及Gossip失敗檢測策略等(2)中間層主要融合了BigTable存儲系統(tǒng)的架構技術,同樣采用了CommitLog日志記錄,Memtable/SStable存儲模型,以及合并壓縮SStable所使用的壓縮技術(3)頂層主要提供API(應用API和工具API

),監(jiān)控工具,以及一些針對一致性問題的策略(讀修復技術

)數(shù)據模型ColumnName:“ID”Value:“92938493”Timestamp:24500167081)列--最小的數(shù)據單元,它是一個三元組,包含名稱(Name)、值(Value)和時間戳(Timestamp)2)超級列--名稱和值的元組,它并不包含列中的時間戳。列和超級列最大的不同:列的值是一個“String”,而超級列的值是許多列的Map3)列族--包含了許多行的結構,列族三個元素:名稱、類型和排序方式--Standard類型包含許多列(而不是超級列)

--Super類型包含一系列超級列

SuperColumnColumn1Column2Column3ColumnN數(shù)據模型4)行--以key為表示,一個key對應的數(shù)據可以分布在多個列族中5)鍵值空間--數(shù)據最外層,鍵值空間是Cassandra哈希表的第一維,是列族的容器RowColumnFamily1ColumnFamily2ColumnFamilyN兩級索引第一級索引——用一個Row-Key和CF-Name可以定位一個列族第二級索引——通過一個Column-Name可在一個列族中定位一個列

存儲機制

優(yōu)勢--隨機IO寫變成順序IO寫,降低了大量的寫操作對于存儲系統(tǒng)所帶來的壓力BloomFilter算法--通過多個哈希函數(shù)將Key映射到一個位圖中來快速判斷這個Key屬于哪個SSTable

數(shù)據存儲目錄三種類型文件

--SSTable數(shù)據文件--映射文件--索引文件

存儲機制

存儲機制:三個列族的Key值先記錄在Commitlog中,Commitlog保存在獨立磁盤上--Memtable滿足一定條件后批量刷新到磁盤上,存儲為SSTable--利用BloomFilter算法定位Key所屬塊讀/寫刪過程

Cassandra寫入過程(1)客戶端向Cassandra集群中單一隨機節(jié)點發(fā)出寫請求(2)此節(jié)點將作為代理節(jié)點,并根據復制放置策略(ReplicationPlacementStrategy)將寫請求發(fā)送到N個不同節(jié)點(3)這N個節(jié)點以“RowMutation”消息的形式接收到此寫請求,節(jié)點會執(zhí)行以下兩個操作:一是消息追加到CommitLog中以滿足事務性目的;二是將數(shù)據寫入到Memtable(4)代理節(jié)點必須等待這N個不同節(jié)點中的某些節(jié)點寫響應的返回,才能將寫操作成功的消息告訴客戶端讀/寫刪過程

Cassandra的寫一致性水平(假設副本個數(shù):n)分為三種情況(1)ONE:確保寫入到至少一個節(jié)點中的Commitlog和Memtable(2)QUORUM:確保至少寫入到n/2+1個節(jié)點上(3)ALL:確保寫入到n個節(jié)點上

節(jié)點數(shù)據復制策略:確保單點故障不會導致整個集群不可用

Cassandra的寫具有以下幾個特性(1)關鍵路徑上無任何鎖(2)表現(xiàn)出類似于寫入式緩存(Writethroughcache),快速高效(3)順序磁盤訪問(4)只有Append操作,沒有額外的讀開銷(5)即使出現(xiàn)節(jié)點故障時也都總是可寫(6)只保證基于列族的原子性

讀/寫刪過程

2.Cassadra讀取過程(1)客戶端發(fā)送一個讀請求到Cassandra集群中的單一隨機節(jié)點(即存儲代理節(jié)點StorageProxy)(2)該節(jié)點根據復制放置策略將讀請求發(fā)送到N個不同節(jié)點(3)收到讀請求的節(jié)點都要合并讀取SSTable和Memtable(4)代理節(jié)點必須等待這N個不同節(jié)點中的某些節(jié)點讀響應的返回,才能將讀操作成功的消息告訴客戶端

Cassadra的讀一致性水平(假設副本個數(shù)為n)分為以下三種情況(a)ONE:返回第一個響應的節(jié)點上面的數(shù)據,但不保證數(shù)據是最新的,通過讀修復和一致性檢查可保證后續(xù)的調用能夠讀取最新的數(shù)據(b)QUORUM:查詢n個節(jié)點,返回至少n/2+1個節(jié)點上的最新數(shù)據(c)ALL:查詢n個節(jié)點,返回n個節(jié)點中的最新數(shù)據,一個節(jié)點失效將導致讀失敗。讀/寫刪過程

3.Cassadra刪除過程分布式數(shù)據庫在刪除方面存問題:一個刪除操作不可能一次性將數(shù)據立即刪除掉解決方案:--刪除標記稱為墓碑(Tombstone)、常量GCGraceSecondsCassandra真正刪除數(shù)據的過程是:當客戶端從Cassandra中讀取數(shù)據的時候,節(jié)點在返回數(shù)據之前都會主動檢查是否該數(shù)據被設置了刪除標記,并且該刪除標志的添加時長已經大于GCGraceSeconds,則要先刪除該節(jié)點的數(shù)據再返回提綱

簡介

Cassandra

Hive

VoltDB整體構架

(1)用戶界面(UI):用戶通過用戶界面提交查詢及其他操作(2)驅動器(Driver):接收用戶的查詢請求(3)編譯器(Compiler):用來解析查詢(4)元數(shù)據存儲器(Metastore):存儲數(shù)據倉庫中所有不同表和分區(qū)的結構信息,包括列和列類型信息(5)執(zhí)行引擎(ExecutionEngine):執(zhí)行由編譯器制訂的計劃查詢流程圖

數(shù)據模型(1)表(Table)Hive中的表和關系數(shù)據庫中的表的概念是相似的。表能被過濾、投影、連接和合并(2)分區(qū)(Partition)每一個表可以有一個或幾個分區(qū)鍵,鍵值決定了數(shù)據是怎樣存儲(3)桶(Bucket)根據表中列的Hash值,每一個分區(qū)(Partition)中的數(shù)據都可以被分割成幾部分存儲到幾個Bucket中

表和外表區(qū)別:表的創(chuàng)建過程和數(shù)據加載過程可以在同一個語句中完成。當刪除表時,表中的數(shù)據和元數(shù)據是一同被刪除的。而外表只有一個過程,即表的創(chuàng)建和加載是同時完成的。外表中,真正的數(shù)據是存儲在(CREATEEXTERNALTABLE…LOCATION)的LOCATION之后指定的HDFS路徑中,而不是在數(shù)據倉庫的目錄之中。當刪除外表時,并不刪除實際的數(shù)據,只刪除相應的元數(shù)據

除了基本的列數(shù)據類型(整型、單精度浮點型、字符串、日期和布爾型)以外,Hive也支持數(shù)組和圖

HQL語言

1.DDL:DataDefinitionLanguage創(chuàng)建表的示例CREATE[EXTERNAL]TABLE[IFNOTEXISTS]table_name[(col_namedata_type[COMMENTcol_comment],...)][COMMENTtable_comment][PARTITIONEDBY(col_namedata_type[COMMENTcol_comment],...)][CLUSTEREDBY(col_name,col_name,...)[SORTEDBY(col_name[ASC|DESC],...)]INTOnum_bucketsBUCKETS][ROWFORMATrow_format][STOREDASfile_format][LOCATIONhdfs_path]HQL語言

Hive總體來說可以分為三種不同類型的表(1)普通表對應一個表名對應的文件,HQL如下:CREATETABLEtest_1(idINT,nameSTRING,citySTRING)SORTEDBYTEXTFILEROWFORMATDELIMITED‘\t’

(2)外部表創(chuàng)建外部表時,僅僅記錄數(shù)據所在的路徑,而不對數(shù)據的位置做任何改變。在刪除表時,內部表的元數(shù)據和數(shù)據會一起被刪除,而外部表只刪除元數(shù)據,不刪除數(shù)據。具體HQL如下:CREATEEXTERNALTABLEtest_1(idINT,nameSTRING,citySTRING)SORTEDBYTEXTFILEROWFORMATDELIMITED'\t'LOCATION'hdfs://../../..‘(3)分區(qū)表分區(qū)表實際是一個文件夾,表名即文件夾名。每個分區(qū),實際是表名這個文件夾下面的不同文件。具體HQL如下:CREATETABLEtest_1(idINT,nameSTRING,citySTRING)PARTITIONEDBY(ptSTRING)SORTEDBYTEXTFILEROWFORMATDELIMITED'\t'HQL語言

2.DML:DataManipulationLanguage

基本的加載數(shù)據例子如下:LOADDATA[LOCAL]INPATH'filepath'[OVERWRITE]INTOTABLEtablename[PARTITION(partcol1=val1,partcol2=val2...)]

Hive在load數(shù)據這塊,可以分為以下4種方式(1)Loaddata到指定的表,具體HQL如下:LOADDATALOCALINPATH'/home/admin/test/test.txt'OVERWRITEINTOTABLEtest_1(2)Load到指定表的分區(qū),具體HQL如下:LOADDATALOCALINPATH‘/home/admin/test/test.txt’OVERWRITEINTOTABLEtest_1PARTITION(pt=’xxxx)(3)Insert+Select方式,這個是完全不同于文件操作的數(shù)據導入方式,--標準的語法為:INSERTOVERWRITETABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)]select_statement1FROMfrom_statementHQL語言

--多重插入為:INSERTOVERWRITETABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)]select_statement1[INSERTOVERWRITETABLEtablename2[PARTITION...]select_statement2]…--動態(tài)分區(qū)插入:INSERTOVERWRITETABLEtablenamePARTITION(partcol1[=val1],partcol2[=val2]...)select_statementFROMfrom_statement(4)Alter表,對分區(qū)操作。在對表結構進行修改的時候,可以增加一個新的分區(qū),在增加新分區(qū)的同時,將數(shù)據直接load到新的分區(qū)當中。具體HQI如下:ALTERTABLEtable_nameADDpartition_spec[LOCATION'location1']partition_spec[LOCATION'location2']...HQL語言

3.Query(查詢)基本的有Query–Join(連接)。Hive只支持等值連接(EqualityJoins)、外連接(OuterJoins)和LeftSemiJoins(1)JoinLEFT/RIGHTOUTER:輸出左邊/右邊的每一行對應的結果。(2)LeftSemiJoin:用于實現(xiàn)a.keyinselectkeyfromtableb(3)多個表的Joinkey是同一個時,Join會被轉化為單個Map/Reduce任務:Reduce端會緩存a表和b表的記錄,然后每次取得一個c表的記錄就計算一次Join結果(4)不同Joinkey時,會被轉化為多個Map/Reduce任務:第一次緩存a表,用b表序列化;第二次緩存第一次Map/Reduce任務的結果,然后用c表序列化Join的實現(xiàn)

環(huán)境搭建1.安裝ant(1)從/下載

ant二進制安裝包,選擇1.7.1版本;(2)將包apache-ant-1.7.1-bin.zip上傳到/usr/local目錄;(3)在/usr/local目錄將apache-ant-1.7.1-bin.zip解壓:unzipapache-ant-1.7.1-bin.zip;(4)在/usr/local目錄為ant建一個軟連接:ln-sapache-ant-1.7.1ant;(5)修改/etc/profile,增加如下行:exportPATH=/usr/local/ant/bin:$PATH。2.安裝ivy(1)從/dist/ant/ivy/下載ivy二進制安裝包,選擇2.1.0-rc2版本;(2)將包apache-ivy-2.1.0-rc2-bin.tar.gz上傳到/usr/local目錄;(3)在/usr/local目錄將apache-ivy-2.1.0-rc2-bin.tar.gz解壓:tarxzfapache-ivy-2.1.0-rc2-bin.tar.gz;(4)在/usr/local目錄為ivy建一個軟連接:ln-sapache-ivy-2.1.0-rc2ivy;(5)修改/etc/profile,增加如下行:exportIVY_HOME=/usr/local/ivy環(huán)境搭建3.編譯Hive編譯Hive前,請確保HADOOP_HOME和IVY_HOME兩個環(huán)境變量已經生效。(1)從/repos/asf/hadoop/hive/trunk下載Hive源代碼;(2)將Hive源代碼打包上傳到Hadoop-A機器;(3)解壓Hive源代碼包;(4)修改shims/ivy

溫馨提示

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

評論

0/150

提交評論