解读2015之大数据篇:大数据的黄金时代

上面这些调查数据来自美国,中国的情况有所区别,但是还是有一定的借鉴意义的。国内的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>社区合作

在开源后的一年时间内,Apache Kylin也和其他社区建立了良好的合作关系,Apache Calcite作为Kylin 的SQL引擎被深入的整合进来,我们也向Calcite提交了很多改进和修复,Calcite的作者,Julian Hyde也是Kylin的mentor。HBase是Kylin的存储层,在实际运维中,我们碰到过无数问题,从可靠性到性能到其他各个方面,Kylin社区和HBase社区积极合作解决了绝大部分关键问题。另外,现在越来越多的用户考虑使用Apache Zeppelin作为前端查询和展现的工具,为此我们开发了Kylin Interperter并恭喜给了Zeppelin,目前可以直接从最新版的Zeppelin代码库中看到这快。同样,我们也和其他各个社区积极合作,包括Spark,Kafka等,为构建和谐的社区氛围和形成良好合作打下了坚实的基础。