中國(guó)IDC圈1月13日?qǐng)?bào)道,2015年,整個(gè)IT技術(shù)領(lǐng)域發(fā)生了許多深刻而又復(fù)雜的變化,InfoQ策劃了“解讀2015”年終技術(shù)盤(pán)點(diǎn)系列文章,希望能夠給讀者清晰地梳理出技術(shù)領(lǐng)域在這一年的發(fā)展變化,回顧過(guò)去,繼續(xù)前行。
本文是大數(shù)據(jù)解讀篇,在這篇文章里我們將回顧2015展望2016,看看過(guò)去的一年里廣受關(guān)注的技術(shù)有哪些進(jìn)展,了解下數(shù)據(jù)科學(xué)家這個(gè)職業(yè)的火熱。 在關(guān)鍵技術(shù)進(jìn)展部分我們?cè)诖髷?shù)據(jù)生態(tài)圈眾多技術(shù)中選取了Hadoop、Spark、Elasticsearch和Apache Kylin四個(gè)點(diǎn),分別請(qǐng)了四位專(zhuān)家:Hulu的董西成、明略數(shù)據(jù)的梁堰波、 精碩科技 的盧億雷、eBay的韓卿,來(lái)為大家解讀2015里的進(jìn)展。
回顧2015
1,關(guān)鍵技術(shù)進(jìn)展:
Hadoop:
Hadoop作為大數(shù)據(jù)平臺(tái)中最基礎(chǔ)與重要的系統(tǒng),在2015年提高穩(wěn)定性的同時(shí),發(fā)布了多個(gè)重要功能與特性,這使得Hadoop朝著多類(lèi)型存儲(chǔ)介質(zhì)和異構(gòu)集群的方向邁進(jìn)了一大步。
HDFS
HDFS 之前是一個(gè)以磁盤(pán)單存儲(chǔ)介質(zhì)為主的分布式文件系統(tǒng)。但隨著近幾年新存儲(chǔ)介質(zhì)的興起,支持多存儲(chǔ)介質(zhì)早就提上了日程。如今,HDFS 已經(jīng)對(duì)多存儲(chǔ)介質(zhì)有了良好的支持,包括 Disk、Memory 和 SSD 等,對(duì)異構(gòu)存儲(chǔ)介質(zhì)的支持,使得 HDFS 朝著異構(gòu)混合存儲(chǔ)方向發(fā)展。目前HDFS支持的存儲(chǔ)介質(zhì)如下:
ARCHIVE:高存儲(chǔ)密度但耗電較少的存儲(chǔ)介質(zhì),通常用來(lái)存儲(chǔ)冷數(shù)據(jù)。
DISK:磁盤(pán)介質(zhì),這是HDFS最早支持的存儲(chǔ)介質(zhì)。
SSD:固態(tài)硬盤(pán),是一種新型存儲(chǔ)介質(zhì),目前被不少互聯(lián)網(wǎng)公司使用。
RAM_DISK :數(shù)據(jù)被寫(xiě)入內(nèi)存中,同時(shí)會(huì)往該存儲(chǔ)介質(zhì)中再(異步)寫(xiě)一份。
YARN
YARN作為一個(gè)分布式數(shù)據(jù)操作系統(tǒng),主要作用是資源管理和資源調(diào)度。在過(guò)去一年,YARN新增了包括基于標(biāo)簽的調(diào)度、對(duì)長(zhǎng)服務(wù)的支持、對(duì) Docker 的支持等多項(xiàng)重大功能。
基于標(biāo)簽的調(diào)度,使得 YARN 能夠更好地支持異構(gòu)集群調(diào)度。它的基本思想是,通過(guò)打標(biāo)簽的方式為不同的節(jié)點(diǎn)賦予不同的屬性,這樣,一個(gè)大的Hadoop集群按照節(jié)點(diǎn)類(lèi)型被分成了若干個(gè)邏輯上相互獨(dú)立(可能交叉)的集群。這種集群跟物理上獨(dú)立的集群很不一樣,用戶(hù)可以很容易地通過(guò)動(dòng)態(tài)調(diào)整 label,實(shí)現(xiàn)不同類(lèi)型節(jié)點(diǎn)數(shù)目的增減,這具有很好的靈活性。
對(duì)長(zhǎng)服務(wù)的支持,使得YARN逐漸變?yōu)橐粋€(gè)通用資源管理和調(diào)度系統(tǒng)。目前,YARN既支持像類(lèi)似 MapReduce,Spark 的短作業(yè),也支持類(lèi)似 Web Service,MySQL 這樣的長(zhǎng)服務(wù)。 支持長(zhǎng)服務(wù)是非常難的一件事情,YARN 需要解決以下問(wèn)題:服務(wù)注冊(cè)、日志滾動(dòng)、ResourceManager HA、NodeManager HA(NM 重啟過(guò)程中,不影響 Container)和 ApplicationMaster 永不停止,重啟后接管之前的 Container。截止2.7.0版本,以上問(wèn)題都已經(jīng)得到了比較完整的解決。
對(duì)Docker的支持,使得YARN能夠?yàn)樯蠈討?yīng)用提供更好的打包、隔離和運(yùn)行方式。YARN通過(guò)引入一種新的ContainerExecutor,即DockerContainerExecutor,實(shí)現(xiàn)了對(duì)Docker的支持,但目前仍然是alpha版本,不建議在生產(chǎn)環(huán)境中使用。
HBase
在 2015 年,HBase 迎來(lái)了一個(gè)里程碑——HBase 1.0 release,這也代表著 HBase 走向了穩(wěn)定。 HBase新增特性包括:更加清晰的接口定義,多 Region 副本以支持高可用讀,F(xiàn)amily 粒度的 Flush以及RPC 讀寫(xiě)隊(duì)列分離等。
spark:
2015年的Spark發(fā)展很快,JIRA數(shù)目和PR數(shù)目都突破了10000,contributors數(shù)目超過(guò)了1000,可以說(shuō)是目前最火的開(kāi)源大數(shù)據(jù)項(xiàng)目。這一年Spark發(fā)布了多個(gè)版本,每個(gè)版本都有一些亮點(diǎn):
2014年12月,Spark 1.2發(fā)布引入ML pipeline作為機(jī)器學(xué)習(xí)的接口。
2015年3月,Spark 1.3發(fā)布引入了DataFrame作為Spark的一個(gè)核心組件。
2015年6月,Spark 1.4發(fā)布引入R語(yǔ)言作為Spark的接口。R語(yǔ)言接口在問(wèn)世一個(gè)多月之后的調(diào)查中就有18%的用戶(hù)使用。
2015年9月,Spark 1.5發(fā)布。Tungsten項(xiàng)目第一階段的產(chǎn)出合并入DataFrame的執(zhí)行后端,DataFrame的執(zhí)行效率得到大幅提升。
2016年1月,Spark 1.6發(fā)布引入Dataset接口。
Spark目前支持四種語(yǔ)言的接口,除了上面提到的R語(yǔ)言的使用率以外,Python的使用率也有很大提升,從2014年的38%提升到2015年的58%;而Scala接口的使用率有所下降,從84%下降到71%。同時(shí)Spark的部署環(huán)境也有所變化,51%的部署在公有云上,48% 使用standalone方式部署,而在YARN上的只有40%了。可見(jiàn)Spark已經(jīng)超越Hadoop,形成了自己的生態(tài)系統(tǒng)。而在形成Spark生態(tài)系統(tǒng)中起到關(guān)鍵作用的一個(gè)feature就是外部數(shù)據(jù)源支持,Spark可以接入各種數(shù)據(jù)源的數(shù)據(jù),然后把數(shù)據(jù)導(dǎo)入Spark中進(jìn)行計(jì)算、分析、挖掘和機(jī)器學(xué)習(xí),然后可以把結(jié)果在寫(xiě)出到各種各樣的數(shù)據(jù)源。到目前為止Spark已經(jīng)支持非常多的外部數(shù)據(jù)源,像Parquet/JSON/CSV/JDBC/ORC/HBase/Cassandra/Mongodb等等。