存储传入流数据的最佳方法是什么?

时间:2016-11-12 04:25:16

标签: apache-spark cassandra hbase spark-streaming parquet

通过Spark Streaming处理的数据的长期存储(许多写入,少量读取)有什么更好的选择:Parquet,HBase还是Cassandra?或者是其他东西?有什么权衡取舍?

1 个答案:

答案 0 :(得分:1)

根据我的经验,我们使用Hbase作为火花流数据的数据存储(我们也有相同的场景,许多写入和少量读取),因为我们使用hadoop,hbase与hadoop本机集成,它去了以及..

  • 上面我们使用了来自安慰的消息的高速率。

  • HBase非常适合进行基于范围的扫描。 Casandra以其可用性和许多其他东西而闻名......

  • 但是,我还可以观察到许多项目中的一个大趋势,他们只是通过带有spark数据帧(SaveMode.Append)的火花流将分区结构中的rawdata存储在hdfs(parquet + avro)中,并且它们正在处理rawdata with Spark

hdfs中的分区结构: completion ofbusinessdate/environment/businesssubtype/message type等...... 在这种情况下,无需转到Hbase或任何其他数据存储。

但上述方法中的一个常见问题是,当您获得小而小的文件时,通过流式传输,您需要repartion(1)或coleleseFileUtils.copymerge来满足块大小要求单个分区文件。除了上述方法也没关系。

根据可以做出的决定,这里有一些叫做 CAP theorm 的东西。 enter image description here

  1. 一致性(所有节点同时看到相同的数据)。

  2. 可用性(每个请求都会收到有关它的响应 成功或失败)。

  3. 分区容差(系统继续 尽管由于网络故障导致任意分区,但仍然可以运行

  4. Casandra支持AP。

    Hbase支持CP。

    查看给出here

    的详细分析