当前位置 > CPDA数据分析师 > “数”业专攻 > 回顾2015:大数据技术的发展

回顾2015:大数据技术的发展

来源:数据分析师 CPDA | 时间:2016-01-12 | 作者:admin

112_130102113614_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等等。

上面这些调查数据来自美国,中国的情况有所区别,但是还是有一定的借鉴意义的。国内的Spark应用也越来越多:腾讯的Spark规模到了8000+节点,日处理数据1PB+。阿里巴巴运行着目前最长时间的Spark Job:1PB+数据规模的Spark Job长达1周的时间。百度的硅谷研究院也在探索Spark+Tachyon的应用场景。

Spark MLlib的ALS算法已经在很多互联网公司用于其推荐系统中。基本上主流的互联网公司都已经部署了Spark平台并运行了自己的业务。上面说的更多的互联网的应用,实际上Spark的应用场景有很多。在Databricks公司的调查中显示主要应用依次是:商务智能、数据仓库、推荐系统、日志处理、欺诈检测等。

除了互联网公司以外,传统IT企业也把Spark作为其产品的一个重要组成。IBM在今年6月的Spark summit期间宣布重点支持Spark这个开源项目,同时还开源了自己的机器学习系统SystemML并推进其与Spark的更好合作。美国大数据巨头Cloudera,Hortonworks和MapR都表示Spark是其大数据整体解决方案的核心产品。可以预见Spark是未来若干年最火的大数据项目。

在深度学习方面2015年可谓非常热闹,如Google开源其第二代机器学习系统TensorFlow,Facebook开源Torch和人工智能硬件服务器Big Sur等等。Spark社区也不甘落后,在1.5版本中发布了一个神经网络分类器MultiplayerPerceptronClassifier作为其深度学习的雏形。虽然这个模型还有很多地方需要优化,大家不妨尝试下,毕竟它是唯一一个基于通用计算引擎的分布式深度学习系统。

除了现在非常火的深度学习,在传统统计和机器学习领域,Spark这一年也有非常大的变化,包括GLM的全面支持,SparkR GLM的支持,A/B test,以及像WeightesLeastSquares这样的底层优化算法等。

具体内容可以看梁堰波在InfoQ上的年终回顾:《 解读2015之Spark篇:新生态系统的形成 》。

Elasticsearch:

Elasticsearch 是一个可伸缩的开源全文搜索和分析引擎。它可以快速地存储、搜索和分析海量数据。Elasticsearch 基于成熟的 Apache Lucene 构建,在设计时就是为大数据而生,能够轻松的进行大规模的横向扩展,以支撑PB级的结构化和非结构化海量数据的处理。Elasticsearch生态圈发展状态良好,整合了众多外围辅助系统,如监控Marvel,分析Logstash,安全Shield等。近年来不断发展受到广泛应用,如Github、StackOverflow、维基百科等,是数据库技术中倍受关注的一匹黑马。

Elasticsearch在今年下半年发布了2.0版本,性能提升不少,主要改变为:

Pipeline Aggregation

流式聚合,像管道一样,对聚合的结果进行再次聚合。原来client端需要做的计算工作,下推到ES,简化 client代码,更容易构建强大的查询。

Query/Filter 合并

取消filters,所有的filter语句自动转换为query语句。在上下文语义是query时,进行相关性计算;上下文语 义是filter时,简单排除b不匹配的doc,像现在的filter所做的一样。这个重构以为着所有的query执行会以最 有效的顺序自动优化。例如,子查询和地理查询会首先执行一个快速的模糊步骤,然后用一个稍慢的精确 步骤截断结果。在filter上下文中,cache有意义时,经常使用的语句会被自动缓存。

可配置的store compression

存储的field,例如_source字段,可以使用默认的LZ4算法快速压缩,或者使用DEFLATE算法减少index size。对于日志类的应用尤其有用,旧的索引库在优化前可以切换到best_compression。

