大數(shù)據(jù)與分布式計算-課件_第1頁
大數(shù)據(jù)與分布式計算-課件_第2頁
大數(shù)據(jù)與分布式計算-課件_第3頁
大數(shù)據(jù)與分布式計算-課件_第4頁
大數(shù)據(jù)與分布式計算-課件_第5頁
已閱讀5頁,還剩125頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

大數(shù)據(jù)與分布式計算1大數(shù)據(jù)與分布式計算1HDFSHadoopDistributedFileSystem2HDFSHadoopDistributedFileSy1990年,一個普通的硬盤驅(qū)動器可存儲1370MB的數(shù)據(jù)并擁有4.4MB/s的傳輸速度,所以,只需五分鐘的時間就可以讀取整個磁盤的數(shù)據(jù)。20年過去了,1TB級別的磁盤驅(qū)動器是很正常的,但是數(shù)據(jù)傳輸?shù)乃俣葏s在100MB/s左右。所以它需要花兩個半小時以上的時間讀取整個驅(qū)動器的數(shù)據(jù)。從一個驅(qū)動器上讀取所有的數(shù)據(jù)需要很長的時間,寫甚至更慢。如何解決?磁盤損壞數(shù)據(jù)丟失怎么辦?如果需要存儲計算1000T數(shù)據(jù)怎么辦?31990年,一個普通的硬盤驅(qū)動器可存儲13常用RAID技術(shù)4常用RAID技術(shù)455HDFS系統(tǒng)架構(gòu)6HDFS系統(tǒng)架構(gòu)677什么是HDFS?HadoopDistributedFileSystemHadoopDistributedFileSystem(HDFS)istheprimarystoragesystemusedbyHadoopapplications.HDFScreatesmultiplereplicas

ofdatablocksanddistributesthemoncomputenodesthroughoutaclustertoenablereliable,extremelyrapidcomputations.8什么是HDFS?HadoopDistributedFilHDFS設(shè)計目標HDFS以流式數(shù)據(jù)訪問模式存儲超大文件,運行于商用硬件集群上。9HDFS設(shè)計目標HDFS以流式數(shù)據(jù)訪問模式存儲超大文件,運行超大文件流式數(shù)據(jù)訪問一次寫入多次讀取商用硬件10超大文件10不適合HDFS的場景低延遲的數(shù)據(jù)訪問大量小文件超過NameNode的處理能力多用戶任意寫入修改文件11不適合HDFS的場景低延遲的數(shù)據(jù)訪問11HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)據(jù)塊(datablocks)的復(fù)制(replicas),并將它們放置在服務(wù)器群的計算節(jié)點中(computenodes),MapReduce就可以在它們所在的節(jié)點上處理這些數(shù)據(jù)了。12HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)設(shè)計目標假設(shè):節(jié)點失效是常態(tài)理想:1.任何一個節(jié)點失效,不影響HDFS服務(wù)2.HDFS可以自動完成副本的復(fù)制13設(shè)計目標假設(shè):13HDFS主要組件的功能

14HDFS主要組件的功能14文件文件切分成塊(默認大小64M),以塊為單位,每個塊有多個副本存儲在不同的機器上,副本數(shù)可在文件生成時指定(默認3)NameNode是主節(jié)點,存儲文件的元數(shù)據(jù)如文件名,文件目錄結(jié)構(gòu),文件屬性(生成時間,副本數(shù),文件權(quán)限),以及每個文件的塊列表以及塊所在的DataNode等等DataNode在本地文件系統(tǒng)存儲文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗和可以創(chuàng)建、刪除、移動或重命名文件,當(dāng)文件創(chuàng)建、寫入和關(guān)閉之后不能修改文件內(nèi)容。15文件文件切分成塊(默認大小64M),以塊為單位,每個塊有多個分而治之(DivideandConquer)16分而治之(DivideandConquer)16分而治之(DivideandConquer)17分而治之(DivideandConquer)17分而治之(DivideandConquer)18分而治之(DivideandConquer)18MapReduce19MapReduce19MapReduce:大規(guī)模數(shù)據(jù)處理處理海量數(shù)據(jù)(>1TB)上百/上千CPU實現(xiàn)并行處理簡單地實現(xiàn)以上目的移動計算比移動數(shù)據(jù)更劃算

