(教學(xué)課件)Hadoop體系架構(gòu)概述備份_第1頁
(教學(xué)課件)Hadoop體系架構(gòu)概述備份_第2頁
(教學(xué)課件)Hadoop體系架構(gòu)概述備份_第3頁
(教學(xué)課件)Hadoop體系架構(gòu)概述備份_第4頁
(教學(xué)課件)Hadoop體系架構(gòu)概述備份_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

Hadoop體系架構(gòu)概述2021/8/231精品PPT模板Hadoop體系架構(gòu)HDFS簡介Map/Reduce模型分布式列式數(shù)據(jù)庫Hbase2021/8/232精品PPT模板Hadoop概述

基于Apache基金會(huì)下的一個(gè)開源項(xiàng)目,致力于開發(fā)一個(gè)可靠的、大規(guī)模的分布式計(jì)算框架用戶可采用簡單的計(jì)算模型在計(jì)算機(jī)集群下對大規(guī)模的數(shù)據(jù)進(jìn)行分布式處理設(shè)計(jì)理念之一是擴(kuò)展單一的服務(wù)器為成千上萬機(jī)器的集群,且集群中每一個(gè)機(jī)器同時(shí)提供本地計(jì)算力和存儲(chǔ)力Hadoop框架是在應(yīng)用層檢測和處理硬件失效問題,而不是依賴于硬件自身來維持高可用性。在Hadoop框架集群中硬件失效被認(rèn)為是一種常態(tài),集群的高可用性服務(wù)是建立在整個(gè)集群之上的

2021/8/233精品PPT模板

分布式文件系統(tǒng)(HadoopDistributedFileSystem,HDFS)并行計(jì)算模型(Map/Reduce)列式數(shù)據(jù)庫(HBase)數(shù)據(jù)倉庫(Hive)數(shù)據(jù)分析語言(Pig)數(shù)據(jù)格式轉(zhuǎn)化工具(Sqoop)協(xié)同工作系統(tǒng)(Zookeeper)數(shù)據(jù)序列化系統(tǒng)(Avro)HDFS(HadoopDistributedFileSystem)Map/Reduce(JobScheduling/ExecutionSystem)Hbase(ColumnDatabase)Pig(DataFlow)Hive(SQL)SqoopETLToolsBIReportingRDBMSAvroSerialization)Zookeeper(Coordination)Hadoop整體框架2021/8/234精品PPT模板Hadoop整體框架下特點(diǎn)Hadoop主要在多節(jié)點(diǎn)集群環(huán)境下以數(shù)據(jù)存儲(chǔ)為基礎(chǔ)最大限度兼容結(jié)構(gòu)化數(shù)據(jù)格式以數(shù)據(jù)處理為目的且其數(shù)據(jù)操作技術(shù)多樣化2021/8/235精品PPT模板Hadoop體系架構(gòu)

