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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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

《云計(jì)算(第二版)》購買網(wǎng)址:當(dāng)當(dāng)網(wǎng)

京東商城姊妹力作《實(shí)戰(zhàn)Hadoop》購買網(wǎng)址:當(dāng)當(dāng)網(wǎng)

京東商城提綱

簡介

Cassandra

Hive

VoltDBCassandra

Cassandra

一套高度可擴(kuò)展、最終一致、分布式的結(jié)構(gòu)化鍵值存儲(chǔ)系統(tǒng)

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

設(shè)計(jì)目標(biāo)高可用性最終一致性動(dòng)態(tài)可伸縮

動(dòng)態(tài)調(diào)整一致性/持久性與延時(shí)

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

Cassandra突出特點(diǎn)321模式靈活

真正的可擴(kuò)展性

多數(shù)據(jù)中心識(shí)別

65范圍查詢列表數(shù)據(jù)結(jié)構(gòu)分布式寫操作

4Hive

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

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

可達(dá)到幾乎線性的擴(kuò)展

滿足ACID特性

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

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

限制

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

增加節(jié)點(diǎn)需要停止服務(wù)

不支持xDBC

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

EnomalyECP

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

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

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

(1)標(biāo)準(zhǔn)客戶端(ReferenceClient):以命令行的方式訪問服務(wù),全面支持WSRF前臺(tái)的各種特性(2)WSRF:WebServicesResourceFramework,即Web服務(wù)資源框架(3)RMAPI:也就是資源管理(4)工作區(qū)(Workspace):實(shí)際上就是一個(gè)計(jì)算節(jié)點(diǎn)SectorandSphere

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

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

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

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

MongoDBMongoDB——由10gen公司支持的一項(xiàng)開源計(jì)劃。10gen云平臺(tái)可用于創(chuàng)建私有云,目標(biāo)是構(gòu)建一個(gè)基于分布式文件存儲(chǔ)系統(tǒng)的數(shù)據(jù)庫

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

提綱

簡介

Cassandra

Hive

VoltDB體系結(jié)構(gòu)

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

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

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

--Super類型包含一系列超級(jí)列

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

存儲(chǔ)機(jī)制

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

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

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

存儲(chǔ)機(jī)制

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

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

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

節(jié)點(diǎn)數(shù)據(jù)復(fù)制策略:確保單點(diǎn)故障不會(huì)導(dǎo)致整個(gè)集群不可用

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

讀/寫刪過程

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

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

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

簡介

Cassandra

Hive

VoltDB整體構(gòu)架

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

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

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

除了基本的列數(shù)據(jù)類型(整型、單精度浮點(diǎn)型、字符串、日期和布爾型)以外,Hive也支持?jǐn)?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)普通表對(duì)應(yīng)一個(gè)表名對(duì)應(yīng)的文件,HQL如下:CREATETABLEtest_1(idINT,nameSTRING,citySTRING)SORTEDBYTEXTFILEROWFORMATDELIMITED‘\t’

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

2.DML:DataManipulationLanguage

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

Hive在load數(shù)據(jù)這塊,可以分為以下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方式,這個(gè)是完全不同于文件操作的數(shù)據(jù)導(dǎo)入方式,--標(biāo)準(zhǔn)的語法為:INSERTOVERWRITETABLEtablename1[PARTITION(partcol1=val1,partcol2=val2...)]select_statement1FROMfrom_statementHQL語言

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

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

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

ant二進(jìn)制安裝包,選擇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建一個(gè)軟連接:ln-sapache-ant-1.7.1ant;(5)修改/etc/profile,增加如下行:exportPATH=/usr/local/ant/bin:$PATH。2.安裝ivy(1)從/dist/ant/ivy/下載ivy二進(jìn)制安裝包,選擇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建一個(gè)軟連接:ln-sapache-ivy-2.1.0-rc2ivy;(5)修改/etc/profile,增加如下行:exportIVY_HOME=/usr/local/ivy環(huán)境搭建3.編譯Hive編譯Hive前,請(qǐng)確保HADOOP_HOME和IVY_HOME兩個(gè)環(huán)境變量已經(jīng)生效。(1)從/repos/asf/hadoop/hive/trunk下載Hive源代碼;(2)將Hive源代碼打包上傳到Hadoop-A機(jī)器;(3)解壓Hive源代碼包;(4)修改shims/ivy

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論