分而治之(DivideandConquer)20MapReduce:大規(guī)模數(shù)據(jù)處理處理海量數(shù)據(jù)(>1TB)2MapReduce特性自動實現(xiàn)分布式并行計算容錯提供狀態(tài)監(jiān)控工具模型抽象簡潔,程序員易用21MapReduce特性自動實現(xiàn)分布式并行計算21MapReduce它由稱為map和reduce的兩部分用戶程序組成,然后利用框架在計算機集群上面根據(jù)需求運行多個程序?qū)嵗齺硖幚砀鱾€子任務(wù),然后再對結(jié)果進行歸并。22MapReduce它由稱為map和reduce的兩部分用戶程2323WordCount24WordCount24252526262727282829293030MapReduce31MapReduce31MapReduce物理上32MapReduce物理上32MapReduce33MapReduce3334343535Hive36Hive36373738383939SQLSub-queriesinfromclauseEqui-joinsInnerLeft,Right,fullOuterMulti-tableInsertMulti-group-by40SQL40ExtensibilityPluggableMap-reducescriptsPluggableUserDefinedFunctionsPluggableUserDefinedTypesComplexobjecttypes:ListofMapsPluggableDataFormatsApacheLogFormatColumnarStorageFormat41Extensibility41HiveQL–JoinINSERTOVERWRITETABLEpv_usersSELECTpv.pageid,u.ageFROMpage_viewpv JOINuseru ON(pv.userid=u.userid);42HiveQL–Join42HiveQL–JoininMapReducepage_viewuserpv_usersMapShuffleSortReduce43HiveQL–JoininMapReducepa了解Hive的意義??Hive是一個很方便的工具,一般的業(yè)務(wù)人員就可以很快上手。

??M/R任務(wù)的數(shù)量控制著語句的執(zhí)行時間。

??如何減少M/R的任務(wù)數(shù)量?

??在寫HQL時我們能做什么?

??Hive如何把HQL轉(zhuǎn)化為M/R

job。

??Hive在轉(zhuǎn)化過程中做了哪些優(yōu)化。

44了解Hive的意義??Hive是一個很方便的工具,一般的業(yè)

Driver

Compiler

Hadoop

Hive架構(gòu)

Client

Metastore

45

DriverCompilerHadoop4646

Driver

Compiler

Hadoop

Hive執(zhí)行流程??操作符(Operator)是Hive的最小處理單元

??每個操作符處理代表HDFS操作或MR作業(yè)

??編譯器把Hive

SQL轉(zhuǎn)換成一組操作符

Client

Metastore

47 DriverHadoop Hive執(zhí)行流程MetaHive操作符操作符TableScanOperator

ReduceSinkOperator

JoinOperator

SelectOperator

FileSinkOperator

FilterOperator

GroupByOperator

MapJoinOperator

LimitOperator

UnionOperator

描述從表中讀取數(shù)據(jù)生成到reduce端的結(jié)果數(shù)據(jù)Join兩份數(shù)據(jù)減少輸出列生成結(jié)果,輸出數(shù)據(jù)到文件過濾輸入數(shù)據(jù)GroupBy分組操作MapJoin

Hint或者由優(yōu)化器決定采用MapJoin

Limit限制行數(shù)操作Union操作48Hive操作符操作符描述48

Hive執(zhí)行流程??Hive通過ExecMapper和ExecReducer來執(zhí)行

MapReduce任務(wù)。

??執(zhí)行MapReduce時有兩種模式

–?本地模式

–?分布式模式

Driver

Compiler

Hadoop

Client

Metastore

49 Hive執(zhí)行流程–?分布式模式

Driver

Driver

Compiler

Hadoop

Hive編譯器

Client

Metastore