HDFS簡介Map/Reduce模型分布式列式數(shù)據(jù)庫Hbase2021/8/236精品PPT模板HDFS概述-----基本特征基于商用硬件環(huán)境HDFS具有高容錯(cuò)性,并且被部署在廉價(jià)的硬件之上HDFS向應(yīng)用程序提供高的數(shù)據(jù)吞吐訪問,適合于需要處理大規(guī)模海量數(shù)據(jù)集的應(yīng)用HDFS遵循部分POSIX協(xié)議要求,可以確保應(yīng)用程序以流的方式訪問文件系統(tǒng)數(shù)據(jù)2021/8/237精品PPT模板HDFS的對現(xiàn)實(shí)應(yīng)用環(huán)境的假設(shè)及其目標(biāo)硬件失效流式數(shù)據(jù)訪問海量數(shù)據(jù)集追加寫入及文件同步“移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)的代價(jià)小”跨異構(gòu)硬件和軟件平臺(tái)的可移植性2021/8/238精品PPT模板1.硬件失效。在HDFS中,硬件失效是常態(tài)而不是意外。一個(gè)真實(shí)的HDFS環(huán)境可能由上百或上千的機(jī)器組成,每一個(gè)機(jī)器存儲(chǔ)文件系統(tǒng)中的部分?jǐn)?shù)據(jù)。集群中大量的機(jī)器都有極高的可能性會(huì)發(fā)生硬件故障而失效,這一真實(shí)的情況表明HDFS集群中的部分機(jī)器總是處于非正常工作狀態(tài)。因此,檢測機(jī)器失效并快速自動(dòng)恢復(fù)發(fā)生故障的機(jī)器是HDFS的核心架構(gòu)目標(biāo)。2.流式數(shù)據(jù)訪問。運(yùn)行在HDFS之上的應(yīng)用程序需要流式訪問其數(shù)據(jù)集,這與運(yùn)行在常規(guī)文件系統(tǒng)上的通用應(yīng)用程序不一樣。HDFS更適用于批量數(shù)據(jù)處理而不是用戶的交互性使用。HDFS的重點(diǎn)是強(qiáng)調(diào)數(shù)據(jù)的高吞吐訪問而不是數(shù)據(jù)的低延遲訪問。POSIX規(guī)定了很多的硬性要求,這些要求對運(yùn)行在HDFS上的應(yīng)用程序而言是非必須的。但是,HDFS在幾個(gè)關(guān)鍵領(lǐng)域引入了POSIX語義來提高數(shù)據(jù)的吞吐率。3.海量數(shù)據(jù)集。運(yùn)行在HDFS上的應(yīng)用是建立在海量數(shù)據(jù)集之上的。HDFS被設(shè)計(jì)來存儲(chǔ)大文件,通常HDFS中的文件大小應(yīng)該是千兆字節(jié)到兆兆字節(jié)。HDFS必須具備有很高的總數(shù)據(jù)帶寬,其單一集群規(guī)模能夠容乃成千上萬的機(jī)器節(jié)點(diǎn),并且一個(gè)HDFS集群能夠支撐數(shù)以萬計(jì)的文件量。4.追加寫入及文件同步。大多數(shù)的HDFS應(yīng)用都需要“一次寫多次讀”的文件訪問模式。HDFS具有兩種高級(jí)特征:刷新緩存(hflush)和文件添加(append)。刷新緩存使得一個(gè)未關(guān)閉文件的最后一個(gè)塊對訪問者可見的同時(shí)提供了讀一致性和數(shù)據(jù)持久性。文件添加提供了在一個(gè)已關(guān)閉文件的末尾添加額外數(shù)據(jù)的機(jī)制。5.“移動(dòng)計(jì)算比移動(dòng)數(shù)據(jù)的代價(jià)小”。應(yīng)用所需要的計(jì)算如果在數(shù)據(jù)的附近實(shí)施效率更高,這一特性在數(shù)據(jù)量特別龐大時(shí)會(huì)顯得更加明顯。數(shù)據(jù)處理的本地化會(huì)最大限度地減少網(wǎng)絡(luò)擁塞,并且提高系統(tǒng)整體的吞吐量。因此,在HDFS中假設(shè)移動(dòng)計(jì)算至數(shù)據(jù)的存儲(chǔ)位置比移動(dòng)數(shù)據(jù)至應(yīng)用程序運(yùn)行位置更好。為了實(shí)現(xiàn)這一假設(shè),HDFS為應(yīng)用提供了接口來移動(dòng)應(yīng)用自身到接近數(shù)據(jù)的儲(chǔ)存點(diǎn)。6.跨異構(gòu)硬件和軟件平臺(tái)的可移植性。HDFS設(shè)計(jì)的目標(biāo)之一是能夠簡單的從一個(gè)平臺(tái)移植到另一平臺(tái)。這便于大量的應(yīng)用選擇HDFS作為一個(gè)平臺(tái)而廣泛使用。2021/8/239精品PPT模板HDFS架構(gòu)主從(Master/Slave)體系結(jié)構(gòu)只含有一個(gè)NameNode主服務(wù)節(jié)點(diǎn)這個(gè)節(jié)點(diǎn)管理文件系統(tǒng)中的命名空間和調(diào)度客服端對文件的訪問通常一個(gè)機(jī)器就是一個(gè)DataNode數(shù)據(jù)節(jié)點(diǎn),DataNode管理本節(jié)點(diǎn)上數(shù)據(jù)的存儲(chǔ)在HDFS內(nèi)部,一個(gè)文件被分割為一個(gè)或多個(gè)數(shù)據(jù)塊,并且這些數(shù)據(jù)塊被存儲(chǔ)在一批DataNode中。NameNode執(zhí)行文件系統(tǒng)中命名空間的操作(打開、關(guān)閉、重命名文件和目錄),NameNode需要執(zhí)行數(shù)據(jù)塊到DataNode映射的決策DataNode負(fù)責(zé)響應(yīng)來自客戶端的文件讀寫要求,也要負(fù)責(zé)執(zhí)行來自NameNode的關(guān)于數(shù)據(jù)塊創(chuàng)建、刪除和冗余存儲(chǔ)的指令ClientMetaDataopsWriteNameNodeMetaData(Name,replicas,…)ClientDataNodesDataNodesBlockopsReadBlockssReplicationNameNode同DataNode都是可以架設(shè)在普通商品機(jī)上,一個(gè)典型的HDFS集群中部署一個(gè)專用機(jī)做為NameNode,其余的機(jī)器部署為DataNode。雖然,這個(gè)體系結(jié)構(gòu)并不排除把一個(gè)機(jī)器做為多個(gè)DataNode節(jié)點(diǎn),但是這樣的情況在實(shí)際部署中很少發(fā)生。單NameNode結(jié)構(gòu)極大的簡化了集群的系統(tǒng)結(jié)構(gòu),NameNode主管并且存儲(chǔ)所有的HDFS的元數(shù)據(jù)(MetaData),系統(tǒng)中用戶數(shù)據(jù)絕不會(huì)流過NameNode節(jié)點(diǎn)。2021/8/2310精品PPT模板Hadoop體系架構(gòu)HDFS簡介Map/Reduce模型分布式列式數(shù)據(jù)庫Hbase2021/8/2311精品PPT模板Map/Reduce簡介一種用于在大型商用硬件集群中(成千上萬的節(jié)點(diǎn))對海量數(shù)據(jù)(多個(gè)兆兆字節(jié)數(shù)據(jù)集)實(shí)施可靠的、高容錯(cuò)的并行計(jì)算的軟件系統(tǒng)一個(gè)最先由Google提出的分布式計(jì)算軟件構(gòu)架基本原理

