Dru*_*rBg 5 hbase cassandra apache-spark parquet spark-streaming
对于通过 Spark Streaming 处理的数据的长期存储(多次写入,少量读取),哪个更好的选择:Parquet、HBase 还是 Cassandra?或者是其他东西?有哪些权衡?
根据我的经验,我们使用 Hbase 作为 Spark 流数据的数据存储(我们也有相同的场景,很多写入,很少读取),因为我们使用的是 hadoop,hbase 与 hadoop 具有本机集成,并且进展顺利。
上面我们用来存储来自安慰的高频率消息。
HBase 非常适合进行基于范围的扫描。Casandra 因可用性和许多其他方面而闻名......
然而,我也可以在许多项目中观察到一个总体趋势,他们只是通过带有 Spark DataFrame 的 Spark Streaming 将原始数据以分区结构存储在 HDFS(Parquet + Avro)中(SaveMode.Append)并且他们正在使用 Spark 处理原始数据)
例如 hdfs 中的分区结构:
completion ofbusinessdate/environment/businesssubtype/message type等等......在这种情况下,无需访问 Hbase 或任何其他数据存储。
但上述方法中的一个常见问题是,当您通过流式传输获取很小的文件时,您将需要repartion(1) 或colelese或FileUtils.copymerge来满足单个分区文件的块大小要求。除了上面的方法也可以。
一致性(所有节点同时看到相同的数据)。
可用性(每个请求都会收到有关其成功还是失败的响应)。
分区容忍(尽管由于网络故障而任意分区,系统仍继续运行)
Casandra 支持 AP。
Hbase支持CP。