50 DriverHadoopHive編譯器MetastSpark51Spark51Spark生態(tài)系統(tǒng)52Spark生態(tài)系統(tǒng)52SparkSpark是整個BDAS的核心組件,是一個大數(shù)據(jù)分布式編程框架,不僅實現(xiàn)了MapReduce的算子map函數(shù)和reduce函數(shù)及計算模型,還提供更為豐富的算子,如filter、join、groupByKey等。Spark將分布式數(shù)據(jù)抽象為彈性分布式數(shù)據(jù)集(RDD),實現(xiàn)了應(yīng)用任務(wù)調(diào)度、RPC、序列化和壓縮,并為運行在其上的上層組件提供API。其底層采用Scala這種函數(shù)式語言書寫而成,并且所提供的API深度借鑒Scala函數(shù)式的編程思想,提供與Scala類似的編程接口。53SparkSpark是整個BDAS的核心組件,是一個大數(shù)據(jù)分Spark任務(wù)處理流程54Spark任務(wù)處理流程54SparkSQLSparkSQL提供在大數(shù)據(jù)上的SQL查詢功能,類似于Shark在整個生態(tài)系統(tǒng)的角色,它們可以統(tǒng)稱為SQLonSpark。之前,Shark的查詢編譯和優(yōu)化器依賴于Hive,使得Shark不得不維護一套Hive分支,而SparkSQL使用Catalyst做查詢解析和優(yōu)化器,并在底層使用Spark作為執(zhí)行引擎實現(xiàn)SQL的Operator。用戶可以在Spark上直接書寫SQL,相當(dāng)于為Spark擴充了一套SQL算子,這無疑更加豐富了Spark的算子和功能,同時SparkSQL不斷兼容不同的持久化存儲(如HDFS、Hive等),為其發(fā)展奠定廣闊的空間。55SparkSQLSparkSQL提供在大數(shù)據(jù)上的SQL查SparkStreamingSparkStreaming通過將流數(shù)據(jù)按指定時間片累積為RDD,然后將每個RDD進行批處理,進而實現(xiàn)大規(guī)模的流數(shù)據(jù)處理。其吞吐量能夠超越現(xiàn)有主流流處理框架Storm,并提供豐富的API用于流數(shù)據(jù)計算。56SparkStreamingSparkStreamingGraphXGraphX基于BSP模型,在Spark之上封裝類似Pregel的接口,進行大規(guī)模同步全局的圖計算,尤其是當(dāng)用戶進行多輪迭代時,基于Spark內(nèi)存計算的優(yōu)勢尤為明顯。57GraphXGraphX基于BSP模型,在Spark之上封裝TachyonTachyon是一個分布式內(nèi)存文件系統(tǒng),可以理解為內(nèi)存中的HDFS。為了提供更高的性能,將數(shù)據(jù)存儲剝離JavaHeap。用戶可以基于Tachyon實現(xiàn)RDD或者文件的跨應(yīng)用共享,并提供高容錯機制,保證數(shù)據(jù)的可靠性。58TachyonTachyon是一個分布式內(nèi)存文件系統(tǒng),可以理Spark架構(gòu)59Spark架構(gòu)59Spark的基本組件。ClusterManager:在Standalone模式中即為Master(主節(jié)點),控制整個集群,監(jiān)控Worker。在YARN模式中為資源管理器。Worker:從節(jié)點,負責(zé)控制計算節(jié)點,啟動Executor或Driver。在YARN模式中為NodeManager,負責(zé)計算節(jié)點的控制。Driver:運行Application的main()函數(shù)并創(chuàng)建SparkContext。60Spark的基本組件。ClusterManager:在StaExecutor:執(zhí)行器,在workernode上執(zhí)行任務(wù)的組件、用于啟動線程池運行任務(wù)。每個Application擁有獨立的一組Executors。SparkContext:整個應(yīng)用的上下文,控制應(yīng)用的生命周期。RDD:Spark的基本計算單元,一組RDD可形成執(zhí)行的有向無環(huán)圖RDDGraph。DAGScheduler:根據(jù)作業(yè)(Job)構(gòu)建基于Stage的DAG,并提交Stage給TaskScheduler。TaskScheduler:將任務(wù)(Task)分發(fā)給Executor執(zhí)行。61Executor:執(zhí)行器,在workernode上執(zhí)行任務(wù)SparkEnv:線程級別的上下文,存儲運行時的重要組件的引用。SparkEnv內(nèi)創(chuàng)建并包含如下一些重要組件的引用?!apOutPutTracker:負責(zé)Shuffle元信息的存儲?!roadcastManager:負責(zé)廣播變量的控制與元信息的存儲?!lockManager:負責(zé)存儲管理、創(chuàng)建和查找塊?!etricsSystem:監(jiān)控運行時性能指標信息?!parkConf:負責(zé)存儲配置信息。62SparkEnv:線程級別的上下文,存儲運行時的重要組件的引Spark運行邏輯在Spark應(yīng)用中,整個執(zhí)行流程在邏輯上會形成有向無環(huán)圖(DAG)。Action算子觸發(fā)之后,將所有累積的算子形成一個有向無環(huán)圖,然后由調(diào)度器調(diào)度該圖上的任務(wù)進行運算。Spark的調(diào)度方式與MapReduce有所不同。Spark根據(jù)RDD之間不同的依賴關(guān)系切分形成不同的階段(Stage),一個階段包含一系列函數(shù)執(zhí)行流水線。63Spark運行邏輯在Spark應(yīng)用中,整個執(zhí)行流程在邏輯上會6464知識回顧KnowledgeReview知識回顧KnowledgeReview大數(shù)據(jù)與分布式計算66大數(shù)據(jù)與分布式計算1HDFSHadoopDistributedFileSystem67HDFSHadoopDistributedFileSy1990年,一個普通的硬盤驅(qū)動器可存儲1370MB的數(shù)據(jù)并擁有4.4MB/s的傳輸速度,所以,只需五分鐘的時間就可以讀取整個磁盤的數(shù)據(jù)。20年過去了,1TB級別的磁盤驅(qū)動器是很正常的,但是數(shù)據(jù)傳輸?shù)乃俣葏s在100MB/s左右。所以它需要花兩個半小時以上的時間讀取整個驅(qū)動器的數(shù)據(jù)。從一個驅(qū)動器上讀取所有的數(shù)據(jù)需要很長的時間,寫甚至更慢。如何解決?磁盤損壞數(shù)據(jù)丟失怎么辦?如果需要存儲計算1000T數(shù)據(jù)怎么辦?681990年,一個普通的硬盤驅(qū)動器可存儲13常用RAID技術(shù)69常用RAID技術(shù)4705HDFS系統(tǒng)架構(gòu)71HDFS系統(tǒng)架構(gòu)6727什么是HDFS?HadoopDistributedFileSystemHadoopDistributedFileSystem(HDFS)istheprimarystoragesystemusedbyHadoopapplications.HDFScreatesmultiplereplicas

