云計(jì)算基礎(chǔ)知識(shí)歸納_第1頁(yè)
云計(jì)算基礎(chǔ)知識(shí)歸納_第2頁(yè)
云計(jì)算基礎(chǔ)知識(shí)歸納_第3頁(yè)
云計(jì)算基礎(chǔ)知識(shí)歸納_第4頁(yè)
云計(jì)算基礎(chǔ)知識(shí)歸納_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余5頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、IaaS、 PaaS和 SaaS三種類型,不同的廠家又提供了不同的解決方案,目前對(duì)讀者了解云計(jì)算的原理構(gòu)成了障礙。為此, 本文綜合不構(gòu)造了一個(gè)供商榷的云計(jì)算體系結(jié)構(gòu)。這個(gè)體系結(jié)構(gòu)如圖3 所示, 它概括了每一種方案或許只實(shí)現(xiàn)了其中部分功能,或許也還有部分相對(duì)次3 云計(jì)算技術(shù)體系結(jié)構(gòu)4 層:物理資源層、資源池層、管理中間件層和SOA 構(gòu)建層,如3 所示。物理資源層包括計(jì)算機(jī)、存儲(chǔ)器、網(wǎng)絡(luò)設(shè)施、數(shù)據(jù)庫(kù)和軟件等;資源池層是將大如計(jì)算資源池、數(shù)據(jù)資源池等。構(gòu)建資源2000 個(gè)解決散熱和故障節(jié)點(diǎn)替換的問題并降低能耗;管理中間件負(fù)責(zé)對(duì)云計(jì)算的資源進(jìn)行SOA 構(gòu)建Web Services 服務(wù),并納入到SOA

2、 體系進(jìn)行管理和使用,包查找、 訪問和構(gòu)建服務(wù)工作流等。管理中間件和資源池層是云計(jì)算技術(shù)的最關(guān)SOA 構(gòu)建層的功能更多依靠外部設(shè)施提供。任務(wù)管理、用戶管理和安全管理等工作。資源管理負(fù)責(zé)檢測(cè)節(jié)點(diǎn)的故障并試圖恢復(fù)或屏蔽之,并對(duì)資源的使用情況進(jìn)行監(jiān)(Image)的部署任務(wù)執(zhí)行、任務(wù)生命期管理等等;用戶管理是實(shí)現(xiàn)云計(jì)算商業(yè)模式的一包括提供用戶交互接口、管理和識(shí)別用戶身份、創(chuàng)建用戶程序的執(zhí)行環(huán)安全管理保障云計(jì)算設(shè)施的整體安全,包括身份認(rèn)證、訪問IaaS 云計(jì)算為例,簡(jiǎn)述云計(jì)算的實(shí)現(xiàn)機(jī)制,如圖4 所示。Web Services 方式提供訪問接口,獲取用戶需求。服務(wù)目錄是用戶可系統(tǒng)管理模塊負(fù)責(zé)管理和分配所有

3、可用的資源,其核心是負(fù)載均衡。配置工具負(fù)責(zé)在分配的節(jié)點(diǎn)上準(zhǔn)備任務(wù)運(yùn)行環(huán)境。監(jiān)視統(tǒng)計(jì)模塊負(fù)責(zé)監(jiān)視節(jié)點(diǎn)的運(yùn)行狀態(tài),并完成用戶使用節(jié)點(diǎn)情況的統(tǒng)計(jì)。執(zhí)行過程并不復(fù)雜:用戶交互接口允許用戶從目錄中選取并調(diào)用一個(gè)服務(wù)。該請(qǐng)求傳遞給系統(tǒng)管理模塊后,它將為用戶分配恰當(dāng)?shù)馁Y源,然后調(diào)用配置工具來為用戶準(zhǔn)備運(yùn)行環(huán)境。Hadoop HDFS 特性簡(jiǎn)介一、設(shè)計(jì)思想1、硬件失效是“常態(tài)事件“,而非“偶然事件”。HDFS可能是有上千的機(jī)器組成(文檔中描述的 Yahoo! 一個(gè)Hadoop集群有4096個(gè)節(jié)點(diǎn)),任何一個(gè)組件都有可能一直失效,因此數(shù)據(jù)的健壯性錯(cuò)誤檢測(cè)和快速、自動(dòng)的恢復(fù)是HDFS的核心架構(gòu)目標(biāo)。2、 流式數(shù)據(jù)

