在互联网上的一些来源中,有人解释说hdfs是用来处理比nosql技术更多的数据量的(例如,cassandra)。一般来说,当我们超过1tb时,我们必须开始考虑hadoop(hdfs),而不是nosql。
除了体系结构和hdfs支持批处理以及大多数nosql技术(例如cassandra)执行随机i/o之外,除了模式设计的差异之外,为什么nosql解决方案(同样,例如cassandra)不能处理与hdfs一样多的数据?
为什么我们不能使用nosql技术作为数据湖呢?为什么在大数据体系结构中我们只能将它们用作热存储解决方案?
1条答案
按热度按时间e4eetjau1#
为什么nosql解决方案(。。。例如,cassandra)可以处理和hdfs一样多的数据吗?
hdfs被设计用来存储大量数据并支持批处理模式(olap),而cassandra被设计用于在线事务用例(oltp)。
当前建议的服务器密度为1tb/节点(旋转磁盘)和3tb/节点(使用ssd)。
在Cassandra3.x系列中,存储引擎被重写以提高节点密度。此外,还有一些jira票证可以在将来提高服务器密度。
目前cassandra的服务器密度有一个限制,因为:
修理。对于最终一致的数据库,在出现故障时,必须进行修复才能重新同步数据。一台服务器上的数据越多,修复所需的时间就越长(更精确地计算merkle树,一种由摘要组成的二叉树)。但是修复问题主要是通过cassandra2.1中引入的增量修复来解决的
压实。对于lsm树数据结构,任何变异都会导致磁盘上出现新的写操作,因此必须进行压缩以除去不推荐使用的数据或已删除的数据。一个节点上的数据越多,压缩时间就越长。也有一些解决方案来解决这个问题,主要是新的datetieredcompactionstrategy,它有一些调优旋钮来在时间阈值之后停止压缩数据。很少有人在密度高达10tb/节点的生产环境中使用分层压缩
节点重建。假设有一个节点崩溃并完全丢失,您需要通过从其他副本流式传输数据来重建它。节点密度越高,重建节点所需的时间就越长
负荷分配。节点上的数据越多,平均负载就越大(高磁盘i/o和高cpu使用率)。这将极大地影响实时请求的节点延迟。对于需要10小时才能完成的批处理场景,100ms的差异可以忽略不计,而对于受严格sla约束的实时数据库/应用程序,100ms的差异是至关重要的