之前我們提到大數(shù)據(jù)的時(shí)候就會(huì)提到Hadoop,Hadoop是大數(shù)據(jù)的基礎(chǔ)框架,是大數(shù)據(jù)技術(shù)的代表。提到HDFS、MapReduce、Yarn,提到HBase、Hive、TEZ等Hadoop生態(tài)圈中的一個(gè)又一個(gè)開源組件。但是最近好像有點(diǎn)不一樣了。
Hadoop三巨頭
曾經(jīng)的三巨頭之一MapR向加州就業(yè)發(fā)展局提交文件,稱如果找不到新的投資人,公司將裁員 122 人,并關(guān)閉位于硅谷的總部公司。這曾經(jīng)可是估值10億美元的Hadoop發(fā)行版廠商啊,說跪就要跪了,而另外兩巨頭則是抱團(tuán)取暖,當(dāng)然這也不能完全說明Hadoop面臨著一些問題。
2003年,依據(jù)Google發(fā)表的三篇論文將Google的三駕馬車從幕后搬到臺(tái)前,奠定了后面十幾年大數(shù)據(jù)的框架基礎(chǔ),形成了Hadoop生態(tài)圈的第一圈:分布式文件系統(tǒng)HDFS、分布式計(jì)算MapReduce、HBase NoSQL數(shù)據(jù)庫(BigTable)和Yarn資源調(diào)度服務(wù)。一時(shí)之間如日中天,Hadoop生態(tài)蓬勃發(fā)展,Hortonworks、Cloudera 和 MapR一直在進(jìn)行技術(shù)更新,開發(fā)了一款又一款的基于Hadoop的工具。Hive的出現(xiàn)實(shí)現(xiàn)了類SQL的支持,迅速占領(lǐng)了市場(chǎng),后面基于SQL On Hadoop的組件更是層出不窮,Presto、Impala、Drill、Spark、Tez、Sqoop等等。Hadoop的生態(tài)圈越來越大,后面興起的新型計(jì)算框架和查詢框架都圍繞著Hadoop進(jìn)行兼容,如Presto兼容Hive、Spark兼容HDFS存儲(chǔ)和Yarn調(diào)度,一切看起來都是美好的樣子。
但是,從之前的Hadoop是大數(shù)據(jù)的基礎(chǔ)框架到現(xiàn)在Hadoop已經(jīng)不能完全代表大數(shù)據(jù)了,Hadoop只是大數(shù)據(jù)技術(shù)領(lǐng)域的一個(gè)分支,而其他分支正在努力的演化為新的大數(shù)據(jù)實(shí)現(xiàn)方式。
大數(shù)據(jù)技術(shù)棧
大數(shù)據(jù)的技術(shù)棧我們通常認(rèn)為分為:資源調(diào)度層、分布式存儲(chǔ)層、統(tǒng)一計(jì)算引擎層和統(tǒng)一接口層。
資源調(diào)度層:為了更好的對(duì)資源進(jìn)行管理,解決上層應(yīng)用的問題,現(xiàn)在出現(xiàn)了很多新的技術(shù),很多企業(yè)都開始利用容器編排技術(shù)來代替YARN進(jìn)行資源管理。當(dāng)然,Hadoop3之后Yarn也支持調(diào)度Docker應(yīng)用了,算是Hadoop的一個(gè)改進(jìn)。
分布式存儲(chǔ)層:誠然HDFS是一個(gè)較為通用的存儲(chǔ)服務(wù),但是它原生的痛點(diǎn)就是不支持小文件存儲(chǔ),而且由于存儲(chǔ)特性無法實(shí)現(xiàn)高性能的隨機(jī)讀寫。
統(tǒng)一計(jì)算引擎:現(xiàn)在MapReduce已經(jīng)基本要被Spark和Flink所取代了,美國站群服務(wù)器,當(dāng)然Spark和Flink也算Hadoop生態(tài)中的一員,但是不要忘了,當(dāng)Spark底層存儲(chǔ)基于S3,調(diào)度基于K8S就可以完全拋開Hadoop了。畢竟誰還不是一個(gè)通用性的產(chǎn)品呢~
統(tǒng)一接口層:通過統(tǒng)一的SQL接口層來降低大數(shù)據(jù)技術(shù)的使用門檻是我們的共識(shí),目前SQL on Hadoop技術(shù)也在蓬勃發(fā)展,SQL的支持度也在不斷的提升,但是如果不依賴HDFS存儲(chǔ)可就不見得SQL On Hadoop了。
上面說了這么多也不是在唱衰Hadoop,只是Hadoop目前看來確實(shí)好像遇到了瓶頸。但是Hadoop3也增加了大量的功能,Yarn支持Docker容器、支持TensorFlow的GPU調(diào)度,提供了對(duì)S3的支持。Hive的LLAP(低延時(shí)分析處理)、聯(lián)邦數(shù)據(jù)查詢和完全支持ACID事務(wù)也讓Hive朝著更好的方向發(fā)展。不得不說現(xiàn)在所有的技術(shù)都在朝著云原生的方向前進(jìn),如果不能成功上云,可能終將被遺忘。
云原生下開源的YuniKorn
而Hortonworks和Cloudera的合并可能是Hadoop發(fā)展的又一轉(zhuǎn)折點(diǎn),畢竟合并的戰(zhàn)略目標(biāo)是專注于云。就在昨天,19年7月17日,Cloudera 官方博客發(fā)文開源了一個(gè)幕后工作很久的大數(shù)據(jù)存儲(chǔ)和通用計(jì)算平臺(tái)交叉的新項(xiàng)目——YuniKorn。據(jù)介紹,YuniKorn 是一種輕量級(jí)的通用資源調(diào)度程序,適用于容器編排系統(tǒng),負(fù)責(zé)為大數(shù)據(jù)工作負(fù)載分配 / 管理資源,包括批處理作業(yè)和常駐運(yùn)行的服務(wù)。有興趣的可以關(guān)注一下Github地址:https://github.com/cloudera/yunikorn-core
YuniKorn[‘ju:nik?:n] 是一個(gè)虛構(gòu)的詞,“Y”代表 YARN,“K”代表 K8s,“Uni”代表統(tǒng)一,其發(fā)音與“Unicorn”相同。創(chuàng)建它是為了最初支持這兩個(gè)系統(tǒng),美國站群服務(wù)器,但最終目的是創(chuàng)建一個(gè)可以支持任何容器協(xié)調(diào)器系統(tǒng)的統(tǒng)一調(diào)度程序。一方面在大規(guī)模,多租戶環(huán)境中有效地實(shí)現(xiàn)各種工作負(fù)載的細(xì)粒度資源共享,另一方面可以動(dòng)態(tài)地創(chuàng)建云原生環(huán)境。YuniKorn 為混合工作負(fù)載提供統(tǒng)一的跨平臺(tái)調(diào)度體驗(yàn),包括無狀態(tài)批處理工作負(fù)載和狀態(tài)服務(wù),支持但不限于 YARN 和 Kubernetes。
YuniKorn 的主要模塊
YuniKorn -scheduler-interface:調(diào)度程序接口是資源管理平臺(tái)(如 YARN / K8s)將通過諸如 GRPC / 編程語言綁定之類的 API 與之交談的抽象層。