4、訪問。運(yùn)行在HDFS上的應(yīng)用和普通的應(yīng)用不同,需要流式訪問它們的數(shù)據(jù)集。HDFS的設(shè)計(jì)中更多的考慮到了數(shù)據(jù)批處理,而不是用戶交互處理。比之?dāng)?shù)據(jù)訪問的低延遲問題,更關(guān)鍵的在于數(shù)據(jù)并發(fā)訪問的高吞吐量。POSIX標(biāo)準(zhǔn)設(shè)置的很多硬性約束對(duì)HDFS應(yīng)用系統(tǒng)不是必需的。為了提高數(shù)據(jù)的吞吐量,在一些關(guān)鍵方面對(duì)POSIX的語(yǔ)義做了一些修改。3、 HDFS應(yīng)用對(duì)文件要求的是write-one-read-many 訪問模型。一個(gè)文件經(jīng)過創(chuàng)建、寫,關(guān)閉之后就不需要改變。這一假設(shè)簡(jiǎn)化了數(shù)據(jù)一致性問題,使高吞吐量的數(shù)據(jù)訪問成為可能。典型的如MapReduce框架,或者一個(gè)web crawler 應(yīng)用都很適合這個(gè)模型。4

5、、移動(dòng)計(jì)算的代價(jià)比之移動(dòng)數(shù)據(jù)的代價(jià)低。一個(gè)應(yīng)用請(qǐng)求的計(jì)算,離它操作的數(shù)據(jù)越近就越高效,這在數(shù)據(jù)達(dá)到海量級(jí)別的時(shí)候更是如此。將計(jì)算移動(dòng)到數(shù)據(jù)附近,比之將數(shù)據(jù)移動(dòng)到應(yīng)用所在顯然更好,HDFS提供給應(yīng)用這樣的接口。5、在異構(gòu)的軟硬件平臺(tái)間的可移植性。二、Namenode和 Datanode 的劃分一個(gè)HDFS集群有一個(gè) Namenode和一定數(shù)目的Datanode 組成。Namenode是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的namespace和客戶端對(duì)文件的訪問。Datanode 在集群中會(huì)有多個(gè),一般是一個(gè)節(jié)點(diǎn)存在一個(gè),負(fù)責(zé)管理其自身節(jié)點(diǎn)上它們附帶的存儲(chǔ)。在內(nèi)部,一個(gè)大文件其分成一個(gè)或多個(gè)block

6、 ,這些 block 存儲(chǔ)在 Datanode 集合里。Namenode執(zhí)行文件系統(tǒng)的namespace相關(guān)操作,例如打開、關(guān)閉、重命名文件和目錄,同時(shí)決定了block 到具體 Datanode 節(jié)點(diǎn)的映射。Datanode 在 Namenode的指揮下進(jìn)行block的創(chuàng)建、刪除和復(fù)制。單一節(jié)點(diǎn)的Namenode大大簡(jiǎn)化了系統(tǒng)的架構(gòu)。Namenode負(fù)責(zé)保管和管理所有的HDFS元數(shù)據(jù), 因而在請(qǐng)求Namenode得到文件的位置后就不需要通過Namenode參與而直接從Datanode進(jìn)行。為了提高Namenode的性能,所有文件的namespace數(shù)據(jù)都在內(nèi)存中維護(hù),所以就天生存在了由于內(nèi)存大

