你会推荐使用Hadoop / HBASE吗?

时间:2011-12-01 10:43:37

标签: hadoop hbase

我们有一个SQL Server 2008和一个表,比如表A具有以下特征:

  • 我们每天都会从其他系统中获取数字数据的异构数据。
  • Feed已在其他地方暂存,转换为符合A架构的格式。
  • 插入A。
  • 架构看起来像:

    < BusinessDate> < TYPEID> < InsertDate> < AxisX> < AxisY> <值>

该表具有可变数量的行。基本上我们必须在周末清除它,否则尺寸会影响性能。所以尺寸范围从一周3米到15米不等。 由于一些新的要求,我们预计到2012年底这个数字将增加1000万。所以我们将谈论10米-25米的行。

现在另外

  • A 中的数据永不改变。中间层可以使用A的数据,但它将是只读操作。但通常中间层甚至不关心内容。它通常(并非总是80%的情况)运行存储过程来生成报告并在其他系统中提供报告。
  • 这些表的客户端通常希望对一个业务日期和类型执行长时间顺序读取。即“为我今天提供所有类型1值”
  • 客户端希望将此表连接3-5个表,然后将报告提供给其他系统。
  • 上述假设不一定适用于所有加入A的表。例如,我们通常使用表B加入A并执行类似B.value * A.value的计算。 B.value是一个不稳定的专栏。

问题

  • A的特性听起来非常像HBase和其他面向列的模式所能提供的。
  • 但有些连接是使用易失性数据。

您是否建议将A迁移到HBase架构?

而且,如果我们要移动A,我会假设我们还必须迁移B和其他依赖表(与A相反)正被中间层的其他几个地方使用。这不会让事情变得复杂吗?

1 个答案:

答案 0 :(得分:1)

虽然使用模式适合,但是2500万行听起来不够大,无法证明使用HBase。您需要一个名称节点,一个作业跟踪器,一个主服务器,然后您的区域服务器,因此您需要至少5个节点才能以任何合理的方式运行HBase。你的行很小我猜它可能是10GB的数据,因此将它存储在5台服务器上似乎有点矫枉过正。

如果你选择这条路线(也许你想一次存储超过一周的数据),有办法将HBase与关系数据库集成。例如,Hive提供ODBC / JDBC连接并可以查询HBase。 Oracle和Teradata都提供了关系数据库软件和非关系存储之间的集成。我知道微软最近宣布他们正在放弃Dryad,转而支持与Hadoop的集成,但我不确定这个过程与SQL Server有多远。如果您只需要“获取要在我的SQL查询中使用的ID列表”,您当然可以轻松地自己编写一些内容。

我认为HBase非常令人兴奋,而且可能有一些你没有提到的东西可能会推动你(例如高可用性)。但我的直觉是,你可以比转用HBase更便宜地扩展你的关系数据库。