Docker和hadoop的碰撞將決定誰才是救世主
Docker很熱,怎么形容?感覺開源除了spark技術(shù),就是docker了,甚至把Go語言也帶火了,把Go在TIOBE的排名從百名外帶入主流語言的行列。
Docker快成救世主了,這么牛逼的技術(shù),docker和hadoop碰撞出什么火花來呢,是不是得趕緊用上呢?
就不介紹具體什么是docker了,不是一門全新的技術(shù),是基于LXC的高級容器引擎,從linux內(nèi)核發(fā)展出來的輕量隔離技術(shù)。相比單純的隔離,核心是標準化了鏡像打包,部署和發(fā)布這個過程,相當于標準化了開發(fā)過程。就運行態(tài)來說,相比VM,核心優(yōu)勢就是輕量,劣勢也明顯,安全性不足,容易攻破。下圖是一個VM和容器的對比:
關(guān)于LXC,google的大規(guī)模集群管理工具borg號稱十年前就使用上了,使用場景就是大數(shù)據(jù)場景,而且批量/實時場景號稱都支持的很好,集群資源利用率也非常高,所以照這個說起來,大數(shù)據(jù)和docker淵源很深。
但是現(xiàn)實的情況是,docker在hadoop領(lǐng)域用的并不是很好。目前主流兩種用法:
第一種方法是用Docker來直接運行Hadoop。例如hortonworks,收購了一家叫SequenceIQ的公司,通過叫Cloudbreak的技術(shù),將Hortonworks Data Platform(HDP)打包成Docker鏡像,好處是可以在微軟Azure、亞馬遜AWS、谷歌云平臺等任何主流云平臺上啟動HDP。這種解決的是在多云平臺部署的問題。但是這個公司被收購之后也沒有更多的消息了。Github上的最后一次更新也在5個月之前。
這個至多只是解決開發(fā)環(huán)境的問題,hadoop很難在不同的環(huán)境下,不調(diào)優(yōu)而跑出一致的表現(xiàn),天生的使用場景受限,價值有限。
第二種方法是通過YARN來使用Docker容器進行應(yīng)用部署,yarn是支持docker的,具體可以看看:
http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/DockerContainerExecutor.html
yarn作為資源管理,由于其擴展能力,一直被壓縮在了大數(shù)據(jù)領(lǐng)域,如果為了任務(wù)級別更高資源利用,通過FAIR調(diào)度算法足于,更強的隔離反而限制了資源的彈性使用。
當前資源調(diào)度更火是k8s(google主推,號稱從borg發(fā)展而來)和mesos(伯克利大學(xué)主推)。瞄準的場景也更多的是應(yīng)用級別,yarn支持docker處在一個很尷尬的地步。
綜合來說,hadoop體系有自己的一套資源管理系統(tǒng),要解決的問題是多個服務(wù)器并行調(diào)度起來當一個服務(wù)器使用的問題。而docker技術(shù)本質(zhì)上和VM一樣,是將一個服務(wù)器拆成多份給更多的應(yīng)用使用。Docker和hadoop體系在云下物理機的場景非常有限,未來在云上替代VM解決彈性伸縮問題應(yīng)該有發(fā)展。
【本文為51CTO專欄作者“大數(shù)據(jù)和云計算”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號獲取聯(lián)系和授權(quán)】