7、小的限制導(dǎo)致一個(gè)HDFS集群的提供服務(wù)的文件數(shù)量的上限。根據(jù)目前的文檔,一個(gè)元數(shù)據(jù)(一個(gè)HDFS文件塊兒)占用200Bytes ,如果是頁(yè)面抓取的小文件,那么32GB內(nèi)存能承載1.5 億左右的文件存儲(chǔ)(有待精確詳細(xì)測(cè)試)。三、文件系統(tǒng)操作和namespace的關(guān)系HDFS支持傳統(tǒng)的層次型文件組織,與大多數(shù)其他文件系統(tǒng)類似,用戶可以創(chuàng)建目錄,并在其間創(chuàng)建、刪除、移動(dòng)和重命名文件。HDFS不支持user quotas 和訪問權(quán)限,也不支持鏈接 ( link) , 不過當(dāng)前的架構(gòu)并不排除實(shí)現(xiàn)這些特性。Namenode維護(hù)文件系統(tǒng)的namespace,任何對(duì)文件系統(tǒng)namespace和文件屬性的修改都

8、將被Namenode記錄下來。應(yīng)用可以設(shè)置HDFS保存的文件的副本數(shù)目,文件副本的數(shù)目稱為文件的replication 因子,這個(gè)信息也是由Namenode保存。四、數(shù)據(jù)復(fù)制HDFS被設(shè)計(jì)成在一個(gè)大集群中可以跨機(jī)器地可靠地存儲(chǔ)海量的文件。它將每個(gè)文件存儲(chǔ)成block 序列,除了最后一個(gè)block ,所有的block 都是同樣的大小。文件的所有block 為了容錯(cuò)都會(huì)被復(fù)制。每個(gè)文件的block 大小和 replication 因子都是可配置的。Replication因子可以在文件創(chuàng)建的時(shí)候配置,以后也可以改變。HDFS中的文件是write-one , 并且嚴(yán)格要求在任何時(shí)候只有一個(gè)writer

9、 。 Namenode全權(quán)管理block 的復(fù)制,它周期性地從集群中的每個(gè) Datanode 接收心跳包和一個(gè)Blockreport 。 心跳包的接收表示該Datanode 節(jié)點(diǎn)正常工作,而Blockreport 包括了該Datanode 上所有的block 組成的列表。1、副本的存放,副本的存放是HDFS可靠性和性能的關(guān)鍵。龐大的HDFS實(shí)例一般運(yùn)行在多個(gè)機(jī)架的計(jì)算機(jī)形成的集群上,不同機(jī)架間的兩臺(tái)機(jī)器的通訊需要通過交換機(jī),顯然通常情況下,同一個(gè)機(jī)架內(nèi)的兩個(gè)節(jié)點(diǎn)間的帶寬會(huì)比不同機(jī)架間的兩臺(tái)機(jī)器的帶寬大。在大多數(shù)情況下,replication 因子是3, HDFS的存放策略是將一個(gè)副本存放在本地

10、機(jī)架上的節(jié)點(diǎn), 一個(gè)副本放在同一機(jī)架上的另一個(gè)節(jié)點(diǎn),最后一個(gè)副本放在不同機(jī)架上的一個(gè)節(jié)點(diǎn)。機(jī)架的錯(cuò)誤遠(yuǎn)遠(yuǎn)比節(jié)點(diǎn)的錯(cuò)誤少,這個(gè)策略不會(huì)影響到數(shù)據(jù)的可靠性和有效性。三分之一的副本在一個(gè)節(jié)點(diǎn)上,三分之二在一個(gè)機(jī)架上,其他保存在剩下的機(jī)架中,這一策略改進(jìn)了寫的性能。2、副本的選擇,為了降低整體的帶寬消耗和讀延時(shí),HDFS會(huì)盡量讓reader 讀最近的副本。如果在 reader 的同一個(gè)機(jī)架上有一個(gè)副本,那么就讀該副本。如果一個(gè)HDFS集群跨越多個(gè)數(shù)據(jù)中心,那么reader 也將首先嘗試讀本地?cái)?shù)據(jù)中心的副本。3、 SafeModeNamenode啟動(dòng)后會(huì)進(jìn)入一個(gè)稱為SafeMode的特殊狀態(tài),處在這個(gè)狀

