Hadoop于2006年1月28日誕生,至今已有10年,它改變了企業(yè)對(duì)數(shù)據(jù)的存儲(chǔ)、處理和分析的過(guò)程,加速了大數(shù)據(jù)的發(fā)展,形成了自己的極其火爆的技術(shù)生態(tài)圈,并受到非常廣泛的應(yīng)用。在2016年Hadoop十歲生日之際,InfoQ策劃了一個(gè)Hadoop熱點(diǎn)系列文章,為大家梳理Hadoop這十年的變化,技術(shù)圈的生態(tài)狀況,回顧以前,激勵(lì)當(dāng)下。本文是InfoQ處于一線開(kāi)發(fā)的社區(qū)編輯對(duì)盧億雷老師進(jìn)行的采訪,對(duì)大家關(guān)心的問(wèn)題進(jìn)行了專(zhuān)業(yè)的解答。
InfoQ:Hadoop會(huì)考慮內(nèi)存或磁盤(pán)動(dòng)態(tài)管理技術(shù)嗎?
盧億雷:隨著實(shí)時(shí)計(jì)算的發(fā)展,Hadoop會(huì)考慮內(nèi)存管理技術(shù)的。動(dòng)態(tài)管理的目的一個(gè)是資源自動(dòng)發(fā)現(xiàn),一個(gè)是系統(tǒng)的效率。從資源自動(dòng)發(fā)現(xiàn)來(lái)看,比如新的Hadoop版本已經(jīng)支持根據(jù)機(jī)器內(nèi)存大小的不同,自動(dòng)計(jì)算可以使用的內(nèi)存量;從系統(tǒng)效率角度來(lái)講,比如新的Hadoop已經(jīng)支持對(duì)內(nèi)存/ssd/硬盤(pán)的分級(jí)存儲(chǔ)管理,可以更高效地使用存儲(chǔ)。
InfoQ:基于Hadoop實(shí)現(xiàn)的設(shè)計(jì)本身,它能做到的最好性能是什么?以及哪些瓶頸是設(shè)計(jì)本身造成的,不可改變的?
盧億雷:基于Hadoop架構(gòu)設(shè)計(jì)本身,它能做到最好的性能是大批量數(shù)據(jù)離線統(tǒng)計(jì),對(duì)于多次迭代計(jì)算等是它現(xiàn)在設(shè)計(jì)本身的瓶頸。但是隨著YARN的發(fā)展,Hadoop的計(jì)算層變得越來(lái)越像一個(gè)純粹的計(jì)算資源管理系統(tǒng),Spark/Storm/Flink等多種計(jì)算模型都可以在YARN上來(lái)執(zhí)行,極大豐富了Hadoop支持的計(jì)算,可以說(shuō),Hadoop已經(jīng)變得更像一個(gè)大數(shù)據(jù)的框架,相信它的性能也會(huì)越來(lái)越好。
InfoQ:Hadoop能否在底層就實(shí)現(xiàn)基于廣義shema的存儲(chǔ)結(jié)構(gòu),而不是現(xiàn)在的block,這樣會(huì)不會(huì)性能更好?
盧億雷:Hadoop原來(lái)設(shè)計(jì)主要是基于文本存儲(chǔ),后續(xù)也進(jìn)行了改進(jìn),可以設(shè)計(jì)特定的Schema存儲(chǔ)結(jié)構(gòu)來(lái)提高性能,如Hive中使用的RCFile,就是按需取字段,這樣大大減少磁盤(pán)和網(wǎng)絡(luò)IO,可以提高性能。另一方面,Hadoop底層存儲(chǔ)是高度抽象的,具體的存儲(chǔ)結(jié)構(gòu)甚至可以由用戶(hù)來(lái)自定義,比如現(xiàn)在就有用AWS做底層存儲(chǔ)的模塊,還有用阿里云做底層存儲(chǔ)的模塊,用戶(hù)可以根據(jù)自己的需求來(lái)優(yōu)化相應(yīng)的存儲(chǔ)結(jié)構(gòu)。
InfoQ:Hadoop越來(lái)越跟隨著spark的方向在開(kāi)發(fā),那是不是spark新功能的出現(xiàn)會(huì)比較大的影響到Hadoop的發(fā)展?
盧億雷:之前談到,Hadoop的YARN已經(jīng)可以支持多種計(jì)算模型,Spark就可以在YARN上來(lái)執(zhí)行。從這個(gè)層面來(lái)講,Spark新功能的出現(xiàn),會(huì)讓Hadoop使用者更多地受益,YARN的優(yōu)化也會(huì)更好地支持Spark的新功能。另一方面,在大數(shù)據(jù)量的存儲(chǔ)方面,Hadoop的HDFS基本上就是大數(shù)據(jù)事實(shí)上的存儲(chǔ)標(biāo)準(zhǔn),Spark的大數(shù)據(jù)輸入/輸出也是基于HDFS的。
InfoQ:Hadoop代碼越來(lái)越大,學(xué)起來(lái)成本更大,怎樣才能更優(yōu)雅的掌握?
盧億雷:廣義的Hadoop指Hadoop家族,包括HDFS/MapReduce/YARN/HBase/Zookeeper等等組件,狹義的Hadoop單單指HDFS/MapReduce/YARN,建議先從這些組件學(xué)起。
首先需要學(xué)習(xí)和理解分布式存儲(chǔ)和分布式計(jì)算的原理,可以參考Google的相關(guān)論文,然后自己手動(dòng)搭建一個(gè)Hadoop平臺(tái),測(cè)試各種組件,學(xué)習(xí)寫(xiě)MapReduce程序,之后可以學(xué)習(xí)使用HBase的搭建和基本使用。對(duì)這些都有一個(gè)基本概念之后,可以先編程使用這些組件,看可以解決自己的什么實(shí)際問(wèn)題。最后,學(xué)習(xí)最好的資源就是Hadoop的社區(qū)和源碼,是大數(shù)據(jù)學(xué)習(xí)的不二選擇。如果有條件的話(huà),在一個(gè)大數(shù)據(jù)公司工作,實(shí)際使用它們,會(huì)學(xué)習(xí)更快的。
InfoQ:Hadoop解決異構(gòu)存儲(chǔ)介質(zhì)上的功能現(xiàn)在有生產(chǎn)環(huán)境可以用嗎?或者對(duì)應(yīng)性能測(cè)試怎么樣?
盧億雷:Hadoop解決異構(gòu)存儲(chǔ)介質(zhì)上的功能主要支持普通硬盤(pán)、SSD、內(nèi)存這三個(gè)存儲(chǔ)介質(zhì),且在Hadoop2.6以后重點(diǎn)實(shí)現(xiàn)了,管理員可以在一個(gè)限定的Datanode跨磁盤(pán)存儲(chǔ)層,以及應(yīng)用程序可利用的API將數(shù)據(jù)存儲(chǔ)到這些不同的存儲(chǔ)層。這意味著管理員可以?xún)?yōu)化他們的應(yīng)用程序通過(guò)使用Hadoop運(yùn)行:在SSD存儲(chǔ)層以提高讀/寫(xiě)延遲;內(nèi)存存儲(chǔ)層進(jìn)行快速讀/寫(xiě);普通硬盤(pán)可以進(jìn)行歸檔存儲(chǔ)層,以提高存儲(chǔ)效率。所以可以在生產(chǎn)環(huán)境上使用的,前提是需要有同學(xué)對(duì)這塊了解才可以。具體的測(cè)試性能需要看對(duì)應(yīng)的應(yīng)用場(chǎng)景,如果搭配的好,性能提升是比較顯現(xiàn),但是也需要注意的是如果內(nèi)部數(shù)據(jù)交換比較多或者帶寬有限制,從而導(dǎo)致文件IO不是瓶頸,帶寬才是瓶頸,則性能基本不會(huì)有提升。總的來(lái)說(shuō)如果業(yè)務(wù)沒(méi)有特別的要求,其實(shí)也不用Hadoop的異構(gòu)存儲(chǔ)的功能。
InfoQ:Hadoop有從底層來(lái)設(shè)計(jì)支持DAG優(yōu)化(比如現(xiàn)在有的Tez,F(xiàn)link)mapreduce嗎?
盧億雷:目前沒(méi)有,如果要從底層支持DAG優(yōu)化,那就是重寫(xiě)Hadoop架構(gòu)了。其實(shí)現(xiàn)在的YARN已經(jīng)把計(jì)算的管理獨(dú)立了出來(lái),完全可以在YARN上玩出計(jì)算的各種花樣。現(xiàn)有的Tez、Flink等都是基于Hadoop之上來(lái)實(shí)現(xiàn)DAG優(yōu)化的。大家都知道ApacheTez是基于HadoopYarn之上的DAG(有向無(wú)環(huán)圖,DirectedAcyclicGraph)計(jì)算框架。它把Map/Reduce過(guò)程拆分成若干個(gè)子過(guò)程,同時(shí)可以把多個(gè)Map/Reduce任務(wù)組合成一個(gè)較大的DAG任務(wù),減少了Map/Reduce之間的文件存儲(chǔ)。同時(shí)合理組合其子過(guò)程,減少任務(wù)的運(yùn)行時(shí)間,由Hortonworks開(kāi)發(fā)并提供主要支持;而Flink是一個(gè)開(kāi)源的針對(duì)批量數(shù)據(jù)和流數(shù)據(jù)的處理引擎,且支持DAG的運(yùn)算。像Tez、Flink等都可以直接運(yùn)行在YARN上,所以對(duì)于Hadoop來(lái)也不是必須一定要在底層上支持DAG的優(yōu)化,這樣分層后也有利于各自的發(fā)展。
InfoQ:集群在上百臺(tái)機(jī)器的規(guī)模,增加(移出)十來(lái)臺(tái)機(jī)器時(shí)怎么遷移其上的數(shù)據(jù)?
盧億雷:通過(guò)rebalance來(lái)實(shí)現(xiàn),前提是帶寬需要做控制。一般大規(guī)模的集群都會(huì)有一個(gè)rebalance在持續(xù)運(yùn)行的。如Hadoop的rebalance是一個(gè)非自動(dòng)的管理功能,換句話(huà)說(shuō),它是由人工啟動(dòng)的。在任意一臺(tái)能夠連接到HDFS的機(jī)器上命令行下輸入hadoopbalancer[-threshold]即會(huì)啟動(dòng)。如果集群處于不平衡狀態(tài),這個(gè)過(guò)程就會(huì)在不平衡的節(jié)點(diǎn)之間遷移數(shù)據(jù),如果rebalance過(guò)程沒(méi)有被打斷的話(huà),完成此次rebalance目標(biāo)后過(guò)程會(huì)自動(dòng)停止。
受訪嘉賓:盧億雷,精碩科技(AdMaster)技術(shù)副總裁兼總架構(gòu)師,大數(shù)據(jù)資深專(zhuān)家,CCF(中國(guó)計(jì)算學(xué)會(huì))大數(shù)據(jù)專(zhuān)委委員,北航特聘教授。主要負(fù)責(zé)數(shù)據(jù)的采集、清洗、存儲(chǔ)、挖掘等整個(gè)數(shù)據(jù)流過(guò)程,確保提供高可靠、高可用、高擴(kuò)展、高性能系統(tǒng)服務(wù),提供Hadoop/HBase/Storm/Spark/ElasticSearch等離線、流式及實(shí)時(shí)分布式計(jì)算服務(wù)。對(duì)分布式存儲(chǔ)和分布式計(jì)算、超大集群、大數(shù)據(jù)分析等有深刻理解及實(shí)踐經(jīng)驗(yàn)。有超過(guò)10年云計(jì)算、云存儲(chǔ)、大數(shù)據(jù)經(jīng)驗(yàn)。曾在聯(lián)想、百度、Carbonite工作,并擁有多篇大數(shù)據(jù)相關(guān)的專(zhuān)利和論文。
核心關(guān)注:拓步ERP系統(tǒng)平臺(tái)是覆蓋了眾多的業(yè)務(wù)領(lǐng)域、行業(yè)應(yīng)用,蘊(yùn)涵了豐富的ERP管理思想,集成了ERP軟件業(yè)務(wù)管理理念,功能涉及供應(yīng)鏈、成本、制造、CRM、HR等眾多業(yè)務(wù)領(lǐng)域的管理,全面涵蓋了企業(yè)關(guān)注ERP管理系統(tǒng)的核心領(lǐng)域,是眾多中小企業(yè)信息化建設(shè)首選的ERP管理軟件信賴(lài)品牌。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.guhuozai8.cn/
本文標(biāo)題:談Hadoop生態(tài)的最新發(fā)展
本文網(wǎng)址:http://www.guhuozai8.cn/html/news/10515519202.html