Kafka在大数据生态系统中的价值

在最近几年,Apache Kafka的使用量急剧增长。目前Kafka的用户包括Uber,Twitter,Netflix,LinkedIn,Yahoo,Cisco,Goldman Sachs等等。Kafka是一个可扩展的发布/订阅系统。用户可以发布大量信息到系统,同样可以通过订阅消费这些数据。本博客解释了为什么Kafka越来越受欢迎,以及它在大数据生态系统的作用。

one-size-fits-all模型的局限性

长时间以来,数据库称为存储和处理最有意思数据的主要地点。数据库供应商不断增加新功能,如搜索,流和分析,因此很多有意思的工作都可以在数据库中完成。然后这种模式不再完美有两个原因。第一,数据库变得昂贵,因为人们试图收集其他数据集,如用户行为跟踪记录,操作指标,应用日志等等。对于挖掘新的内容这些数据集和事务数据同样重要,但是大了2~3数量级。因为传统数据库通常依赖于昂贵的高端存储系统(如。SAN),在数据库中存储所有这些数据集变得非常昂贵。第二,随着更多的特征累积,数据库变的越来越复杂,而且增加新的功能同时维持旧的更困难。一个多年发布周期在数据库厂商之间是常见的。

专业分布系统出现

为了克服这些局限性,在最近10年间人们开始构建专业系统。这些系统设计为止做一件事情,但是做的非常好。因为简单,而且构建为运行在常见磁盘的分布式系统是可行的。结果是,这些专业的系统比基于SAN的数据库更经济。通常,搭建这样的系统作为开源项目,这样进一步压低了成本。因为这些专业系统专注于一件事,与庞大的数据库相比可以更快发展、提高。Hadoop首创这种模式。它专门从事于离线处理,通过一个分布式文件系统(HDFS)和一个计算引擎(MapReduce)用于存储以及出批数据。通过使用HDFS,公司现在可以承受收集其他有价值的数据集。通过使用Mapreduce,人们可以以非常经济的方式对这些新数据集生成报告和执行分析。这种模式开始被使用于其他领域。
- Key/Value存储:Cassandra,MongoDB,HBase等等
- 搜索:Elastic search, Sole等等
- 流处理:Storm,Spark streaming ,Samza等等
- 图形:GraphLab,FlockDB等等
- 时间序列:Open TSDB等等。
- …
这些专业系统确保公司提取新的见解,以及构建以前不可能的新的应用。

满足专业系统

虽然这些专业系统已经改变了IT行业,它带来了新的挑战:如果向这些专业系统传输数据。首先,这里有各种各样的数据类型,从事务记录,到用户追踪数据,操作指标,服务日志等等。通常,相同数据集需要传输到多个专业系统中。例如,对于离线日志分析应用日志是有用的,他和搜索单个日志条目一样重要。这使得构建一个独立的管道收集每种数据,以及直接传输到每个相关专业系统是不可行的。第二,Hadoop通常保持所有种类数据的副本,从Hadoop传输到所有其他系统是不可行的,因为大多数他们要求数据极近实时的,Hadoop是无法满足的。这是Kafka诞生的原因。Kafka有如下优秀功能。
- 设计为一个分布系统并且能够在平常磁盘存储大量数据
- 设计为多订阅的系统。同样的发布数据集可以被消费多次
- 持久化数据到磁盘,可以同时分发信息以实时或者批consumer没有性能退化
- 内置冗余,因此可以用来提供所以关键任务数据的可靠性

大多数这些公司无一例外采用了几种专业系统。他们使用Kafka作为中心位置,实时摄取所有类型数据。Kafka发布相同的数据到不同专业系统。我们涉及到的作为流数据平台的结构如下图所示。增加额外专业系统进来非常容易,因为新系统可以简单的额外订阅Kafka获取数据。

接下来?

行业的趋势是多个专业系统共存于大数据生态系统。流数据平台由类似Kafka分布式发布/订阅系统提供支持,并且将扮演越来越重要的角色,因为更多的公司转向与实时处理。目前,大部分如模式化数据curation,不断变化模式延后知道数据加载到Hadoop。在流数据平台这是不好的,因为相同的数据curation处理在其他专业系统重复。更好的方法是提前推理数据被摄取到Kafka持续时间。这是正在做的事情,你可以到网站了解更多详情。

你可能感兴趣的:(大数据)