ofdatablocksanddistributesthemoncomputenodesthroughoutaclustertoenablereliable,extremelyrapidcomputations.73什么是HDFS?HadoopDistributedFilHDFS設(shè)計目標HDFS以流式數(shù)據(jù)訪問模式存儲超大文件,運行于商用硬件集群上。74HDFS設(shè)計目標HDFS以流式數(shù)據(jù)訪問模式存儲超大文件,運行超大文件流式數(shù)據(jù)訪問一次寫入多次讀取商用硬件75超大文件10不適合HDFS的場景低延遲的數(shù)據(jù)訪問大量小文件超過NameNode的處理能力多用戶任意寫入修改文件76不適合HDFS的場景低延遲的數(shù)據(jù)訪問11HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)據(jù)塊(datablocks)的復(fù)制(replicas),并將它們放置在服務(wù)器群的計算節(jié)點中(computenodes),MapReduce就可以在它們所在的節(jié)點上處理這些數(shù)據(jù)了。77HDFS為了做到可靠性(reliability)創(chuàng)建了多份數(shù)設(shè)計目標假設(shè):節(jié)點失效是常態(tài)理想:1.任何一個節(jié)點失效,不影響HDFS服務(wù)2.HDFS可以自動完成副本的復(fù)制78設(shè)計目標假設(shè):13HDFS主要組件的功能