11、態(tài)的Namenode是不會(huì)進(jìn)行數(shù)據(jù)塊的復(fù)制的。Namenode從所有的Datanode 接收心跳包和Blockreport 。Blockreport 包括了某個(gè)Datanode 所有的數(shù)據(jù)塊列表。每個(gè)block 都有指定的最小數(shù)目的副本。當(dāng)Namenode檢測(cè)確認(rèn)某個(gè)Datanode 的數(shù)據(jù)塊副本的最小數(shù)目,那么該Datanode 就會(huì)被認(rèn)為是安全的;如果一定百分比(這個(gè)參數(shù)可配置)的數(shù)據(jù)塊檢測(cè)確認(rèn)是安全的,那么Namenode將退出SafeMode狀態(tài),接下來它會(huì)確定還有哪些數(shù)據(jù)塊的副本沒有達(dá)到指定數(shù)目,并將這些block 復(fù)制到其他Datanode。五、文件系統(tǒng)元數(shù)據(jù)的持久化Namenod

12、e存儲(chǔ)HDFS的元數(shù)據(jù)。對(duì)于任何對(duì)文件元數(shù)據(jù)產(chǎn)生修改的操作,Namenode都使用一個(gè)稱為 Editlog 的事務(wù)日志記錄下來。例如,在HDFS中創(chuàng)建一個(gè)文件,Namenode就會(huì)在Editlog 中插入一條記錄來表示;同樣, 修改文件的replication 因子也將往Editlog 插入一條記錄。Namenode在本地OS的文件系統(tǒng)中存儲(chǔ)這個(gè)Editlog 。 整個(gè)文件系統(tǒng)的namespace,包括 block 到文件的映射、文件的屬性,都存儲(chǔ)在稱為FsImage 的文件中,這個(gè)文件也是放在 Namenode所在系統(tǒng)的文件系統(tǒng)上。Namenode在內(nèi)存中保存著整個(gè)文件系統(tǒng)namespace

13、和文件 Blockmap 的映像。這個(gè)關(guān)鍵的元數(shù)據(jù)設(shè)計(jì)得很緊湊,一般為200Bytes 的內(nèi)存占用,因而一個(gè)帶有4G內(nèi)存的Namenode足夠支撐海量的文件和目錄。當(dāng)Namenode啟動(dòng)時(shí),它從硬盤中讀取Editlog 和 FsImage,將所有 Editlog 中的事務(wù)作用(apply) 在內(nèi)存中的FsImage ,并將這個(gè)新版本的FsImage 從內(nèi)存中 flush 到硬盤上, 然后再 truncate 這個(gè)舊的Editlog , 因?yàn)檫@個(gè)舊的Editlog 的事務(wù)都已經(jīng)作用在FsImage 上了。這個(gè)過程稱為checkpoint 。在當(dāng)前實(shí)現(xiàn)中,checkpoint 只發(fā)生在 Namen

14、ode啟動(dòng)時(shí),在不久的將來我們將實(shí)現(xiàn)支持周期性的checkpoint 。Datanode 并不知道關(guān)于文件的任何東西,除了將文件中的數(shù)據(jù)保存在本地的文件系統(tǒng)上。它把每個(gè)HDFS數(shù)據(jù)塊存儲(chǔ)在本地文件系統(tǒng)上隔離的文件中。Datanode 并不在同一個(gè)目錄創(chuàng)建所有的文件,相反, 它用啟發(fā)式地方法來確定每個(gè)目錄的最佳文件數(shù)目,并且在適當(dāng)?shù)臅r(shí)候創(chuàng)建子目錄。在同一個(gè)目錄創(chuàng)建所有的文件不是最優(yōu)的選擇,因?yàn)楸镜匚募到y(tǒng)可能無法高效地在單一目錄中支持大量的文件。當(dāng)一個(gè)Datanode 啟動(dòng)時(shí),它掃描本地文件系統(tǒng),對(duì)這些本地文件產(chǎn)生相應(yīng)的一個(gè)所有HDFS數(shù)據(jù)塊的列表,然后發(fā)送報(bào)告到Namenode,這個(gè)報(bào)告就是B

