中国IDC圈1月13日报道,2015年,整个IT技术领域发生了许多深刻而又复杂的变化,InfoQ策划了“解读2015”年终技术盘点系列文章,希望能够给读者清晰地梳理出技术领域在这一年的发展变化,回顾过去,继续前行。
本文是大数据解读篇,在这篇文章里我们将回顾2015展望2016,看看过去的一年里广受关注的技术有哪些进展,了解下数据科学家这个职业的火热。 在关键技术进展部分我们在大数据生态圈众多技术中选取了Hadoop、Spark、Elasticsearch和Apache Kylin四个点,分别请了四位专家:Hulu的董西成、明略数据的梁堰波、 精硕科技 的卢亿雷、eBay的韩卿,来为大家解读2015里的进展。
回顾2015
1,关键技术进展:
Hadoop:
Hadoop作为大数据平台中最基础与重要的系统,在2015年提高稳定性的同时,发布了多个重要功能与特性,这使得Hadoop朝着多类型存储介质和异构集群的方向迈进了一大步。
HDFS
HDFS 之前是一个以磁盘单存储介质为主的分布式文件系统。但随着近几年新存储介质的兴起,支持多存储介质早就提上了日程。如今,HDFS 已经对多存储介质有了良好的支持,包括 Disk、Memory 和 SSD 等,对异构存储介质的支持,使得 HDFS 朝着异构混合存储方向发展。目前HDFS支持的存储介质如下:
ARCHIVE:高存储密度但耗电较少的存储介质,通常用来存储冷数据。
DISK:磁盘介质,这是HDFS最早支持的存储介质。
SSD:固态硬盘,是一种新型存储介质,目前被不少互联网公司使用。
RAM_DISK :数据被写入内存中,同时会往该存储介质中再(异步)写一份。
YARN
YARN作为一个分布式数据操作系统,主要作用是资源管理和资源调度。在过去一年,YARN新增了包括基于标签的调度、对长服务的支持、对 Docker 的支持等多项重大功能。
基于标签的调度,使得 YARN 能够更好地支持异构集群调度。它的基本思想是,通过打标签的方式为不同的节点赋予不同的属性,这样,一个大的Hadoop集群按照节点类型被分成了若干个逻辑上相互独立(可能交叉)的集群。这种集群跟物理上独立的集群很不一样,用户可以很容易地通过动态调整 label,实现不同类型节点数目的增减,这具有很好的灵活性。
对长服务的支持,使得YARN逐渐变为一个通用资源管理和调度系统。目前,YARN既支持像类似 MapReduce,Spark 的短作业,也支持类似 Web Service,MySQL 这样的长服务。 支持长服务是非常难的一件事情,YARN 需要解决以下问题:服务注册、日志滚动、ResourceManager HA、NodeManager HA(NM 重启过程中,不影响 Container)和 ApplicationMaster 永不停止,重启后接管之前的 Container。截止2.7.0版本,以上问题都已经得到了比较完整的解决。
对Docker的支持,使得YARN能够为上层应用提供更好的打包、隔离和运行方式。YARN通过引入一种新的ContainerExecutor,即DockerContainerExecutor,实现了对Docker的支持,但目前仍然是alpha版本,不建议在生产环境中使用。
HBase
在 2015 年,HBase 迎来了一个里程碑——HBase 1.0 release,这也代表着 HBase 走向了稳定。 HBase新增特性包括:更加清晰的接口定义,多 Region 副本以支持高可用读,Family 粒度的 Flush以及RPC 读写队列分离等。
spark:
2015年的Spark发展很快,JIRA数目和PR数目都突破了10000,contributors数目超过了1000,可以说是目前最火的开源大数据项目。这一年Spark发布了多个版本,每个版本都有一些亮点:
2014年12月,Spark 1.2发布引入ML pipeline作为机器学习的接口。
2015年3月,Spark 1.3发布引入了DataFrame作为Spark的一个核心组件。
2015年6月,Spark 1.4发布引入R语言作为Spark的接口。R语言接口在问世一个多月之后的调查中就有18%的用户使用。
2015年9月,Spark 1.5发布。Tungsten项目第一阶段的产出合并入DataFrame的执行后端,DataFrame的执行效率得到大幅提升。
2016年1月,Spark 1.6发布引入Dataset接口。
Spark目前支持四种语言的接口,除了上面提到的R语言的使用率以外,Python的使用率也有很大提升,从2014年的38%提升到2015年的58%;而Scala接口的使用率有所下降,从84%下降到71%。同时Spark的部署环境也有所变化,51%的部署在公有云上,48% 使用standalone方式部署,而在YARN上的只有40%了。可见Spark已经超越Hadoop,形成了自己的生态系统。而在形成Spark生态系统中起到关键作用的一个feature就是外部数据源支持,Spark可以接入各种数据源的数据,然后把数据导入Spark中进行计算、分析、挖掘和机器学习,然后可以把结果在写出到各种各样的数据源。到目前为止Spark已经支持非常多的外部数据源,像Parquet/JSON/CSV/JDBC/ORC/HBase/Cassandra/Mongodb等等。