Hardening

Elasticsearch运行于 Java Security Manager之下,在安全性上标志着一个巨大的飞跃。Elasticsearch难于探测,黑客在系统上 的影响也被严格限制。在索引方面也有加强: indexing请求ack前,doc会被fsync,默认写持久化 所有的文件都计算checksum,提前检测文件损坏 所有的文件rename操作都是原子的(atomic),避免部分写文件 对于系统管理员来讲,一个需求较多的变化是,可以避免一个未配置的node意外加入Elasticsearch集群网络:默认绑 定localhost only, multicast也被移除,鼓励使用unicast。

Performance and Resilience

除上所述,Elasticsearch和Lucene还有很多小的变化,使其更加稳定可靠,易于配置,例如:

默认doc value,带来更少的heap usage,filter caching 更多使用 bitsets type mappings 大清理,更安全可靠,无二义性 cluster stat 使用diff进行快速变化传播,带来更稳定的大规模集群

Core plugins

官方支持的core plugins同时发布,和Elasticsearch核心使用相同的版本号。

Marvel 2.0.0 free to use in production

Marvel免费。

Apache Kylin:

Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay Inc. 开发并贡献至开源社区。最初于2014年10月1日开源,并于同年11月加入Aapche孵化器项目,并在一年后的2015年11月顺利毕业成为Apache顶级项目,是eBay全球贡献至Apache软件基金会(ASF)的第一个项目,也是全部由在中国的华人团队整体贡献至Apache的第一个项目。

在eBay,已经上线两个生产环境平台,有着诸多的应用,包括用户行为分析、点击分析、商户分析、交易分析等应用,最新的Streaming分析项目也已经上线。目前在eBay平台上最大的单个cube包含了超过1000亿的数据,90%查询响应时间小于1.5秒,95%的查询响应时间小于5秒。同时Apache Kylin在eBay外部也有很多的用户,包括京东、美团、百度地图、网易、唯品会、Expedia、Expotional等很多国内外公司也已经在实际环境中使用起来,把Apache Kylin作为他们大数据分析的基础之一。

过去的一年多是Apache Kylin发展的重要的一年:

2014年10月1日,Kylin 代码在github.com上正式开源

2014年11月25日,正式加入Apache孵化器并正式启用Apache Kylin作为项目名称

2015年6月10日,Apache Kylin v0.7.1-incubating发布,这是加入Apache后的第一个版本,依据Apache的规范作了很多修改,特别是依赖包,license等方面,同时简化了安装,设置等,并同时提供二进制安装包

2015年9月6日,Apache Kylin v1.0-incubating正式发布,增强了SQL处理,提升了HBase coprocessor 的性能,同时提供了Zeppelin Interpreter等

2015年9月16日,Apache Kylin与Spark,Kafka,Storm,H2O,Flink,Elasticsearch,Mesos等一起荣获InfoWorld Bossie Awards 2015:最佳开源大数据工具奖,这是业界对Kylin的认可

2015年11月18日,Apache Kylin正式毕业成为Apache顶级项目

2015年12月15日,Apache Kylin v1.2正式发布,这是升级为顶级项目后的第一个版本,提供了对Excel,PowerBI,Tableau 9等的支持,对高基维度增强了支持,修复了多个关键Bug等

2016年,Apache Kylin将迎来重要的2.x版本,该版本对底层架构和设计作了重大重构,提供可插拔的设计及Lambda架构,同时提供对历史数据查询,Streaming及Realtime查询等,同时在性能,任务管理,UI等各个方面提供增强。

同时,过去一年也是社区发展的重要一年,在过去一年内发展了来自eBay,美团,京东,明略数据,网易等众多committer,社区每天的讨论也是非常热闹。社区提交了很多新特性和Bug修复,包括来自美团的不同HBase写入,来自京东的明细数据查询,来自网易的多Hive源等多个重大特性为Apache Kylin带来了巨大的增强。