15、lockreport 。六、通訊協(xié)議所有的HDFS通訊協(xié)議都是構(gòu)建在TCP/IP 協(xié)議上??蛻舳送ㄟ^一個(gè)可配置的端口連接到Namenode, 通過ClientProtocol 與 Namenode交互。 而 Datanode 是使用 DatanodeProtocol與 Namenode交互。從ClientProtocol 和 Datanodeprotocol 抽象出一個(gè)遠(yuǎn)程調(diào)用(RPC),在設(shè)計(jì)上,Namenode不會(huì)主動(dòng)發(fā)起RPC,而是是響應(yīng)來自客戶端和Datanode 的RPC請(qǐng)求。七、健壯性HDFS的主要目標(biāo)就是實(shí)現(xiàn)在失敗情況下的數(shù)據(jù)存儲(chǔ)可靠性。常見的三種失敗:Namenodefailu

16、res, Datanode failures 和網(wǎng)絡(luò)分割(network partitions) 。1、硬盤數(shù)據(jù)錯(cuò)誤、心跳檢測(cè)和重新復(fù)制每個(gè) Datanode 節(jié)點(diǎn)都向Namenode周期性地發(fā)送心跳包。網(wǎng)絡(luò)切割可能導(dǎo)致一部分Datanode跟 Namenode失去聯(lián)系。Namenode通過心跳包的缺失檢測(cè)到這一情況,并將這些Datanode標(biāo)記為dead,不會(huì)將新的IO 請(qǐng)求發(fā)給它們。寄存在dead Datanode 上的任何數(shù)據(jù)將不再有效。 Datanode 的死亡可能引起一些block 的副本數(shù)目低于指定值,Namenode不斷地跟蹤需要復(fù)制的block ,在任何需要的情況下啟動(dòng)復(fù)制。在

17、下列情況可能需要重新復(fù)制:某個(gè)Datanode 節(jié)點(diǎn)失效,某個(gè)副本遭到損壞,Datanode 上的硬盤錯(cuò)誤,或者文件的replication因子增大。2、集群均衡HDFS支持?jǐn)?shù)據(jù)的均衡計(jì)劃,如果某個(gè)Datanode 節(jié)點(diǎn)上的空閑空間低于特定的臨界點(diǎn),那么就會(huì)啟動(dòng)一個(gè)計(jì)劃自動(dòng)地將數(shù)據(jù)從一個(gè)Datanode 搬移到空閑的Datanode。 當(dāng)對(duì)某個(gè)文件的請(qǐng)求突然增加,那么也可能啟動(dòng)一個(gè)計(jì)劃創(chuàng)建該文件新的副本,并分布到集群中以滿足應(yīng)用的要求。這些均衡計(jì)劃目前還沒有實(shí)現(xiàn)。3、數(shù)據(jù)完整性從某個(gè) Datanode 獲取的數(shù)據(jù)塊有可能是損壞的,這個(gè)損壞可能是由于Datanode 的存儲(chǔ)設(shè)備錯(cuò)誤、網(wǎng)絡(luò)錯(cuò)誤或者

18、軟件bug 造成的。HDFS客戶端軟件實(shí)現(xiàn)了HDFS文件內(nèi)容的校驗(yàn)和。當(dāng)某個(gè)客戶端創(chuàng)建一個(gè)新的HDFS文件,會(huì)計(jì)算這個(gè)文件每個(gè)block 的校驗(yàn)和,并作為一個(gè)單獨(dú)的隱藏文件保存這些校驗(yàn)和在同一個(gè)HDFS namespace下。當(dāng)客戶端檢索文件內(nèi)容,它會(huì)確認(rèn)從 Datanode 獲取的數(shù)據(jù)跟相應(yīng)的校驗(yàn)和文件中的校驗(yàn)和是否匹配,如果不匹配,客戶端可以選擇從其他Datanode 獲取該 block 的副本。4、元數(shù)據(jù)磁盤錯(cuò)誤FsImage 和 Editlog 是 HDFS的核心數(shù)據(jù)結(jié)構(gòu)。這些文件如果損壞了,整個(gè)HDFS實(shí)例都將失效。 因而,Namenode可以配置成支持維護(hù)多個(gè)FsImage 和 E

