【问题标题】:What is the best way to store incoming streaming data?存储传入流数据的最佳方式是什么?
【发布时间】:2017-03-26 08:49:34
【问题描述】:

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

【问题讨论】:

  • 我建议使用 cassandra,因为它拥有所有数据库功能,并且在所有数据库中它的写入速度最快。
  • 请检查我的答案。希望这会有所帮助!

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


【解决方案1】:

根据我的经验,我们使用 Hbase 作为 Spark 流数据的数据存储(我们也有相同的场景,多写少读),因为我们使用的是 hadoop,hbase 与 hadoop 进行了原生集成好吧..

  • 上面我们曾经用来存储来自 solace 的高频率消息。

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

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

hdfs 中的分区结构示例: completion ofbusinessdate/environment/businesssubtype/message type 等等…… 在这种情况下,不需要去 Hbase 或任何其他数据存储。

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

这里有一些称为 CAP 定理的东西,可以根据它做出决定。

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

  2. 可用性(每个请求都会收到关于它是否 成功或失败)。

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

Casandra 支持 AP。

Hbase 支持 CP。

看详细分析给出here

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 2018-04-19
  • 2013-07-22
  • 2021-10-22
  • 1970-01-01
  • 2014-07-21
相关资源
最近更新 更多