將一個(gè)復(fù)雜的問題,分成若干個(gè)簡單的子問題進(jìn)行解決。然后,對子問題的結(jié)果進(jìn)行合并,得到原有問題的解2021/8/2312精品PPT模板Map/Reduce概念"Map"和"Reduce"是編程語言中的概念,都是處理數(shù)據(jù)集合的函數(shù)Map在處理數(shù)據(jù)序列的過程中只處理當(dāng)前的數(shù)據(jù)信息,不需要跟之前處理的狀態(tài)信息交互主結(jié)點(diǎn)讀入輸入數(shù)據(jù),把它分成可以用相同方法解決的小數(shù)據(jù)塊,然后把這些小數(shù)據(jù)塊分發(fā)到不同的工作節(jié)點(diǎn)上,每一個(gè)工作節(jié)點(diǎn)循環(huán)做同樣的事,這就形成了一個(gè)樹行結(jié)構(gòu),而每一個(gè)葉子節(jié)點(diǎn)來處理每一個(gè)具體的小數(shù)據(jù)塊,再把這些處理結(jié)果返回給父節(jié)點(diǎn)Reduce在處理過程中卻依賴之前處理的結(jié)果,同時(shí)生成的結(jié)果也被后續(xù)的處理使用。結(jié)點(diǎn)得到所有子節(jié)點(diǎn)的處理結(jié)果,然后把所有結(jié)果組合并且返回到輸出一個(gè)Map/Reduce任務(wù)會(huì)把一個(gè)輸入數(shù)據(jù)集分割為獨(dú)立的數(shù)據(jù)塊,然后Map任務(wù)會(huì)以完全并行的方式處理這些數(shù)據(jù)塊。Map/Reduce系統(tǒng)自動(dòng)對Map任務(wù)的輸出分類,再把這些分類結(jié)果做為Reduce任務(wù)的輸入。無論是任務(wù)的輸入還是輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中。Map/Reduce系統(tǒng)關(guān)注任務(wù)調(diào)度、任務(wù)監(jiān)測和重新執(zhí)行失敗的任務(wù)2021/8/2313精品PPT模板Map/Reduce模型計(jì)算節(jié)點(diǎn)和存儲(chǔ)節(jié)點(diǎn)的一致性是因?yàn)镸ap/Reduce系統(tǒng)和HDFS運(yùn)行在同樣的節(jié)點(diǎn)結(jié)合上。這樣的配置允許Hadoop框架有效的調(diào)度任務(wù)在那些數(shù)據(jù)已經(jīng)準(zhǔn)備好了的節(jié)點(diǎn)上,這樣的好處是整個(gè)集群中總帶寬非常的高。Map/Reduce的一個(gè)特點(diǎn)是可以用Map和Reduce方法來處理分布式計(jì)算問題時(shí),盡可能的實(shí)現(xiàn)數(shù)據(jù)處理的本地化,降低由數(shù)據(jù)移動(dòng)而產(chǎn)生的代價(jià)。這里的每一個(gè)Map操作都是相對獨(dú)立的,所有的Maps都是并行運(yùn)行的,雖然實(shí)踐中會(huì)受到數(shù)據(jù)源和CPU個(gè)數(shù)的影響。同樣的,這里用一個(gè)Reduce集合來執(zhí)行Reduce操作,所有帶有相同key的Map輸出會(huì)聚集到同一個(gè)Reduce。雖然這個(gè)過程看上去沒有串行計(jì)算來得高效,但是Map/Reduce能夠處理一般服務(wù)器所不能處理的大數(shù)據(jù)量處理問題。大型的服務(wù)器集群可以在幾個(gè)小時(shí)內(nèi)處理千兆兆數(shù)據(jù)量的排序問題。而并行處理可以提供部分容錯(cuò)和出錯(cuò)恢復(fù)的功能。Map/Reduce系統(tǒng)由單一的JobTracker主節(jié)點(diǎn)和若干個(gè)TaskTracker從節(jié)點(diǎn)組成,其中每一個(gè)集群節(jié)點(diǎn)對應(yīng)一個(gè)TaskTracker節(jié)點(diǎn)。主節(jié)點(diǎn)負(fù)責(zé)調(diào)度任務(wù)的各個(gè)組成任務(wù)到從節(jié)點(diǎn)上,監(jiān)控并且重新執(zhí)行失敗的組成任務(wù);從節(jié)點(diǎn)執(zhí)行主節(jié)點(diǎn)安排的組成任務(wù)。Map/Reduce的Map和Reduce過程都定義了鍵值對(<key,value>)的數(shù)據(jù)結(jié)構(gòu),即系統(tǒng)視任務(wù)的輸入數(shù)據(jù)為鍵值對集合,并且產(chǎn)生鍵值對結(jié)合做為任務(wù)的輸出。一次Map/Reduce任務(wù)的輸入輸出格式:(input)<k1,v1>->map-><k2,v2>->combine-><k2,v2>->reduce-><k3,v3>(output)。2021/8/2314精品PPT模板一次Map/Reduce任務(wù)過程。用戶提交任務(wù)給JobTracer,JobTracer把對應(yīng)的用戶程序中的Map操作和Reduce操作映射至TaskTracer節(jié)點(diǎn)中;輸入模塊負(fù)責(zé)把輸入數(shù)據(jù)分成小數(shù)據(jù)塊,然后把它們傳給Map節(jié)點(diǎn);Map節(jié)點(diǎn)得到每一個(gè)key/value對,處理后產(chǎn)生一個(gè)或多個(gè)key/value對,然后寫入文件;Reduce節(jié)點(diǎn)獲取臨時(shí)文件中的數(shù)據(jù),對帶有相同key的數(shù)據(jù)進(jìn)行迭代計(jì)算,然后把終結(jié)果寫入文件。6write5remotewrite4localwrite3readUserProgramTaskTracerTaskTracerTaskTracerTaskTracerTaskTracerChunk1Chunk2……Chunkn1fork1fork2assignmapOutputOutputInputfiles1fork2assignreduceJobTracerMapphaseIntermediatefiles(onlocaldisk)ReducephaseOutputfilesMap/Reduce處理過程2021/8/2315精品PPT模板Map/Reduce優(yōu)缺點(diǎn)Map/Reduce通過工作狀態(tài)的返回有效處理了單點(diǎn)失效的問題Map/Reduce是隸屬于大粒度的并行計(jì)算模式,并行節(jié)點(diǎn)間在Map階段中和Reduce階段中無法通信,也并非是一種萬能的數(shù)據(jù)處理模型2021/8/2316精品PPT模板Hadoop體系架構(gòu)HDFS簡介Map/Reduce模型分布式列式數(shù)據(jù)庫Hbase2021/8/2317精品PPT模板Hbase簡介可提供隨機(jī)的、實(shí)時(shí)的大數(shù)據(jù)讀寫訪問目標(biāo)是在商用硬件上存儲(chǔ)非常大的表——數(shù)十億的行數(shù)百萬的列開源的、分布式的、版本化的、面向列的存儲(chǔ)模型對Google公司Bigtable系統(tǒng)的開源模仿,建立在Hadoop和HDFS之上提供類Bigtable的存儲(chǔ)力2021/8/2318精品PPT模板Hbase數(shù)據(jù)模型按預(yù)先定義好的列族(Columnfamily)結(jié)構(gòu)來存儲(chǔ)數(shù)據(jù),即每一條數(shù)據(jù)有一個(gè)key以及若干個(gè)列屬性值組成,每列的數(shù)據(jù)都有自己的版本信息數(shù)據(jù)是按列進(jìn)行有序存儲(chǔ)的,不同于關(guān)系型數(shù)據(jù)庫中按行存儲(chǔ)兩種方式的數(shù)據(jù)操作,通過對有序key值進(jìn)行掃描查詢,獲取value值,或者借助強(qiáng)大的Hadoop來進(jìn)行Map/Reduce查詢采用了強(qiáng)一致性的讀寫保證,數(shù)據(jù)會(huì)在多個(gè)不同的域(region)中進(jìn)行保存。列族可以包含無限多個(gè)數(shù)據(jù)版本,每個(gè)版本可以有自己的TTL(TimetoLive,生命周期)通過行級(jí)鎖來保證寫操作的原子性,但是不支持多行寫操作的事務(wù)性。數(shù)據(jù)掃描操作不保證一致性2021/8/2319精品PPT模板HBase下表的邏輯視圖行鍵(Rowkey)時(shí)間戳(Timestamp)列族(Columnfamily)列(Column)

