Structure Big Data 揭示 Hadoop 未来:DataStax Brisk,EMC 和 MapR

  • Ron Bodkin
  • 杨晨

2011 年 3 月 31 日

话题:架构DevOpsAI

关于新版Hadoop的新闻和流言充斥着整个Structure Big Data会议。在以 MapReduce 为主题的小组讨论上,DataStax宣布Brisk,这款产品基于 Hadoop 构建,但是它却使用了Cassandra而不是默认的 HDFS 作为文件系统来存储数据。同时,EMC 制作了一整页的广告来宣传名为“05.09.11.EMC Greenplum. Apache Hadoop”的大会项目。而大会的主持人 GigaOm 则撰写了一篇文章探索隐式模式的 MapR 技术,表示“这是构建 Hadoop 的私有版本,而且很可能今年晚些时候会公诸于众”。大会闭幕后的一天被命名为“年度创新者”日,当日 Cloudera 工程师 Todd Lipcon 在 EclipseCon 的一个主题上介绍了 Hadoop。

GigaOm 认为 MapR 是:

构建一个 HDFS 的私有替代品,这个替代品比当前的开源版本快三倍,自带快照功能,而且支持无 NameNode 单点故障(SPOF),并且在 API 上和兼容,所以可以考虑将其作为替代方案。

DataStax(前身是 Riptano)提供对 Cassandra 及其商业产品的支持,例如最近发布的管理工具OpsCenter。在产品介绍大会上,BenWerther 认为 Brisk 是受到了例如 Netflix 这样的客户的启发。Netflix 将所有的流数据都存储在 Cassandra 里面,而且 Netflix 也是使用 Hive 进行数据分析的重要用户之一。他也提到了 Netflix 希望能够和Hive的 ClickStream 数据查询结果直接交互,而不会产生 ETL 延迟。Werther 告知 InfoQ 他们会在 45 天之内发布 Brisk,届时由 DataStax 将会提供商业支持。他同样也宣传了 OpsCenter,表示这个工具将支持多数据中心管理,冗余数据以及基本的 Hadoop 监控。此外,Werther 还介绍了 Twitter 的Rainbird项目将会开源,这是一个基于 Cassandra 的实时计数分析项目。

Brisk 将是基于 Apache Hadoop 20.2,并且包括以下特性:

  • CassandraFS 数据系统,它高度兼容 Hadoop,并且使用 Cassandra 存储数据。
  • 兼容 Hadoop 任务的输入和输出格式,并且能够操作 Cassandra 列族。
  • Hive 支持从 Cassandra 中读取和存储数据,并且允许将数据从宽行转为多个窄行。
  • 升级 JobTracker;(JT)以支持自动重启故障节点。但是 Werther 表示,Brisk 并不在内存中永久保存 JobTracker 的状态,所以当 Brisk 启动一个新 JT 的时候,正在运行的任务可能无法完成
  • 预置的配置项:Werther 向 InfoQ 介绍,DataStax 将会使用一些预定义的标志来简化流程,于是 Cassandra 可以以实时或者 Hadoop 的形式启动。

Cassandra 本质上是结合了 Dynamo 架构的BigTable。最开始是 Facebook 创建并且将 Cassandra 开源,但是大多数贡献者却是来自于 DataStax,其中就包括项目主席和公司的创始人之一 JonathanEllis。而现在 DataStax 不再雇佣 Hadoop 贡献者。Cassandra 支持多数据中心的数据冗余,范围扫描,数据存储的分离列族,而且最近还添加了二级索引支持,以及在多个冗余组中冗余数据,这样可以允许在不干扰产品运行的情况下对数据进行分析。

InfoQ 询问了 Werther 关于 Cassandra 的成熟度以及它与HBase的对比情况。尤其当我们看到作为 Cassandra 的创建者,Facebook 却使用了 HBase 来进行大规模消息服务实时分析,这愈发让我们感到困惑和好奇。就此问题,他首先表示 Hadoop 有非常庞大的社区,而 HBase 的却非常微型,连 Cassandra 的社区都比 HBase 要庞大,而且有更多的动力。DataStax 使用修复的 bug 数目,积压的未修复 bug,社区讨论以及下载数作为比较一款开源软件使用量的标准。当提及 InfoQ 关于过去 Cassandra 部署的一些问题的时候(例如 Digg 曾经面对的),Werther 说 &ldquo 快速成熟 &rdquo 技术有时候太早或者错误地使用,但是他们仍然有大量成功的客户案例,例如 Cisco,Rackspace,ConstantContact,RealNetwork 和 Netflix。Werther 也提到了由于 Facebook 向 HBase 做出一些投资,所以它更倾向于使用 HBase,而且对存储一致性的争论是完全没必要的,因为 Cassandra 对最终一致性的支持情况是可配置的,用户可以在强一致性的情况下运行。

Werther 曾经说过 Brisk 仍然是在内部测试中,没有任何的测试用户,因此 InfoQ 询问了 Cassandra 的大规模使用问题。Werther 说最大规模的部署是一个政府部门的大概 700 个节点的集群。在事务处理能力上,他说 Twitter 每秒要运行 200000 写请求来接收数据。而在数据存储上,他说有一些集群存储了约莫数百个 TB 的数据。

InfoQ 采访了 Werther 和首席工程师 Jake Luciani,询问了 Brisk 的架构和作为文件系统的 CassandraFS 的实现。我们在此对 HDFS 及其可能的改进版本,还有 CassandraFS 的一些关键的区别列在下表中:

当前版本 HDFS 可能改进 CassandraFS
NameNode(NN)是单点故障(SPOF) 一些改善和消除 NNSPOF 的方法正在开发中。 CassandraFS 将数据存储在 Cassandra 中,没有 SPOF。
文件元数据保存在 RAM 中的单个进程中,限制了文件总数 结合 HDFS 和 BookKeeper 是一个调节数据存储能力的方法,不过正在开发中。 CassandraFS 提供了可视化的无限文件调整。
不支持 WAN 数据冗余 不支持 WAN 数据冗余 Cassandra 支持多数据中心数据冗余
支持数据追加(在Cloudera Distribution for Hadoop 3 和 Apache Hadoop 0.21) 不可用 设计之初就支持追加功能,不过第一个版本并不支持,因为 HDFS 追加功能本来是用于支持 HBase 的,这个功能的开发很有难度

从技术上来说,CassandraFS 创建了一个将其路径作为 key 的表,并且将 inodes 以及一些元数据,例如文件拥有者,权限和块数据作为值。而且还有另外一张表,使用块的 id 作为 key,而序列化的块作为值。

Werther 提到 Brisk 也可以和其他的 Hadoop 周边代码共存。并且回应了 InfoQ 的关于客户如何加载非 Cassandra 的日志数据,他说客户可以使用 Cloudera Flume,这个工具已经验证可以和 Brisk 一起使用。同时,Wether 也提到了 Cloudera Hue,表示这个基于浏览器的用户界面同样也可以和 Brisk 共存。

架构DevOpsAI