19、ditlog 的拷貝。 任何對(duì) FsImage或者 Editlog 的修改,都將同步到它們的副本上。這個(gè)同步操作可能會(huì)降低Namenode每秒能支持處理的namespace 事務(wù)。這個(gè)代價(jià)是可以接受的,因?yàn)镠DFS是數(shù)據(jù)密集的,而非元數(shù)據(jù)密集。當(dāng)Namenode重啟的時(shí)候,它總是選取最近的一致的FsImage 和 Editlog 使用。Namenode在 HDFS是單點(diǎn)存在,如果Namenode所在的機(jī)器錯(cuò)誤,手工的干預(yù)是必須的。目前,在另一臺(tái)機(jī)器上重啟因故障而停止服務(wù)的Namenode這個(gè)功能還沒實(shí)現(xiàn)。八、數(shù)據(jù)組織1、數(shù)據(jù)塊兼容HDFS的應(yīng)用都是處理大數(shù)據(jù)集合的。這些應(yīng)用都是寫數(shù)據(jù)一次,讀卻

20、是一次到多次,并且讀的速度要滿足流式讀。HDFS支持文件的write-once , read-many。一個(gè)典型的block大小是64MB,因而,文件總是按照64M切分成chunk,每個(gè)chunk 存儲(chǔ)于不同的Datanode上。2、數(shù)據(jù)產(chǎn)生步驟某個(gè)客戶端創(chuàng)建文件的請(qǐng)求其實(shí)并沒有立即發(fā)給Namenode,事實(shí)上,HDFS客戶端會(huì)將文件數(shù)據(jù)緩存到本地的一個(gè)臨時(shí)文件。應(yīng)用的寫被透明地重定向到這個(gè)臨時(shí)文件。當(dāng)這個(gè)臨時(shí)文件累積的數(shù)據(jù)超過一個(gè)block 的大小(默認(rèn)64M),客戶端才會(huì)聯(lián)系Namenode。 Namenode將文件名插入文件系統(tǒng)的層次結(jié)構(gòu)中,并且分配一個(gè)數(shù)據(jù)塊給它,然后返回Datanod

21、e 的標(biāo)識(shí)符和目標(biāo)數(shù)據(jù)塊給客戶端??蛻舳藢⒈镜嘏R時(shí)文件flush 到指定的Datanode 上。當(dāng)文件關(guān)閉時(shí),在臨時(shí)文件中剩余的沒有flush 的數(shù)據(jù)也會(huì)傳輸?shù)街付ǖ腄atanode,然后客戶端告訴 Namenode文件已經(jīng)關(guān)閉。此時(shí)Namenode才將文件創(chuàng)建操作提交到持久存儲(chǔ)。如果Namenode在文件關(guān)閉前掛了,該文件將丟失。上述方法是對(duì)通過對(duì)HDFS上運(yùn)行的目標(biāo)應(yīng)用認(rèn)真考慮的結(jié)果。如果不采用客戶端緩存,由于網(wǎng)絡(luò)速度和網(wǎng)絡(luò)堵塞會(huì)對(duì)吞估量造成比較大的影響。3、數(shù)據(jù)塊復(fù)制當(dāng)某個(gè)客戶端向HDFS文件寫數(shù)據(jù)的時(shí)候,一開始是寫入本地臨時(shí)文件,假設(shè)該文件的replication 因子設(shè)置為3, 那么客戶端會(huì)從Namenode 獲取一張Datanode 列表來存放副本。然后客戶端開始向第一個(gè)Datanode 傳輸數(shù)據(jù),第一個(gè)Datanode 一小部分一小部分(4kb)地接收數(shù)據(jù),將每個(gè)部分寫入本地倉(cāng)庫(kù),并且同時(shí)傳輸該部分到第二個(gè)Datanode 節(jié)點(diǎn)。第二個(gè) Datanode 也是這樣,邊收邊傳,一小部分一小部分地收,存儲(chǔ)在本地倉(cāng)庫(kù),同時(shí)傳給第三個(gè) Datanode,第三個(gè)Datanode 就

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論