InfoWorld最佳开源大数据工具奖,看看接下里你需要了解学习的新晋工具有哪些
作者:Luke Han
一年一度由世界知名科技媒体InfoWorld评选的Bossie Awards于2016年9月21日公布,评选了最佳大数据工具奖,最佳大数据应用奖,最佳网络与安全奖等多个奖项。在最佳开源大数据工具奖中,Google的TensorFlow和Beam无可置疑的入选,同时也有Spark,Elasticsearch, Impala,Kylin,Kafka,Zeppelin等市场热点,同时有很多新兴的项目入选,例如SlamData等。
Bossie Awards是知名英文科技媒体InfoWorld针对开源软件颁发的年度奖项,根据这些软件对开源界的贡献,以及在业界的影响力评判获奖对象,由InfoWorld编辑独立评选,目前已经连续近十年,是IT届最具影响力和含金量奖项之一。
处理大量数据的问题是很多且不同的,并且没有一个工具可以搞定所有-即使Spark也不行。在这几年Bossies大奖中,你将发现最新的,最佳的解决方案以利用大规模集群来索引和搜索,图处理,流处理,结构化查询,分布式OLAP及机器学习等。基于大量的处理器以及海量的RAM-人多好办事。
Spark
Spark是一个分布式内存处理框架,使用Scala编写,正在吞噬大数据世界。基于2.0版本的发布,其将继续保持优势。除了在实现SQL及性能增强的特性外,Spark2.0 将DataFrame近一步标准化,提供了新的结构化流式API(Structured Streaming APIs), 及全新的并改进的SparkSession。
从批处理的RDD转向不再限制的DataFrame标志着一个转变,Structured Streaming将使得特定类型的流式场景(比如获取数据变化:CDC,及直接修:update-in-place)更加易于实现 ——并且允许在DataFrame里基于时间列进行windowing从而取代了仅支持时间到达的流式处理方式。这是Spark Streaming长时间的痛,特别是与竞争对手进行对比的时候,例如Apache Flink及Apache Beam。Spark 2.0治愈了这个伤口。如果你还没有学习Spark,是时候学习了。
Beam
Google的Beam ,一个Apache孵化器项目,给予我们一个在处理引擎改变时不再重写代码的机会。在Spark刚出现的时候都认为这也许是我们编程模型的未来,但如果不是呢?此外,如果你对Google的DataFlow的性能及扩展特性有兴趣,你可以在Beam里编写程序并且在DataFlow,Spark,或者即使在Flink里运行他们。
我们是多么的喜欢编写一次到处运行的主意以致于不管失败了多少次(看着你呢,Scott McNealy,译者按,其曾为Sun首席执行官,这句话最早来自Java的宣传语),我们会买单的。即使Beam不支持开发者特性例如REPL,但它为你提供了一个伟大的方式使得你的代码可以面向未来的分布式计算逻辑并且在哪一天运行它。
TensorFlow
Google开源的他们机器学习的秘密武器。不管你想做文本识别,图像识别,自然语言处理,或者其他类似的复杂的机器学习应用,TensorFlow也许是你搜索的第一个答案。
TensorFlow使用C++编写却支持使用Python编码。此外,它提供了一个方便的方式在GPU和CPU上同时运行分布式及为并行优化过的代码。这将成为我们不断探讨的下一个大数据工具。
Solr
来自重量级Hadoop供应商,包括Hortonworks,Cloudera及MapR的选择,Apache Solr为企业带来了可信任的成熟的搜索引擎技术。Solr基于Apache Lucene引擎,两个项目有很多共同的贡献者。你可以在众多商业本后发现Solr,例如Instagram,Zappos,Comcast及DuckDuckGo等。
Solr包括SolrCloud,其利用Apache ZooKeeper来创建稳定的,分布式搜索及索引解决方案以应对分布式系统常见的问题例如network split-brain等。随着可靠性的提升,SolrCloud能够基于需求扩容或缩减,而且其足够成熟以应对在几百亿文档之间进行海量查询的需求。
Elasticsearch
Elasticsearch, 也是一个基于Apache Lucene的开源分布式搜索引擎,它专注在提供REST APIs和支持JSON文档等更现代的理念。有效的集群可扩展机制使得我们能够以很低的运维成本处理G级别到P级别的数据。
作为ELK技术栈(Elasticsearch,Logstash,以及Kibana,均为Elasticsearch的创建者Elastic公司开发)的一部分,Elasticsearch已经成为日志分析领域的杀手级应用,成为Splunk的开源替代者。包括Netflix,Facebook,Microsoft,Linkedin等公司,均为日志处理基础设施运维着大规模的Elasticsearch集群。同时,ELK技术栈也在拓展它的领域,包括欺诈检测及领域相关的业务分析等应用,在整个企业范围内广泛地使用Elasticsearch技术。
SlamData
学习SlamData对我而言是一个很长的旅程。为什么你用MongoDB来做为你的分析解决方案?那是一个操作性数据库。然而,SlamData的Jeff Carr说服了我,看上去并不疯狂。有非常多的新公司及年轻的开发者正在MongoDB上孕育。如果你有一个MongoDB数据库并需要基本的分析,你需要创建一整个Hadoop或者其他的基础架构来构建报表吗?
在数据存储上有太多的为了报表而做的ETL!于直接从复制节点上出报表相差甚远且非常不容易。SlamData是一个基于SQL的引擎可以原生的访问MongoDB,而不像MongoDB自己的解决方案,SlamDta不是将所有数据塞进PostgreSQL并叫它BI连接器。现在核心技术已经开源,我想我们可以期待更多的公司将会采用。
Apache Impala
Apache Impala是Cloudera的SQL on Hadoop引擎。如果你在使用Hive,Impala是一个简单的方式为你的查询提升性能而不需要你重新思考你该做任何事情。基于列的,分布式的,大规模并行处理系统,Impala比Hive on Spark组合更加成熟。即使不经过多少调优,Impala也能提升你的性能,而且我敢打赌在投入同样的精力下其将比Tez有更好的结果。如果你需要为在HDFS上一些文件提供SQL,Impala将可能是你的最好的选择。
Kylin
如果你要做多维立方体分析并且你希望使用现代的大数据框架,那么Kylin将是你的目标。如果你从未听说过OLAP 立方体,那么考虑在RDBMS上的一些表以一对多的关系存在,有一个计算的字段需要依据来自不同表的其他字段。你可以使用SQL来查询并进行计算,但天哪,太慢了!更何况如果有更多的关系及需要计算的字段呢?不同于两个平的表,想象他们是一个立方体的两个面用一些块组成并且每个块都是一个值(可能是预先计算好的)。甚至你可以有N个维度–仍然叫做立方体但比文字意义上的立方体有更多的面。Kylin确实不是第一个实现分布式OLAP的技术,但却是第一个构建在现代技术上的,这也是今天你可以下载并在你喜爱的云上部署的解决方案。
(译者按:Apache Kylin是唯一一个来自中国的Apache软件基金会顶级项目)
Kafka
Kafka绝对是分布式消息发布与订阅的行业标准了。什么时候能发布1.0?没人知道,但它已经用在了一些全球最大规模的系统中。Kafka的消息是可靠的,这点和其他消息系统一致,但又大多数早期同类系统不同,它的提交日志是分布式的。更进一步,Kafka的分区的流概念支持更高的数据加载以及更多的客户端连接。然而讽刺的是,不管Kafka的这些能力多么让人印象深刻,它竟然可以如此简单地安装和配置,这绝对是大数据以及消息领域的特殊意外。
StreamSets
打个比喻,你有很多圆形的数据,要放入方型的洞里。也许这些数据保存在文件中(比如网站日志),或许在Kafka的流中。有很多做法可以处理这类问题,但我可以更轻松地让StreamSets替我做这些事,而且看起来它比其它解决方案更完整(比如NiFi)。它有健壮的,不断发展中的连接器(比如HDFS,Hive,Kafka,Kinesis),有REST API,以及监控数据流动的易用的GUI。看起来,它们真的能最终解决这个问题!
Titan
图形数据库理应让整个世界为之燃烧,直到人们开始认识到,做真正有用的图形并不一定意味着必须要按图的方式保存数据。Titan从某种程度上来说减小了这之间的差异。假如您有一套复杂的图数据库,使用了各种硬件设备,底层使用了可插拔的存储,但最终不得不转向分布式的列式存储。与其它图形数据库相比,Titan的架构是水平扩展的(scale out),而不是向上扩展(scale up)。相比于严格的图形分析框架,Titan可以提供更好的性能(如Giraph),也不需要使用大量内存资源或时间来重算图形(如GraphX)。更不用提它还具备更好的数据完整性的潜力。
Zeppelin
也许你是一个开发者,只想从Hive生成一个漂亮的图形;或者你是一个数据科学家,想要一个数据记事本(Notebook),Zeppelin会非常适合。它使用现在非常流行的Notebook概念,用IPython编写,允许你生成标签、嵌入代码、执行对Spark和其它引擎的查询,并生成文本、表格或图表的形式输出。Zeppeline仍然缺乏一些类似DataBricks产品的功能和多用户功能,但它正在取得稳步进展。如果您使用的Spark工作,Zeppelin是属于你的工具包。
End.