79HDFS主要組件的功能14文件文件切分成塊(默認大小64M),以塊為單位,每個塊有多個副本存儲在不同的機器上,副本數(shù)可在文件生成時指定(默認3)NameNode是主節(jié)點,存儲文件的元數(shù)據(jù)如文件名,文件目錄結(jié)構(gòu),文件屬性(生成時間,副本數(shù),文件權(quán)限),以及每個文件的塊列表以及塊所在的DataNode等等DataNode在本地文件系統(tǒng)存儲文件塊數(shù)據(jù),以及塊數(shù)據(jù)的校驗和可以創(chuàng)建、刪除、移動或重命名文件,當(dāng)文件創(chuàng)建、寫入和關(guān)閉之后不能修改文件內(nèi)容。80文件文件切分成塊(默認大小64M),以塊為單位,每個塊有多個分而治之(DivideandConquer)81分而治之(DivideandConquer)16分而治之(DivideandConquer)82分而治之(DivideandConquer)17分而治之(DivideandConquer)83分而治之(DivideandConquer)18MapReduce84MapReduce19MapReduce:大規(guī)模數(shù)據(jù)處理處理海量數(shù)據(jù)(>1TB)上百/上千CPU實現(xiàn)并行處理簡單地實現(xiàn)以上目的移動計算比移動數(shù)據(jù)更劃算

分而治之(DivideandConquer)85MapReduce:大規(guī)模數(shù)據(jù)處理處理海量數(shù)據(jù)(>1TB)2MapReduce特性自動實現(xiàn)分布式并行計算容錯提供狀態(tài)監(jiān)控工具模型抽象簡潔,程序員易用86MapReduce特性自動實現(xiàn)分布式并行計算21MapReduce它由稱為map和reduce的兩部分用戶程序組成,然后利用框架在計算機集群上面根據(jù)需求運行多個程序?qū)嵗齺硖幚砀鱾€子任務(wù),然后再對結(jié)果進行歸并。87MapReduce它由稱為map和reduce的兩部分用戶程8823WordCount89WordCount24902591269227932894299530MapReduce96MapReduce31MapReduce物理上97MapReduce物理上32MapReduce98MapReduce33993410035Hive101Hive36102371033810439SQLSub-queriesinfromclauseEqui-joinsInnerLeft,Right,fullOuterMulti-tableInsertMulti-group-by105SQL40ExtensibilityPluggableMap-reducescriptsPluggableUserDefinedFunctionsPluggableUserDefinedTypesComplexobjecttypes:ListofMapsPluggableDataFormatsApacheLogFormatColumnarStorageFormat106Extensibility41HiveQL–JoinINSERTOVERWRITETABLEpv_usersSELECTpv.pageid,u.ageFROMpage_viewpv JOINuseru ON(pv.userid=u.userid);107HiveQL–Join42HiveQL–JoininMapReducepage_viewuserpv_usersMapShuffleSortReduce108HiveQL–JoininMapReducepa了解Hive的意義??Hive是一個很方便的工具,一般的業(yè)務(wù)人員就可以很快上手。

??M/R任務(wù)的數(shù)量控制著語句的執(zhí)行時間。

??如何減少M/R的任務(wù)數(shù)量?

??在寫HQL時我們能做什么?

??Hive如何把HQL轉(zhuǎn)化為M/R

job。

??Hive在轉(zhuǎn)化過程中做了哪些優(yōu)化。

109了解Hive的意義??Hive是一個很方便的工具,一般的業(yè)

Driver

Compiler

Hadoop

Hive架構(gòu)

Client

Metastore

110

DriverCompilerHadoop11146

Driver

Compiler

Hadoop

Hive執(zhí)行流程??操作符(Operator)是Hive的最小處理單元