RowkeyTimestampColumnfamilyA……Columna…………keytn……………………t1value1……在創(chuàng)建一張表時(shí),必須定義行鍵名及所需列族的列族名,理論上一張表在創(chuàng)建時(shí)可以無限制地定義列族個(gè)數(shù),而時(shí)間戳?xí)上到y(tǒng)自動(dòng)生成。列無需在創(chuàng)建表時(shí)定義,可以在使用時(shí)隨意定義使用,一個(gè)列族下同樣可以無限制的定義列的個(gè)數(shù)。雖然,HBase中可以任意的定義列族個(gè)數(shù)及附屬列的個(gè)數(shù),但是只需能夠保證任意一列不為空時(shí),該行即為有效行。2021/8/2320精品PPT模板HBase下表的物理視圖在HBase中采用的稀疏存儲(chǔ),物理存儲(chǔ)過程中細(xì)化到一個(gè)單元(Cell)。在邏輯視圖中,任意一行不會(huì)空的每一列都被稱作為一個(gè)單元。單元聯(lián)同行鍵、時(shí)間戳、列族名、列名做為完整的一行存儲(chǔ)到文件系統(tǒng)中,并且這個(gè)存儲(chǔ)過程中會(huì)自動(dòng)排序,先在各行鍵間以字母升序排列,再在同行鍵間以時(shí)間戳降序排列。RowkeyTimestampColumnfamilyColumnValuekeytnColumnfamilyA………………keyt1ColumnfamilyAColumnavalue12021/8/2321精品PPT模板一張表創(chuàng)建的初始階段其中只含有一個(gè)Region,隨著表中數(shù)據(jù)的量的不斷增多,一個(gè)Region會(huì)分裂為兩個(gè)Region,然后不斷重復(fù)上述過程,并且Region會(huì)被存儲(chǔ)到HDFS中不同的DataNode上。Region包含有一個(gè)或多個(gè)的Store,其數(shù)量增長過程同表中的Region數(shù)量增長過程一致。但是Store中分為兩個(gè)部分:第一個(gè)部分是Memstore,一個(gè)Store中只包含一個(gè)Memstore,并且Memstore存儲(chǔ)在內(nèi)存空間中;第二個(gè)部分是Storefile,此部分由Memstore寫入硬盤而得。隨著Memstore寫入硬盤的次數(shù)增多,Storefile的數(shù)量也會(huì)增加,當(dāng)文件個(gè)數(shù)增加到一定量時(shí),系統(tǒng)會(huì)自動(dòng)對Storefile文件進(jìn)行合并。合并過程中主要完成以下幾個(gè)工作:1.具有相同行鍵的行存放在一個(gè)文件中;2.扔掉被標(biāo)志為刪除的行;3.扔掉時(shí)間戳過期的行,完成更新操作。隨著合并操作的頻繁執(zhí)行Storefile會(huì)變得很大,達(dá)到一定文件大小時(shí)自動(dòng)分裂文件,貼合HDFS中對一個(gè)塊數(shù)據(jù)大小的定義。HBase的一張表中的多個(gè)列族(ColumnFamily),在物理存儲(chǔ)上一個(gè)列族對應(yīng)一個(gè)文件夾,一個(gè)文件夾中可包含若干個(gè)Hfile文件。Hfile是圖(2-4)中Storefile的底層文件格式,StoreFile就是對Hfile做了輕量級(jí)包裝。MemstoreStorefileStorefile單一鍵值TableRegionStore包含零個(gè)或多個(gè)包含一個(gè)或多個(gè)包含一個(gè)或多個(gè)包含一個(gè)達(dá)到一定閾值時(shí)寫入硬盤文件個(gè)數(shù)達(dá)到一定閾值時(shí)合并文件大小達(dá)到一定閾值時(shí)分裂Hbase物理存儲(chǔ)過程2021/8/2322精品PPT模板

一個(gè)Hfile中包含有若干個(gè)數(shù)據(jù)塊(Datablock)和對應(yīng)數(shù)量的元數(shù)據(jù)塊(Metablock)。數(shù)據(jù)塊中以鍵值對形式存放的用戶數(shù)據(jù)被稱之為記錄(Record),一條記錄保存一個(gè)鍵值對或者說保存一個(gè)單元的數(shù)據(jù);元數(shù)據(jù)塊其主要作用是判斷一個(gè)鍵值是都在當(dāng)前Hfile文件中;文件信息(FileInfo)中保存了與該HFile相關(guān)的一些信息,其中有系統(tǒng)保留的一些固定的值,也可以保存用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論