处理大数据可能会遇到各种各样的问题,目前没有任何工具可以完美地处理这一切——即便是Spark。在今年的 Bossie开源大数据工具中,你会发现最新最好的方法是利用大型集群进行索引、搜索、图形处理、流处理、结构化查询、分布式OLAP和机器学习,因为众多处理器和RAM可降低工作量级。
Bossie奖是英文IT网站InfoWorld针对开源软件颁发的年度奖项,根据这些软件对开源界的贡献,以及在业界的影响力评判获奖对象。本次InfoWorld评选出了13款最佳开源大数据工具,Spark、Beam都名列榜单之上。
Spark
Spark是写在Scala中的内存分布式处理框架,在Apache的大数据项目中非常火爆。随着Spark 2.0版本的发布,它的优势似乎在延续。除了SQL语句实现等基础功能,新版本的Spark在性能上也大幅提升。Spark 2.0在DataFrames的基础上进一步完善,比如新的Structured Streaming API 等。这一切改变使Spark程序员的操作更清楚简单,但Structured Streaming 可能会有较大改变。
从RDD的批处理进程转变为无边界的DataFrame概念,Structured Streaming将使某些特定场景的流处理(比如捕获数据变更和位置更新)更容易实现,允许DataFrame本身的窗口时间序列,而不是进入流管道的新事件,这是Spark流式处理长期以来的痛点,尤其是与Apache Flink和Apache Beam相比,Saprk 2.0终于弥补了这块空白。如果你至今没有学会Spark,你就OUT了。
Beam
Google Beam是Apache的孵化器项目,提供了一种不需要每次改变引擎都重写代码的方式。目前看来,Spark可能是未来的编程模型,但如果不是呢?此外,如果你对一些扩展功能和Google DataFlow性能感兴趣,你可以自己在Beam平台编写代码并在DataFlow,Spark甚至是Flink上运行。我们很喜欢即写即运行的想法,但Beam不支持类似REPL的开发者功能,但未来它将是一款不错的分析工具。
TensorFlow
TensorFlow是Google针对机器学习提出的开源软件,无论是字符识别,图像识别,自然语言处理还是其他复杂的机器学习应用,TensorFlow可能都是你的首选。
TensorFlow是用C++写的,但支持Python。此外,它最终会呈现出一个十分方便的方式运行分布式代码,优化GPS和CPU的并行代码。这将是下一个大数据工具,未来将会持续进行讨论。
Solr
作为Hadoop重量级厂商Hortonworks,Cloudera以及MapR等的选择,Apache Solr为企业带来可信任的、成熟的搜索引擎技术。Solr基于Apache Lucene引擎,这两个项目共享于许多社区。你可以在类似Instagram,Zappos,Comcast和DuckDuckGO等企业场景背后发现 Solr的身影。
Solr中的SolrCloud,是利用Apache ZooKeeper创建可伸缩、分布式的搜索和索引解决方案,并且高度抵御分布式系统类似脑裂等常见问题。伴随着可靠性,SolrCloud的规模可按需变化,并且它足够成熟可以处理数十亿文档之间的大量查询请求。
Elasticsearch
Elasticsearch同样基于Apache Lucene引擎,是针对现在的REST API 和JSON文档概念的开源分布式搜索引擎。Elasticsearch集群数据从GB向PB级扩展十分容易,只需要很低的处理开销。
作为ELK堆栈的一部分(Elasticsearch,Logastash和Kibana都是由Elasticsearch创造者Elastic创造的),Elasticsearch已经发现了它作为开源Splunk替代日志分析的杀手级应用。类似于 Nteflix,Facebook,Microsoft以及Linkedln公司在日志基础架构上会选择运行大型Elasticsearch集群。此外,ELK堆栈正在寻找其他方向,比如欺诈检测和特定领域的业务分析,这将使Elasticsearch在更多企业得到使用。
SlamData
未来对SlamData来说是一场长途旅行。为什么会选择使用MongoDB作为分析解决方案呢?可能因为这是一个可操作数据库。然而,正如 SlamData的Jeff Carr所言,它并不疯狂。有很多MongoDB方向新的公司和年轻的开发者产生,如果你使用MongoDB数据存储,并且需要运行基础的分析,你要创建整个Hadoop集群或者其他设施报告吗?SlamData允许用熟悉的SQL语法来进行JSON数据的嵌套查询,不需要转换或语法改造。
该技术的主要特点之一是它的连接器。从MongoDB,HBase,Cassandra和Apache的Spark,SlamData同大多数业界标准的外部数据源可以方便的进行整合,并进行数据转换和分析数据。SlamData有基于SQL的引擎,本质上说和MongoDB类似,但不像MongoDB 有自己的解决方案,SlamData并没有吸纳PostgreSQL的所有数据,并称之为BI连接。既然核心技术是开源的,我认为可以期待未来有更多公司采用其技术不断完善该领域产品。
Impala
Apache Impala是针对Hadoop上SQL处理的Cloudera引擎。如果你正在使用Hive,Impala是一种不需要你重复考虑任何事情就可以达到查询性能的简单方法。基于行的分布式大规模并行处理系统,Impala相比于在Spark上组合Hive更加成熟和彻底。即便没有太多的调优,Impala 还是可以提高性能,并且一定比你付出同样努力使用Tez的效果要好。如果你在HDFS的文件之上需要使用SQL,Impala可能是最好的选择。
Kylin
如果你正在做N维立方体分析和现代大数据框架,Kylin很对你的口。如果你从没听说过OLAP多维数据集,没关系。如果你正在考虑RDBMS中存在一对多关系表,但有一部分需要计算字段,你可以选择在SQL里进行查询和计算,但是这太缓慢了。当我们的关系和计算量更多更复杂时,又该怎么办呢?不是平面的表,把它们想象成立方体组成的若干块,每一块事先预计价值。你可能有N维或多维数据。Kylin当然不是第一个实现分布式OLAP的,但它是最先进的技术之一,并且目前可以下载并安装在云端。
Kafka
Kafka是非常标准的分布式发布和订阅标准,现在已经用于世界上一些比较大的系统,Kafka的消息传递更加可靠,尽管与之前的系统不同,通过分布式提交日志保持耐久性。然而,Kafka的分区流处理支持高速数据加载和大量用户。比较讽刺的是,尽管所有这些功能已经足够让人惊讶了,但Kafka十分容易安装部署,这在大数据和消息传递规则里是个例外。
StreamSets
你可能有一些数据需要处理,这些数据可能在文件夹里(比如网络日志)或者正在Kafka上传递,虽然有很多方法可以实现,但使用StreamSets可以在最短的时间内做你想做的任何事情,它比其他解决方案更加完整。也有越来越多的强壮的连接器 (HDFS,Hive,Kafka,Kinesis),REST API,和GUI来监控数据流动,这也正是他们一直在努力做的事情。
Titan
直到人们意识到使用图表进行存储非常有用,图形数据库才开始火了起来。一个携带所有附件可插拔式存储的复杂数据库,本质上是指高度可分配的数据库列族。与其他图形数据库相比,Titan可以扩展。与严格的图形分析框架相比,Titan可以提供更好的性能,相比于Giraph,不需要使用内存资源或者时间重构图形,相当于GiraphX,更不用说潜在的优秀的数据完整性特征。
Zeppelin
无论你是一个只想要美观图形的开发者,还是想成为数据科学家,Zeppelin可能都适合你,它使用似曾相识的类似于IPython的笔记本概念,允许通过写标记,嵌入式代码,执行代码,它存在于Spark或其他引擎中,通过生成文本,表格或者图表形式输出。Zeppelin仍然缺乏一些特性和多功能DataBrick,但它正在稳步前进。如果你使用Spark,Zeppelin就存在于工具包中。
本文作者:zyy
来源:51CTO