1

我一直在尝试将“正确”技术用于 360 度客户应用程序,它需要:

  1. 一个宽列表,每个客户是一行,有很多列(说> 1000)
  2. 我们每天运行约 20 个批量更新分析作业。每个分析作业查询并更新一小组列,用于所有行。它包括聚合用于报告的数据,以及为机器学习算法加载/保存数据。
  3. 我们在几列中更新客户的信息,每天 <= 100 万行。更新工作量分布在工作时间。我们有超过 2 亿行。

我尝试过使用 Hbase,第 1 点和第 3 点都满足了。但我发现在 HBase 上进行分析(加载/保存/聚合)非常慢,可能比 Parquet 慢 10 倍。我不明白为什么,Parquet 和 Hbase 都是柱状数据库,我们已经很好地分散了 HBase 集群中的工作负载(“每个区域的请求数”这样说)。

有什么建议吗?我是否使用了错误的工具来完成这项工作?

4

1 回答 1

2

Parquet 和 Hbase 都是柱状数据库

这个假设是错误的:

  • Parquet 不是数据库。
  • HBase 不是列式数据库。它经常被认为是一个,但这是错误的。HFile不是柱状(Parquet)。

HBase 非常慢,它可能比 Parquet 慢 10 倍

HBase 完整扫描通常比等效的 HDFS 原始文件扫描慢得多,因为 HBase 针对随机访问模式进行了优化。您没有指定扫描表的具体方式 -TableSnapshotInputFileFormat比 naive 快得多TableInputFormat,但仍比原始 HDFS 文件扫描慢。

于 2018-07-16T07:43:35.407 回答