??每個操作符處理代表HDFS操作或MR作業(yè)

??編譯器把Hive

SQL轉(zhuǎn)換成一組操作符

Client

Metastore

112 DriverHadoop Hive執(zhí)行流程MetaHive操作符操作符TableScanOperator

ReduceSinkOperator

JoinOperator

SelectOperator

FileSinkOperator

FilterOperator

GroupByOperator

MapJoinOperator

LimitOperator

UnionOperator

描述從表中讀取數(shù)據(jù)生成到reduce端的結(jié)果數(shù)據(jù)Join兩份數(shù)據(jù)減少輸出列生成結(jié)果,輸出數(shù)據(jù)到文件過濾輸入數(shù)據(jù)GroupBy分組操作MapJoin

Hint或者由優(yōu)化器決定采用MapJoin

Limit限制行數(shù)操作Union操作113Hive操作符操作符描述48

Hive執(zhí)行流程??Hive通過ExecMapper和ExecReducer來執(zhí)行

MapReduce任務(wù)。

??執(zhí)行MapReduce時有兩種模式

–?本地模式

–?分布式模式

Driver

Compiler

Hadoop

Client

Metastore

114 Hive執(zhí)行流程–?分布式模式

Driver

Driver

Compiler

Hadoop

Hive編譯器

Client

Metastore

115 DriverHadoopHive編譯器MetastSpark116Spark51Spark生態(tài)系統(tǒng)117Spark生態(tài)系統(tǒng)52SparkSpark是整個BDAS的核心組件,是一個大數(shù)據(jù)分布式編程框架,不僅實現(xiàn)了MapReduce的算子map函數(shù)和reduce函數(shù)及計算模型,還提供更為豐富的算子,如filter、join、groupByKey等。Spark將分布式數(shù)據(jù)抽象為彈性分布式數(shù)據(jù)集(RDD),實現(xiàn)了應(yīng)用任務(wù)調(diào)度、RPC、序列化和壓縮,并為運行在其上的上層組件提供API。其底層采用Scala這種函數(shù)式語言書寫而成,并且所提供的API深度借鑒Scala函數(shù)式的編程思想,提供與Scala類似的編程接口。118SparkSpark是整個BDAS的核心組件,是一個大數(shù)據(jù)分Spark任務(wù)處理流程119Spark任務(wù)處理流程54SparkSQLSparkSQL提供在大數(shù)據(jù)上的SQL查詢功能,類似于Shark在整個生態(tài)系統(tǒng)的角色,它們可以統(tǒng)稱為SQLonSpark。之前,Shark的查詢編譯和優(yōu)化器依賴于Hive,使得Shark不得不維護一套Hive分支,而SparkSQL使用Catalyst做查詢解析和優(yōu)化器,并在底層使用Spark作為執(zhí)行引擎實現(xiàn)SQL的Operator。用戶可以在Spark上直接書寫SQL,相當(dāng)于為Spark擴充了一套SQL算子,這無疑更加豐富了Spark的算子和功能,同時SparkSQL不斷兼容不同的持久化存儲(如HDFS、Hive等),為其發(fā)展奠定廣闊的空間。120SparkSQLSparkSQL提供在大數(shù)據(jù)上的SQL查SparkStreamingSparkStreaming通過將流數(shù)據(jù)按指定時間片累積為RDD,然后將每個RDD進行批處理,進而實現(xiàn)大規(guī)模的流數(shù)據(jù)處理。其吞吐量能夠超越現(xiàn)有主流流處理框架Storm,并提供豐富的API用于流數(shù)據(jù)計算。121SparkStreamingSparkStreamingGraphXGraphX基于BSP模型,在Spark之上封裝類似Pregel的接口,進行大規(guī)模同步全局的圖計算,尤其是當(dāng)用戶進行多輪迭代時,基于Spark內(nèi)存計算的優(yōu)勢尤為明顯。122GraphXGraphX基于BSP模型,在Spark之上封裝TachyonTachyon是一個

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論