数据存储量:HDFS 与 NoSQL
Amount of data storage : HDFS vs NoSQL
在 Internet 上的多个来源中,解释说 HDFS 旨在处理比 NoSQL 技术(例如 Cassandra)更多的数据。一般来说,当我们超过 1TB 时,我们必须开始考虑 Hadoop (HDFS) 而不是 NoSQL。
除了架构和 HDFS 支持批处理以及大多数 NoSQL 技术(例如 Cassandra)执行随机 I/O 的事实之外,除了模式设计差异之外,为什么 NoSQL 解决方案不能(同样,对于例如 Cassandra)处理与 HDFS 一样多的数据?
为什么我们不能使用 NoSQL 技术作为数据湖?为什么我们应该只将它们用作大数据架构中的热存储解决方案?
why can't NoSQL Solutions (... for example Cassandra) handle as much data as HDFS?
HDFS 设计用于存储大量数据并支持批处理模式 (OLAP),而 Cassandra 设计用于在线事务 use-cases (OLTP)。
当前建议的服务器密度是旋转磁盘 1TB/节点,使用 SSD 时 3TB/节点。
在Cassandra 3.x系列中,重写了存储引擎以提高节点密度。此外,还有一些JIRA票据可以在未来提高服务器密度。
Cassandra 中的服务器密度目前存在限制,因为:
修复。对于最终一致的数据库,在发生故障时必须对 re-sync 数据进行修复。您在一台服务器上拥有的数据越多,修复所需的时间就越长(更准确地说是计算 Merkle 树,一种摘要的二叉树)。但是修复问题主要是通过Cassandra 2.1
中引入的增量修复来解决的
压缩。使用 LSM 树数据结构,任何突变都会导致磁盘上的新写入,因此必须进行压缩以摆脱弃用的数据或删除的数据。 1 个节点上的数据越多,压缩的时间就越长。也有一些解决方案可以解决这个问题,主要是新的 DateTieredCompactionStrategy,它有一些调整旋钮可以在时间阈值后停止压缩数据。在密度高达10TB/node
的生产中很少有人使用DateTiered compaction
节点重建。想象一个节点崩溃并完全丢失,您需要通过从其他副本流式传输数据来重建它。节点密度越高,重建节点的时间越长
负载分配。节点上的数据越多,平均负载就越大(高磁盘 I/O 和高 CPU 使用率)。这将极大地影响实时请求的节点延迟。虽然 100 毫秒的差异对于需要 10 小时才能完成的批处理场景来说可以忽略不计,但对于实时 database/application 受严格 SLA
影响的情况来说,这是至关重要的
在 Internet 上的多个来源中,解释说 HDFS 旨在处理比 NoSQL 技术(例如 Cassandra)更多的数据。一般来说,当我们超过 1TB 时,我们必须开始考虑 Hadoop (HDFS) 而不是 NoSQL。
除了架构和 HDFS 支持批处理以及大多数 NoSQL 技术(例如 Cassandra)执行随机 I/O 的事实之外,除了模式设计差异之外,为什么 NoSQL 解决方案不能(同样,对于例如 Cassandra)处理与 HDFS 一样多的数据?
为什么我们不能使用 NoSQL 技术作为数据湖?为什么我们应该只将它们用作大数据架构中的热存储解决方案?
why can't NoSQL Solutions (... for example Cassandra) handle as much data as HDFS?
HDFS 设计用于存储大量数据并支持批处理模式 (OLAP),而 Cassandra 设计用于在线事务 use-cases (OLTP)。
当前建议的服务器密度是旋转磁盘 1TB/节点,使用 SSD 时 3TB/节点。
在Cassandra 3.x系列中,重写了存储引擎以提高节点密度。此外,还有一些JIRA票据可以在未来提高服务器密度。
Cassandra 中的服务器密度目前存在限制,因为:
修复。对于最终一致的数据库,在发生故障时必须对 re-sync 数据进行修复。您在一台服务器上拥有的数据越多,修复所需的时间就越长(更准确地说是计算 Merkle 树,一种摘要的二叉树)。但是修复问题主要是通过Cassandra 2.1
中引入的增量修复来解决的
压缩。使用 LSM 树数据结构,任何突变都会导致磁盘上的新写入,因此必须进行压缩以摆脱弃用的数据或删除的数据。 1 个节点上的数据越多,压缩的时间就越长。也有一些解决方案可以解决这个问题,主要是新的 DateTieredCompactionStrategy,它有一些调整旋钮可以在时间阈值后停止压缩数据。在密度高达10TB/node
的生产中很少有人使用DateTiered compaction
节点重建。想象一个节点崩溃并完全丢失,您需要通过从其他副本流式传输数据来重建它。节点密度越高,重建节点的时间越长
负载分配。节点上的数据越多,平均负载就越大(高磁盘 I/O 和高 CPU 使用率)。这将极大地影响实时请求的节点延迟。虽然 100 毫秒的差异对于需要 10 小时才能完成的批处理场景来说可以忽略不计,但对于实时 database/application 受严格 SLA
影响的情况来说,这是至关重要的