




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Hadoop體系介紹目錄TOC\o"1-5"\h\z\o"CurrentDocument"一、背景 4\o"CurrentDocument"二、什么是Hadoop 4\o"CurrentDocument"apachehadoop項(xiàng)目 4\o"CurrentDocument"hadoop的優(yōu)點(diǎn) 5\o"CurrentDocument"Hadoop的使用場(chǎng)景 6\o"CurrentDocument"三、Hadoop發(fā)展?fàn)顩r及國(guó)內(nèi)外應(yīng)用情況 6\o"CurrentDocument"四、Hadoop文件系統(tǒng)HDFS 7\o"CurrentDocument"HDFS設(shè)計(jì)目標(biāo) 7\o"CurrentDocument"HDFS體系結(jié)構(gòu) 8\o"CurrentDocument"HDFS命名空間 9\o"CurrentDocument"HDFS存儲(chǔ)原理 9\o"CurrentDocument"數(shù)據(jù)存取策略 10通訊協(xié)議 12數(shù)據(jù)錯(cuò)誤和異常 12HDFS尚未實(shí)現(xiàn)的功能總結(jié) 13\o"CurrentDocument"五、MapReduce、hive和pig 14\o"CurrentDocument"MapReduce 14\o"CurrentDocument"Hive 15\o"CurrentDocument"Pig 16\o"CurrentDocument"Mapreduce、hive和pig對(duì)比分析 17\o"CurrentDocument"hadoop、hive和pig的性能測(cè)試 17\o"CurrentDocument"Hive和Pig對(duì)比 21\o"CurrentDocument"六、HBASE 22\o"CurrentDocument"HBASE數(shù)據(jù)模型 22\o"CurrentDocument"HBASE概念視圖 23\o"CurrentDocument"HBASE物理視圖 24\o"CurrentDocument"HBASE分布式體系結(jié)構(gòu) 25Hbase和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的對(duì)比分析 26七、關(guān)于Hadoop使用總結(jié) 27HDFS 27[在此處鍵入]TOC\o"1-5"\h\z\o"CurrentDocument"MapReduce、HIVE和PIG 27\o"CurrentDocument"HBASE 28\o"CurrentDocument"八、關(guān)于研究Hadoop的考慮 28九、參考文獻(xiàn) 錯(cuò)誤!未定義書(shū)簽。一、背景云計(jì)算已經(jīng)被看作IT業(yè)的新趨勢(shì),分布式計(jì)算開(kāi)源框架Hadoop作為構(gòu)建云計(jì)算平臺(tái)的技術(shù)之一而被廣為關(guān)注。在公司,目前Hadoop已經(jīng)在很多項(xiàng)目中用作海量數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)檢索和統(tǒng)計(jì)分析技術(shù)。順應(yīng)技術(shù)發(fā)展趨勢(shì),掌握熱門(mén)的新技術(shù)為公司關(guān)鍵項(xiàng)目提供技術(shù)保障,研究hadoop勢(shì)在必行。二、什么是Hadoopapachehadoop項(xiàng)目Hadoop是Apache開(kāi)源組織的一個(gè)分布式計(jì)算開(kāi)源框架,基于Hadoop可以輕松地編寫(xiě)可處理海量數(shù)據(jù)的分布式并行程序,并將其運(yùn)行于由成百上千個(gè)結(jié)點(diǎn)組成的大規(guī)模計(jì)算機(jī)集群上。Hadoop由DougCutting(道格?卡廷)在2004年開(kāi)始開(kāi)發(fā)并于2005年秋天作為Nutch的一部分被正式引入到Apache。Hadoop由HDFS、MapReduce、HBase、Hive和ZooKeeper等成員組成。其中,HDFS和MapReduce是兩個(gè)最基礎(chǔ)最核心的成員,其結(jié)構(gòu)如下圖所示:PigChukwaHiveM叩ReduceHDFSZooIfeeperCoreAvro圖2-1Hadoop子項(xiàng)目組成>Core:一系列分布式文件系統(tǒng)和通用I/O的組件和接口(序列化、JavaRPC和持久化數(shù)據(jù)結(jié)構(gòu)),2009年7月core被更名為common。Avro:一種提供高效、跨語(yǔ)言RPC的數(shù)據(jù)序列系統(tǒng),持久化數(shù)據(jù)存儲(chǔ)。MapReduce:分布式數(shù)據(jù)處理模式和執(zhí)行環(huán)境,運(yùn)行于大型商用機(jī)集群。HDFS:分布式文件系統(tǒng),運(yùn)行于大型商用機(jī)集群。Pig:一種數(shù)據(jù)流語(yǔ)言和運(yùn)行環(huán)境,用以檢索非常大的數(shù)據(jù)集。Pig運(yùn)行在MapReduce和HDFS的集群上。Hbase:一個(gè)分布式的、列存儲(chǔ)數(shù)據(jù)庫(kù)。HBase使用HDFS作為底層存儲(chǔ),同時(shí)支持MapReduce的批量式計(jì)算和點(diǎn)查詢(隨機(jī)讀?。?。ZooKeeper:一個(gè)分布式的、高可用性的協(xié)調(diào)服務(wù)。ZooKeeper提供分布式鎖之類的基本服務(wù)用于構(gòu)建分布式應(yīng)用。Hive:分布式數(shù)據(jù)倉(cāng)庫(kù)。Hive管理HDFS中存儲(chǔ)的數(shù)據(jù),并提供基于SQL的查詢語(yǔ)言(由運(yùn)行時(shí)引擎翻譯成MapReduce作業(yè))用以查詢數(shù)據(jù)。Chukwa:分布式數(shù)據(jù)收集和分析系統(tǒng)。Chukwa運(yùn)行HDFS中存儲(chǔ)數(shù)據(jù)的收集器,它使用MapReduce來(lái)生成報(bào)告。hadoop的優(yōu)點(diǎn)可擴(kuò)展:不論是存儲(chǔ)的可擴(kuò)展還是計(jì)算的可擴(kuò)展都是Hadoop的設(shè)計(jì)根本。經(jīng)濟(jì):框架可以運(yùn)行在任何普通的PC上。[在此處鍵入]>可靠:分布式文件系統(tǒng)的備份恢復(fù)機(jī)制以及MapReduce的任務(wù)監(jiān)控保證了分布式處理的可靠性。高效:分布式文件系統(tǒng)的高效數(shù)據(jù)交互實(shí)現(xiàn)以及MapReduce結(jié)合LocalData處理的模式,為高效處理海量的信息作了基礎(chǔ)準(zhǔn)備。Hadoop的使用場(chǎng)景Google最早提出MapReduce是為了海量數(shù)據(jù)分析,作為googleMapReduce的開(kāi)源實(shí)現(xiàn)HadoopMapReduce的最佳使用場(chǎng)景也是海量數(shù)據(jù)分析。海量數(shù)據(jù)存儲(chǔ)于HDFS中被分割于多個(gè)節(jié)點(diǎn),然后由每一個(gè)節(jié)點(diǎn)并行計(jì)算,將得出的結(jié)果歸并到輸出。同時(shí)第一階段的輸出又可以作為下一階段計(jì)算的輸入,因此可以想象到一個(gè)樹(shù)狀結(jié)構(gòu)的分布式計(jì)算圖,在不同階段都有不同產(chǎn)出,同時(shí)并行和串行結(jié)合的計(jì)算也可以很好地在分布式集群的資源下得以高效的處理。三、Hadoop發(fā)展?fàn)顩r及國(guó)內(nèi)外應(yīng)用情況Hadoop開(kāi)源項(xiàng)目的主要支持者和貢獻(xiàn)者是yahoo和facebook等國(guó)外的互聯(lián)網(wǎng)公司,在國(guó)內(nèi)也有淘寶、百度、騰訊、中移動(dòng)等公司在研究使用,同時(shí)Hadoop也受到了學(xué)術(shù)界的普遍關(guān)注,國(guó)內(nèi)的高校和科研院所基于Hadoop在數(shù)據(jù)存儲(chǔ)、資源管理、作業(yè)調(diào)度、性能優(yōu)化、系統(tǒng)高可用性和安全性方面進(jìn)行研究,相關(guān)研究成果多以開(kāi)源形式貢獻(xiàn)給Hadoop社區(qū)。Hadoop目前最穩(wěn)定的版本為0.20.0,這個(gè)版本還不能稱為1.0。盡管如此,Hadoop在國(guó)內(nèi)外得到了廣泛的應(yīng)用:>在Hadoop項(xiàng)目官方統(tǒng)計(jì)中國(guó)外有超過(guò)40家公司都在使用Hadoop,其中包括yahoo、facebook、adobe、ebay、MySpace和Amazon等。在國(guó)內(nèi)的大公司中也開(kāi)始使用hadoop:百度用Hadoop每天處理1PB的數(shù)據(jù),進(jìn)行搜索日志分析和網(wǎng)頁(yè)數(shù)據(jù)挖掘工作;中移動(dòng)研究院基于Hadoop開(kāi)發(fā)了“大云”(BigCloud)系統(tǒng),不但用于相關(guān)數(shù)據(jù)分析,還對(duì)外提供服務(wù);淘寶的Hadoop系統(tǒng)用于存儲(chǔ)并處理電子商務(wù)的交易相關(guān)數(shù)據(jù)。四、Hadoop文件系統(tǒng)HDFSHDFS是一個(gè)能夠兼容普通硬件環(huán)境的分布式文件系統(tǒng),和現(xiàn)有的分布式文件系統(tǒng)不同的地方是HDFS更注重容錯(cuò)性和兼容廉價(jià)的硬件設(shè)備,這樣做是為了用很小的預(yù)算甚至直接利用現(xiàn)有機(jī)器就實(shí)現(xiàn)大流量和大數(shù)據(jù)量的讀取。HDFS設(shè)計(jì)目標(biāo).防止硬件出錯(cuò)導(dǎo)致數(shù)據(jù)丟失,硬件出錯(cuò)是一種正常的情況而不是異常,為的就是在硬件出錯(cuò)的情況下盡量保證數(shù)據(jù)完整性,HDFS設(shè)計(jì)的目標(biāo)是在成百上千臺(tái)服務(wù)器中存儲(chǔ)數(shù)據(jù),并且可以快速檢測(cè)出硬件錯(cuò)誤和快速進(jìn)行數(shù)據(jù)的自動(dòng)恢復(fù)。.提供流數(shù)據(jù)讀寫(xiě),不同于普通的文件系統(tǒng),HDFS是為了程序批量處理數(shù)據(jù)而設(shè)計(jì)的,而不是與用戶的交互或者隨機(jī)讀寫(xiě),所以POSIX對(duì)程序增加了許多硬性限制,程序必須使用流讀取來(lái)提高數(shù)據(jù)吞吐率。.大數(shù)據(jù)集,HDFS上面一個(gè)典型的文件一般是用GB或者TB計(jì)算的,而且一個(gè)數(shù)百臺(tái)機(jī)器組成的集群里面可以支持過(guò)千萬(wàn)這樣的文件。.簡(jiǎn)單的文件模型,HDFS上面的文件模型十分簡(jiǎn)單,就是一次寫(xiě)入多次讀取的模型,文件一旦創(chuàng)建,寫(xiě)入并關(guān)閉了,之后就再也不會(huì)被改變了,只能被讀取,這種模型剛好符合搜索引擎的需求,以后可能會(huì)實(shí)現(xiàn)追加寫(xiě)入數(shù)據(jù)這樣的功能。.強(qiáng)大的跨平臺(tái)兼容性,由于是基于java的實(shí)現(xiàn),無(wú)論是硬件平臺(tái)或者是軟件平臺(tái)要求都不高,只要是jdk支持的平臺(tái)都可以兼容。HDFS體系結(jié)構(gòu)HDFS采用的是主從架構(gòu),由唯一一個(gè)NameNode和數(shù)個(gè)DataNode組成。HDFS對(duì)外表現(xiàn)為一個(gè)普通的文件系統(tǒng),用戶可以用文件名去存儲(chǔ)和訪問(wèn)文件,而實(shí)際上文件是被分成不同的數(shù)據(jù)塊,這些數(shù)據(jù)塊就是存儲(chǔ)在DataNode上面。NameNode是集群里面的主節(jié)點(diǎn),負(fù)責(zé)文件名的維護(hù)管理,也是客戶端訪問(wèn)文件的入口。文件名的維護(hù)包括文件和目錄的創(chuàng)建、刪除、重命名等。同時(shí)也管理數(shù)據(jù)塊和數(shù)據(jù)節(jié)點(diǎn)的映射關(guān)系,客戶端需要訪問(wèn)目錄節(jié)點(diǎn)才能知道一個(gè)文件的所有數(shù)據(jù)塊都保存在哪些數(shù)據(jù)節(jié)點(diǎn)上。DataNode一般就是集群里面的一臺(tái)機(jī)器,負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)和讀取。在寫(xiě)入時(shí),由NameNode分配數(shù)據(jù)塊的保存,然后客戶端直接寫(xiě)到對(duì)應(yīng)的數(shù)據(jù)節(jié)點(diǎn)。在讀取時(shí),當(dāng)客戶端從NameNode獲得數(shù)據(jù)塊的映射關(guān)系后,就會(huì)直接到對(duì)應(yīng)的DataNode讀取數(shù)據(jù)。數(shù)據(jù)節(jié)點(diǎn)也要根據(jù)NameNode的命令創(chuàng)建、刪除數(shù)據(jù)塊,和冗余復(fù)制。一個(gè)典型的HDFS集群部署,是由一臺(tái)性能較好的機(jī)器運(yùn)行NameNode,而集群里面的其它機(jī)器每臺(tái)上面運(yùn)行一個(gè)NameNode。當(dāng)然一個(gè)機(jī)器可以運(yùn)行任意多個(gè)DataNode,甚至NameNode和DataNode一起運(yùn)行,不過(guò)這種模式在正式的應(yīng)用部署中很少使用。唯一的NameNode的設(shè)計(jì)大大簡(jiǎn)化了整個(gè)體系結(jié)構(gòu),NameNode負(fù)責(zé)HDFS里面所有元數(shù)據(jù)的仲裁和存儲(chǔ)。這樣的設(shè)計(jì)使數(shù)據(jù)不會(huì)脫離NameNode的控制。HDFS體系結(jié)構(gòu)如下圖所示:HDFSArchitecture< -xMetadata(Name;replicas,...):. /Narnenode*/home/foo/data,3,...Metadata.ops|namenogg 11'.r BlockopsReidDatanodes \DatanodesHDFS命名空間HDFS使用的是傳統(tǒng)的分級(jí)文件體系,客戶端程序可以創(chuàng)建目錄并且在目錄里面保存文件,類似與現(xiàn)在一般的文件系統(tǒng)。HDFS允許用戶創(chuàng)建、刪除文件,在目錄間轉(zhuǎn)移文件,重命名文件等,但是還沒(méi)有實(shí)現(xiàn)磁盤(pán)配額和文件訪問(wèn)權(quán)限等功能,也不支持文件的硬連接和軟連接(快捷方式),這些功能在短期內(nèi)不會(huì)實(shí)現(xiàn)。NameNode負(fù)責(zé)存儲(chǔ)和管理整個(gè)文件系統(tǒng)的命名空間,應(yīng)用程序可以指定某一個(gè)文件需要在HDFS中冗余多少份,這個(gè)在HDFS中稱為冗余因素,保存在NameNode里面。HDFS存儲(chǔ)原理HDFS是為了大文件的可靠保存而設(shè)計(jì)的,一個(gè)文件被劃分成一連串的數(shù)據(jù)塊,除了文件的最后一塊以外其它所有的數(shù)據(jù)塊都是固定大小的,為了數(shù)據(jù)容錯(cuò)性,每一個(gè)數(shù)據(jù)塊都會(huì)被冗余存儲(chǔ)起來(lái),而每個(gè)文件的塊大小和冗余因素都是可以設(shè)置的,程序可以設(shè)置文件的數(shù)據(jù)塊要被復(fù)制多少份,而且這個(gè)冗余因素除了可以在創(chuàng)建的時(shí)候指定,還可以在之后改變。[在此處鍵入]在HDFS里面文件只會(huì)被寫(xiě)入一次,并且任何時(shí)間只會(huì)有一個(gè)程序在寫(xiě)入這個(gè)文件。NameNode是根據(jù)數(shù)據(jù)塊的冗余狀況來(lái)作出處理決策的,DataNode會(huì)定期發(fā)送一個(gè)存在信號(hào)(Heartbeat)和數(shù)據(jù)塊列表給NameNode,存在信號(hào)使NameNode認(rèn)為該DataNode還是有效的,而數(shù)據(jù)塊列表包括了該DataNode上面的所有數(shù)據(jù)塊編號(hào)。BlockReplicationNamenode(Filename,numReplicas,block-ids,...)/□sers/sanrieerp/da(a/part-O,r:2,{1.3},.../user&f&ameerp/<iata/part-i,r;3,{2.4,5),...數(shù)據(jù)存取策略數(shù)據(jù)復(fù)制策略是HDFS最核心的部分,對(duì)讀寫(xiě)性能影響很大,HDFS和其它分布式文件系統(tǒng)的最大區(qū)別就是可以調(diào)整冗余數(shù)據(jù)的位置,這個(gè)特性需要很多時(shí)間去優(yōu)化和調(diào)整。數(shù)據(jù)存放目前HDFS采用以機(jī)柜為基礎(chǔ)的數(shù)據(jù)存放策略,這樣做的目的是提高數(shù)據(jù)可靠性和充分利用網(wǎng)絡(luò)帶寬。當(dāng)前具體實(shí)現(xiàn)了的策略只是這個(gè)方向的嘗試,HDFS短期的研究目標(biāo)之一就是在實(shí)際產(chǎn)品環(huán)境中觀察系統(tǒng)讀寫(xiě)的行為,測(cè)試性能和研究更深入的規(guī)則。一個(gè)大的HDFS集群經(jīng)常橫跨多個(gè)機(jī)柜,而不同機(jī)柜之間的數(shù)據(jù)通訊同經(jīng)過(guò)交換機(jī)或者路由,所以同一個(gè)機(jī)柜中不同機(jī)器的通訊帶寬是比不同機(jī)柜之間機(jī)器通訊時(shí)候的大。HDFS提供了一個(gè)api來(lái)決定DataNode所屬的機(jī)柜id,當(dāng)文件系統(tǒng)啟動(dòng)的時(shí)候,DataNode就把自己所屬的機(jī)柜id發(fā)給目錄機(jī),然后目錄機(jī)管理這些分組。HDFS默認(rèn)是每個(gè)DataNode都是在不同的機(jī)柜上面,這種方法沒(méi)有做任何性能優(yōu)化,但是也有不少優(yōu)點(diǎn):1、數(shù)據(jù)可靠性是最高的。因?yàn)檫@樣可以防止機(jī)柜出錯(cuò)的時(shí)候數(shù)據(jù)丟失。2、在讀取數(shù)據(jù)的時(shí)候充分利用不同機(jī)柜之間的帶寬。3、而且這個(gè)策略可以很容易的完成負(fù)載平衡和錯(cuò)誤處理。缺點(diǎn)就是寫(xiě)入數(shù)據(jù)的時(shí)候并不能完全利用同一機(jī)柜里面機(jī)器的帶寬。在默認(rèn)的配置下,HDFS的冗余復(fù)制因子是3,意思就是每一塊文件數(shù)據(jù)一共有3個(gè)地方存放,hadoop目前的存放策略是其中兩份放在同一個(gè)rackid的不同機(jī)器上面,另外一個(gè)放在不同rackid的機(jī)器上面,簡(jiǎn)單來(lái)說(shuō)就是1/3的冗余數(shù)據(jù)在一個(gè)機(jī)柜里面,2/3的冗余數(shù)據(jù)在另外一個(gè)機(jī)柜里面,這樣既可以防止機(jī)柜異常時(shí)候的數(shù)據(jù)恢復(fù),又可以提高讀寫(xiě)性能。上面所說(shuō)的策略目前還是在測(cè)試優(yōu)化階段。數(shù)據(jù)讀取數(shù)據(jù)讀取策略,根據(jù)前面所說(shuō)的數(shù)據(jù)存放策略,數(shù)據(jù)讀取的時(shí)候,客戶端也有api確定自己的機(jī)柜id,讀取的時(shí)候,如果有塊數(shù)據(jù)和客戶端的機(jī)柜id一樣,就優(yōu)先選擇該數(shù)據(jù)節(jié)點(diǎn),客戶端直接和數(shù)據(jù)節(jié)點(diǎn)建立連接,讀取數(shù)據(jù)。如果沒(méi)有,就隨機(jī)選取一個(gè)數(shù)據(jù)節(jié)點(diǎn)。數(shù)據(jù)復(fù)制主要是在數(shù)據(jù)寫(xiě)入和數(shù)據(jù)恢復(fù)的時(shí)候發(fā)生,數(shù)據(jù)復(fù)制是使用流水線復(fù)制的策略。當(dāng)客戶端要在hdfs上面寫(xiě)一個(gè)文件,首先它先把這個(gè)文件寫(xiě)在本地,然后對(duì)文件進(jìn)行分塊,默認(rèn)64m一塊,每塊數(shù)據(jù)都對(duì)HDFSNameNode請(qǐng)求,NameNode選擇一個(gè)DataNode列表,返回給客戶端,然后客戶端就把數(shù)據(jù)寫(xiě)入第一臺(tái)DataNode,并且把列表傳給DataNode,當(dāng)DataNode接收至ij4k數(shù)據(jù)的時(shí)候,寫(xiě)入本地并且發(fā)起連接到下一臺(tái)DataNode,把這個(gè)4k傳過(guò)去,形成一條流水線。當(dāng)最后文件寫(xiě)完的時(shí)候,數(shù)據(jù)復(fù)制也同時(shí)完成,這個(gè)就是流水線處理的優(yōu)勢(shì)。通訊協(xié)議HDFS的通訊協(xié)議基本是在tcp/ip的基礎(chǔ)上開(kāi)發(fā)的,客戶端使用ClientProtocol和NameNode通訊,DataNode使用DatanodeProtocol和NameNode通訊,而NameNode一般只是應(yīng)答客戶端和DataNode的請(qǐng)求,不會(huì)主動(dòng)發(fā)起通訊。數(shù)據(jù)錯(cuò)誤和異常HDFS的主要目標(biāo)就是在硬件出錯(cuò)的時(shí)候保證數(shù)據(jù)的完整性,它把磁盤(pán)錯(cuò)誤作為肯定會(huì)出現(xiàn)的情況來(lái)對(duì)待,而不是異常。一般數(shù)據(jù)存儲(chǔ)中出現(xiàn)的錯(cuò)誤有幾種,分別是NameNode錯(cuò)誤,DataNode錯(cuò)誤,和網(wǎng)絡(luò)傳輸異常。1、DataNode出錯(cuò),每個(gè)DataNode會(huì)定時(shí)發(fā)送一個(gè)心跳信息給NameNode,表明自己仍然存活,網(wǎng)絡(luò)異常可能會(huì)導(dǎo)致一部分DataNode無(wú)法和NameNode通訊,這時(shí)候NameNode收不到心跳信息,就認(rèn)為這個(gè)DataNode已經(jīng)死機(jī),從有效io列表中清除,而該DataNode上面的所有數(shù)據(jù)塊也會(huì)標(biāo)記為不可讀。這個(gè)時(shí)候某些數(shù)據(jù)塊的冗余份數(shù)有可能就低于它的冗余因子了,NameNode會(huì)定期檢查每一個(gè)數(shù)據(jù)塊,看看它是否需要進(jìn)行數(shù)據(jù)冗余復(fù)制。2、出現(xiàn)數(shù)據(jù)異常,由于網(wǎng)絡(luò)傳輸和磁盤(pán)出錯(cuò)的原因,從DataNode讀取的數(shù)據(jù)有可能出現(xiàn)異常,客戶端實(shí)現(xiàn)對(duì)數(shù)據(jù)塊的校驗(yàn),用md5和shal進(jìn)行校驗(yàn),客戶端在創(chuàng)建文件的時(shí)候,會(huì)對(duì)每一個(gè)文件塊進(jìn)行信息摘錄,并把這些信息寫(xiě)入到同一個(gè)路徑的隱藏文件里面。當(dāng)客戶端讀取文件的時(shí)候,會(huì)先讀取該信息文件,然后對(duì)每個(gè)讀取的數(shù)據(jù)塊進(jìn)行校驗(yàn),如果校驗(yàn)出錯(cuò),客戶端就會(huì)請(qǐng)求到另外一個(gè)DataNode讀取該文件塊,并且報(bào)告給NameNode這個(gè)文件塊有錯(cuò)誤,NameNode就會(huì)定期檢查,并且重新復(fù)制這個(gè)塊。3、NameNode出錯(cuò),F(xiàn)sImage和Editlog是NameNode上面兩個(gè)最核心的數(shù)據(jù)結(jié)構(gòu),如果其中一個(gè)文件出錯(cuò)的話,會(huì)造成NameNode不起作用,由于這兩個(gè)文件如此重要,所以NameNode上面可以設(shè)置多個(gè)備份文件和輔助服務(wù)器,當(dāng)這兩個(gè)文件有改變的時(shí)候,NameNode就會(huì)發(fā)起同步操作,雖然這樣增加了系統(tǒng)的負(fù)擔(dān),但是在目前這個(gè)架構(gòu)上面為了實(shí)現(xiàn)數(shù)據(jù)的可靠性,這個(gè)同步操作是非常必要的。4.7、HDFS尚未實(shí)現(xiàn)的功能總結(jié)1、文件追加寫(xiě)入,這個(gè)功能近期內(nèi)不會(huì)實(shí)現(xiàn),沒(méi)有這個(gè)功能會(huì)引起當(dāng)文件尚未關(guān)閉的時(shí)候,數(shù)據(jù)服務(wù)器死機(jī)或者NameNode死機(jī),會(huì)引起文件文件丟失,并且不可后續(xù)恢復(fù)寫(xiě)入。2、系統(tǒng)快照,一個(gè)全系統(tǒng)的快照功能,如果沒(méi)有這個(gè)功能就不能實(shí)現(xiàn)文件系統(tǒng)的回滾操作。3、集群負(fù)載均衡,均衡策略暫時(shí)沒(méi)有實(shí)現(xiàn),有幾個(gè)策略十分有用,比如在某臺(tái)DataNode可能磁盤(pán)過(guò)低的時(shí)候,把該DataNode上面的一些數(shù)據(jù)轉(zhuǎn)移到還有很多空間剩余的DataNode上;當(dāng)某個(gè)文件突然被大量讀寫(xiě)的時(shí)候,動(dòng)態(tài)增加該文件的冗余因子,并且數(shù)[在此處鍵入]據(jù)塊復(fù)制到更多的DataNode上面,以提高讀取性能。4、文件系統(tǒng)的用戶權(quán)限,這個(gè)也是近期內(nèi)不會(huì)實(shí)現(xiàn)的了。5、訪問(wèn)權(quán)限,現(xiàn)在是無(wú)限制訪問(wèn)的,沒(méi)有訪問(wèn)權(quán)限控制。五、MapReduce、hive和pigMapReduceMapReduce是一種用于數(shù)據(jù)處理的編程模型,適合于大規(guī)模數(shù)據(jù)(TB級(jí))的計(jì)算。Map和Reduce是它的主要思想,來(lái)源于函數(shù)式編程語(yǔ)言,它的原理如下圖所示:Map負(fù)責(zé)將數(shù)據(jù)打散,Reduce負(fù)責(zé)對(duì)數(shù)據(jù)進(jìn)行聚集,用戶只需要實(shí)map和reduce兩個(gè)接口,即可完成TB級(jí)數(shù)據(jù)的計(jì)算,常見(jiàn)的應(yīng)用包括:日志分析和數(shù)據(jù)挖掘等數(shù)據(jù)分析應(yīng)用。另外,還可用于科學(xué)數(shù)據(jù)計(jì)算,如圓周率PI的計(jì)算等。HadoopMapReduce的實(shí)現(xiàn)也采用了Master/Slave結(jié)構(gòu)。Master叫做JobTracker,而Slave叫做TaskTracker。用戶提交的計(jì)算叫做Job,每一個(gè)Job會(huì)被劃分成若干個(gè)Tasks。JobTracker負(fù)責(zé)Job和Tasks的調(diào)度,而TaskTracker負(fù)責(zé)執(zhí)行Tasks。HiveHive是一個(gè)分布式數(shù)據(jù)倉(cāng)庫(kù),可以管理HDFS中存儲(chǔ)的數(shù)據(jù),并提供基于SQL的查詢語(yǔ)言(由運(yùn)行時(shí)引擎翻譯成MapReduce作業(yè))用以查詢數(shù)據(jù)。Hive的體系結(jié)構(gòu)如下圖所示:用戶接口用戶接口主要有三個(gè):CLI,Client和亞5。其中最常用的是CLI,Cli啟動(dòng)的時(shí)候,會(huì)同時(shí)啟動(dòng)一個(gè)Hive副本。Client是Hive的客戶端,用戶連接至HiveServer。在啟動(dòng)Client模式的時(shí)候,需要指出HiveServer所在節(jié)點(diǎn),并且在該節(jié)點(diǎn)啟動(dòng)HiveServer。WUI是通過(guò)瀏覽器訪問(wèn)Hive。>元數(shù)據(jù)存儲(chǔ)Hive的元數(shù)據(jù)存儲(chǔ),通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)如mysql,derby中。Hive中的元數(shù)據(jù)包括表的名字,表的列和分區(qū)及其屬性,表的屬性(是否為外部表等),表的數(shù)據(jù)所在目錄等。解釋器、編譯器、優(yōu)化器、執(zhí)行器解釋器、編譯器、優(yōu)化器完成HQL查詢語(yǔ)句從詞法分析、語(yǔ)法分析、編譯、優(yōu)化以及查詢計(jì)劃的生成。生成的查詢計(jì)劃存儲(chǔ)在HDFS中,并在隨后有MapReduce調(diào)用執(zhí)行。數(shù)據(jù)存儲(chǔ)首先,Hive沒(méi)有專門(mén)的數(shù)據(jù)存儲(chǔ)格式,也沒(méi)有為數(shù)據(jù)建立索引,用戶可以非常自由的組織Hive中的表,只需要在創(chuàng)建表的時(shí)候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,Hive就可以解析數(shù)據(jù)。其次,Hive中所有的數(shù)據(jù)都存儲(chǔ)在HDFS中,Hive中包含以下數(shù)據(jù)模型:Table,ExternalTable,Partition,Bucket。HadoopHive構(gòu)建在Hadoop平臺(tái)之上,利用HDFS進(jìn)行存儲(chǔ),利用MapReduce進(jìn)行計(jì)算。PigPig是這樣一個(gè)平臺(tái),它能夠?qū)τ筛呒?jí)語(yǔ)言編寫(xiě)的數(shù)據(jù)分析程序組成的大型數(shù)據(jù)集進(jìn)行分析、評(píng)估。Pig程序最突出的優(yōu)勢(shì)是它的結(jié)構(gòu)能夠經(jīng)受得住高度并行化的檢驗(yàn),這個(gè)特性讓它能夠處理大型的數(shù)據(jù)集。Pig的底層由一個(gè)編譯器組成,它在運(yùn)行的時(shí)候會(huì)產(chǎn)生一些Map-Reduce程序序列,并且這里大規(guī)模的并行執(zhí)行依然存在,Pig的語(yǔ)言層是由一叫做PigLatin的正文型語(yǔ)言組成,它有如下的特點(diǎn):易于編程:對(duì)于那些簡(jiǎn)單的并且不易并行的數(shù)據(jù)分析任務(wù)達(dá)并不需要實(shí)現(xiàn)并行執(zhí)行的目標(biāo)。多重關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)換任務(wù)需要明確地被編碼成數(shù)據(jù)流序列,讓他們易于被書(shū)寫(xiě)、理解和掌握。最優(yōu)化機(jī)會(huì):任務(wù)被編碼的方式允許系統(tǒng)執(zhí)行的時(shí)候進(jìn)行自動(dòng)地優(yōu)化,這就是說(shuō),用戶更需要注意的是程序語(yǔ)義的設(shè)計(jì)而不是效率。擴(kuò)展性:用戶能自定義函數(shù)來(lái)實(shí)現(xiàn)特殊的目的。Mapreduce、hive和pig對(duì)比分析在海量數(shù)據(jù)分析場(chǎng)景中面臨著hadoop(mapreduce)、hive和pig技術(shù)的選擇問(wèn)題。hive和pig是基于hadoopmapreduce之上的高級(jí)語(yǔ)言,相對(duì)于直接編寫(xiě)和調(diào)試mapreduce程序hive和pig在開(kāi)發(fā)門(mén)檻和開(kāi)發(fā)效率方面更有優(yōu)勢(shì),除了需要關(guān)注開(kāi)發(fā)方面的問(wèn)題,程序運(yùn)行的效率也是應(yīng)該重點(diǎn)關(guān)注的。下面引用facebook工程師對(duì)三者的測(cè)試結(jié)果和官方對(duì)hive和pig的對(duì)比來(lái)比較hadoop、hive和pig在數(shù)據(jù)分析場(chǎng)景中各自的優(yōu)勢(shì),以供我們?cè)诩夹g(shù)選型時(shí)參考。hadoop、hive和pig的性能測(cè)試>軟件版本Hadoop:version0.18.32PIG:trunkversion786346Hive:trunkversion7863463>Hadoop集群配置采用11臺(tái)服務(wù)器搭建hadoop驗(yàn)證環(huán)境,其中1臺(tái)服務(wù)器用作Namenode和jobtracker,其他10臺(tái)服務(wù)器都用作Datanode和tasktrackers,服務(wù)器的配置信息如下:CPU2Dual-CoreAMDOpteron(tm)280Processors,2.4GHz,cache1MBMemory8GBDisk4harddrives,total1.6TEthernet1GbpsLinux2.6.12-1.1398_FC4smpLzolib2.02>測(cè)試數(shù)據(jù)數(shù)據(jù)格式記錄數(shù)存儲(chǔ)空間
grep(keyVARCHAR(10),fieldVARCHAR(90))2columns500millionrows50GBrankings(pageRank INT, pageURLVARCHAR(100),avgDurationINT).3columns56.3millionrows3.3GBuservisits(sourceIPVARCHAR(16),destURLVARCHAR(100),visitDateDATE,adRevenueFLOAT,userAgentVARCHAR(64),countryCodeVARCHAR(3),languageCodeVARCHAR(6),searchWordVARCHAR(32),durationINT).9columns465millionrows60GB(scaleddownfrom200GB)測(cè)試場(chǎng)景場(chǎng)景名稱查詢語(yǔ)句Selectquery1SELECT*FROMgrepWHEREfieldlike'%XYZ%’;Selectquery2SELECTpageRank,pageURLFROMrankingsWHEREpageRank>10;
AggregationquerySELECTsourcelP,SUM(adRevenue)FROMuservisitsGROUPBYsourceIP;AggregationquerySELECTsourceIP,SUM(adRevenue)FROMuservisitsGROUPBYsourceIP;JoinquerySELECTINTOTempsourceIP,AVG(pageRank)asavgPageRank,SUM(adRevenue)astotalRevenueFROMrankingsASR,userVisitsASUVWHERER.pageURL=UV.destURLANDUV.visitDateBETWEENDate('1999-01-01')ANDDate('2000-01-01')GROUPBYUV.sourceIP;SELECTsourceIP,totalRevenue,avgPageRankFROMTempORDERBYtotalRevenueDESCLIMIT1;測(cè)試結(jié)果
結(jié)論從測(cè)試結(jié)果看4個(gè)場(chǎng)景中pig的效率最低,queryl和joinquery場(chǎng)景hive強(qiáng)于hadoop不過(guò)優(yōu)勢(shì)不明顯,query2和aggregationquery場(chǎng)景hadoop比hive效率高了30%多。Hive和Pig對(duì)比Hive和pig都是基于hadoopmapreduce的高級(jí)語(yǔ)言框架,兩者分別提供了類似sql和腳本語(yǔ)言的編程接口。下面引用官網(wǎng)對(duì)hive和pig特性的全面對(duì)比來(lái)分析兩者的優(yōu)勢(shì)和適合場(chǎng)景,兩者的特性對(duì)比如下表:FeatureHivePigLanguageSQL-likePigLatinSchemas/TypesYes(explicit)Yes(implicit)PartitionsYesNo
Server Optional(Thrift)NoUserDefinedFunctions(UDF)Yes(Java)Yes(Java)CustomSerializer/DeserializerYesYesDFSDirectAccessYes(implicit)Yes(explicit)Join/Order/SortYesYesShellYesYesStreamingYesYesWebInterfaceYesNoJDBC/ODBCYes(limited)Nohive和pig都能很的完成同一個(gè)統(tǒng)計(jì)分析任務(wù),兩者都降低了開(kāi)發(fā)人員直接編寫(xiě)MapReduce程序的工作復(fù)雜性。其中hive提供了類sql的編程接口,更適合于數(shù)據(jù)庫(kù)程序開(kāi)發(fā)人員使用,而pig更適合于熟悉腳本開(kāi)發(fā)人員使用。在數(shù)據(jù)存儲(chǔ)和組件方面hive提供了數(shù)據(jù)分區(qū)存儲(chǔ)、webui和server組件,使系統(tǒng)在架構(gòu)和開(kāi)發(fā)方面更靈活。六、HBASEHBase是一個(gè)開(kāi)源的、分布式的、面向列的存儲(chǔ)系統(tǒng),該技術(shù)來(lái)源于Google論文“Bigtable:一個(gè)結(jié)構(gòu)化數(shù)據(jù)的分布式存儲(chǔ)系統(tǒng)"。就像Bigtable利用了Googl文件系統(tǒng)(FileSystem)所提供的分布式數(shù)據(jù)存儲(chǔ)一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBASE數(shù)據(jù)模型Hbase是一個(gè)類似Bigtable的分布式數(shù)據(jù)庫(kù),大部分特性和Bigtable一樣,是一個(gè)稀疏的,長(zhǎng)期存儲(chǔ)的{存在硬盤(pán)上},多維度的,排序的映射表。這張表的索引是行關(guān)鍵字,列關(guān)鍵字和時(shí)間戳。每個(gè)值是一個(gè)不解釋的字符數(shù)組,數(shù)據(jù)都是字符串,沒(méi)類型。用戶在表格中存儲(chǔ)數(shù)據(jù),每一行都有一個(gè)可排序的主鍵和任意多的列。由于是稀疏存儲(chǔ)的,所以同一張表里面的每一行數(shù)據(jù)都可以有截然不同的列。列名字的格式是"<family>:<label>",都是由字符串組成,每一張表有一個(gè)family集合,這個(gè)集合是固定不變的,相當(dāng)于表的結(jié)構(gòu),只能通過(guò)改變表結(jié)構(gòu)來(lái)改變。但是label值相對(duì)于每一行來(lái)說(shuō)都是可以改變的。Hbase把同一個(gè)family里面的數(shù)據(jù)存儲(chǔ)在同一個(gè)目錄底下,而Hbase的寫(xiě)操作是鎖行的,每一行都是一個(gè)原子元素,都可以加鎖。所有數(shù)據(jù)庫(kù)的更新都有一個(gè)時(shí)間戳標(biāo)記,每個(gè)更新都是一個(gè)新的版本,而hbase會(huì)保留一定數(shù)量的版本,這個(gè)值是可以設(shè)定的??蛻舳丝梢赃x擇獲取距離某個(gè)時(shí)間最近的版本,或者一次獲取所有版本。HBASE概念視圖一個(gè)表可以想象成一個(gè)大的映射關(guān)系,通過(guò)主鍵,或者主鍵+時(shí)間戳,可以定位一行數(shù)據(jù),由于是稀疏數(shù)據(jù),所以某些列可以是空白的,下面就是數(shù)據(jù)的概念視圖:RowKeyTimeStampColumn"contents:"Column"anchor:"Column"mime:""n.www"t9"anchor:""CNN"t8"anchor:my.look.ca""CNN.com"t6"<html>…”"text/html"t5"<html>…”
t3"<html>…”"cont&nts:""anehur:r“amjho『:my」L!oK.ca”n.wvA7ir*n.wvA7ir*—1i—iM'CNN"-011,:一Uh標(biāo)匕二上圖是一個(gè)存儲(chǔ)Web網(wǎng)頁(yè)的范例列表片斷。行名是一個(gè)反向URL{即n.www}。contents列族{原文用family,譯為族,詳見(jiàn)列族}存放網(wǎng)頁(yè)內(nèi)容,anchor列族存放引用該網(wǎng)頁(yè)的錨鏈接文本。CNN的主頁(yè)被SportsIllustrater{即所謂SI,CNN的王牌體育節(jié)目}和MY-look的主頁(yè)引用,因此該行包含了名叫“cnchor:”和“anchhor:my.look.ca”的列。每個(gè)錨鏈接只有一個(gè)版本{由時(shí)間戳標(biāo)識(shí),如t9,t8};而contents列則有三個(gè)版本,分別由時(shí)間戳t3,t5,和t6標(biāo)識(shí)。HBASE物理視圖雖然從概念視圖來(lái)看每個(gè)表格是由很多行組成,但是在物理存儲(chǔ)上面,它是按照列來(lái)保存的,這點(diǎn)在數(shù)據(jù)設(shè)計(jì)和程序開(kāi)發(fā)的時(shí)候必須牢記。上面的概念視圖在物理存儲(chǔ)的時(shí)候應(yīng)該表現(xiàn)成下面那樣子:RowKeyTimeStampColumn"contents:""n.www"t6"<html>…”t5"<html>…”t3"<html>…”RowKeyTimeStampColumn"anchor:""n.www"t9"anchor:""CNN"t8"anchor:my.look.ca""CNN.com"RowKeyTimeStampColumn"mime:""n.www"t6"text/html"需要注意的是在概念視圖上面有些列是空白的,這樣的列實(shí)際上并不會(huì)被存儲(chǔ),當(dāng)請(qǐng)求這些空白的單元格的時(shí)候,會(huì)返回null值。如果在查詢的時(shí)候不提供時(shí)間戳,那么會(huì)返回距離現(xiàn)在最近的那一個(gè)版本的數(shù)據(jù)。因?yàn)樵诖鎯?chǔ)的時(shí)候,數(shù)據(jù)會(huì)按照時(shí)間戳排序。HBASE分布式體系結(jié)構(gòu)Hbase的服務(wù)器體系結(jié)構(gòu)也是遵從簡(jiǎn)單的主從服務(wù)器架構(gòu),由Hregion服務(wù)器群和HBaseMaster主服務(wù)器構(gòu)成。Hregion服務(wù)器對(duì)用戶來(lái)說(shuō),每個(gè)表是一堆數(shù)據(jù)的集合,靠主鍵來(lái)區(qū)分。物理上,一張表是被拆分成多塊,每一塊就稱呼為一個(gè)Hregion。用表名+開(kāi)始/結(jié)束主鍵,來(lái)區(qū)分一個(gè)Hregion,一個(gè)Hregion會(huì)保存一個(gè)表里面某段連續(xù)的數(shù)據(jù),從開(kāi)始主鍵到結(jié)束主鍵,一張完整的表格是保存在多個(gè)Hregion上面的。所有的數(shù)據(jù)庫(kù)數(shù)據(jù)一般是保存在HDFS上面,用戶通過(guò)一系列Hregion服務(wù)器獲取這些數(shù)據(jù),一般一臺(tái)機(jī)器上面運(yùn)行一個(gè)Hregion服務(wù)器,而每一個(gè)區(qū)段Hregion只會(huì)被一個(gè)Hregion服務(wù)器維護(hù)。>Hbase主服務(wù)器每個(gè)Hregion服務(wù)器都會(huì)和Hmaster服務(wù)器通訊,Hmaster的主要任務(wù)就是要告訴每個(gè)Hregion服務(wù)器它要維護(hù)哪些Hregion。Hmaster服務(wù)器會(huì)和每個(gè)Hregion服務(wù)器保持一個(gè)長(zhǎng)連接。Hbase和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)的對(duì)比分析Hbase是不同于關(guān)系數(shù)據(jù)庫(kù),它是一個(gè)稀疏的,分布的,持續(xù)多維度的排序映射數(shù)組。Hbase就是這樣一個(gè)基于列模式的映射數(shù)據(jù)庫(kù),它只能表示很簡(jiǎn)單的鍵-數(shù)據(jù)的映射關(guān)系,它大大簡(jiǎn)化了傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)。Hbase存在以下特點(diǎn):數(shù)據(jù)類型:Hbase只有簡(jiǎn)單的字符串類型,所有類型都是交由用戶自己處理,它只保存字符串。而關(guān)系數(shù)據(jù)庫(kù)有豐富的類型選擇和存儲(chǔ)方式。數(shù)據(jù)操作:Hbase操作只有很簡(jiǎn)單的插入、查詢、刪除、清空等,表和表之間是分離的,沒(méi)有復(fù)雜的表和表之間的關(guān)系,所以也不能也沒(méi)有必要實(shí)現(xiàn)表和表之間的關(guān)聯(lián)等操作。而傳統(tǒng)的關(guān)系數(shù)據(jù)通常有各種各樣的函數(shù)、連接操作。存儲(chǔ)模式:Hbase是基于列存儲(chǔ)的,每個(gè)列族都有幾個(gè)文件保存,不同列族的文件是分離的。傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)是基于表格結(jié)構(gòu)和行模式保存的。數(shù)據(jù)維護(hù):Hbase的更新正確來(lái)說(shuō)應(yīng)該不叫更新,而且一個(gè)主鍵或者列對(duì)應(yīng)的新的版本,而它舊有的版本仍然會(huì)保留,所以它實(shí)際上是插入了新的數(shù)據(jù),而不是傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)里面的替換修改??缮炜s性:Hbase和Bigtable這類分布式數(shù)據(jù)庫(kù)就是直接為了這個(gè)目的開(kāi)發(fā)出來(lái)的,能夠輕易的增加或者減少(在硬件錯(cuò)誤的時(shí)候)硬件數(shù)量,而且對(duì)錯(cuò)誤的兼容性比較高。而傳統(tǒng)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司簽訂長(zhǎng)期合同范本
- 勞動(dòng)合同范本設(shè)計(jì)
- 白茶行業(yè)分析研究報(bào)告
- 廠房轉(zhuǎn)讓經(jīng)營(yíng)合同范本
- 原油廢料銷售合同范本
- 動(dòng)物藥品銷售合同范例
- 公司聘用員工合同范本
- 發(fā)廊轉(zhuǎn)讓協(xié)議合同范本
- 共同合作融資合同范本
- 合同養(yǎng)豬合同范本
- 運(yùn)用PDCA循環(huán)提高全麻患者體溫檢測(cè)率
- 工程施工人員安全教育培訓(xùn)【共55張課件】
- 《管理會(huì)計(jì)》說(shuō)課及試講
- 遺傳咨詢行業(yè)研究報(bào)告
- TCWAN 0112-2024 不銹鋼復(fù)合鋼板焊材匹配標(biāo)準(zhǔn)
- 新聞采訪與寫(xiě)作-馬工程-第二章
- (高清版)JTG 3363-2019 公路橋涵地基與基礎(chǔ)設(shè)計(jì)規(guī)范
- 周志華-機(jī)器學(xué)習(xí)-Chap01緒論-課件
- 中石油加油站管理標(biāo)準(zhǔn)規(guī)范管理部分
- 高中雷雨完整省公開(kāi)課金獎(jiǎng)全國(guó)賽課一等獎(jiǎng)微課獲獎(jiǎng)?wù)n件
- 《串珠》教案-2024鮮版
評(píng)論
0/150
提交評(píng)論