【问题标题】:Is it feasible to store Cassandra data on other distributed file system such as MapR and hdfs?将 Cassandra 数据存储在 MapR 和 hdfs 等其他分布式文件系统上是否可行?
【发布时间】:2020-08-11 14:20:30
【问题描述】:

我只是想知道将 apache Cassandra 的数据存储到任何其他分布式文件系统的影响。

例如,假设我有 5 个节点的 Hadoop 集群和 3 的复制因子。

同样,对于 cassandra,我有 5 个集群节点,所有键空间的复制因子为 3。所有数据都将存储在具有相同挂载路径的 hdfs 位置。

例如-node-0 Cassandra数据目录-“/data/user/cassandra-0/”

和 Cassandra 的日志目录 - "/data/user/cassandra-0/logs/

有了这样的架构,我需要在以下几点上使用 cmets-

  1. 根据 datastax 文档中的建议,casaandra 数据和 commitlog 目录应该不同,在这种情况下这是不可能的。使用默认配置 cassandra 提交日志大小为 8192MB。所以根据我的理解,如果我有一个 1TB 的磁盘并且如果磁盘已满或任何磁盘级别错误将停止整个 cassandra 集群??

  2. 第二个问题与底层存储机制有关。通过为 hdfs 指定复制因子 3 和为 cassandra 指定复制因子 3 来进行两级数据分布,那么相同的数据(sstables)是否将存储在 9 个位置?严重的记忆丧失请就此提出建议?

【问题讨论】:

    标签: kubernetes cassandra distributed-computing datastax cassandra-3.0


    【解决方案1】:

    Cassandra 不支持在非本地文件系统(如 HDFS 等)上开箱即用地存储数据。理论上您可以破解源代码来支持这一点,但这没有任何意义 - Cassandra 自己处理复制,并且不需要额外的文件系统层。

    【讨论】:

    • 这可以通过kubernetes环境来实现,它的api暴露给外部存储系统。就像在这种情况下,我们使用 mapr 作为外部存储,所有 cassandra 数据也存储在那里。
    • 从我的角度来看,这真的没有意义。 Cassandra 对延迟非常敏感,SAN/NAS 环境真的不推荐。为什么不直接将 Cassandra 指向实际磁盘而不是添加另一层?
    • 它是一个无盘系统,所以cassandra(通过docker镜像实现)没有自己的存储系统,所以为了存储cassandra sstables,commitlog,hints和所有日志都存储在Mapr集群上在位置“/data/user/cassandra-0/”和“/data/user/cassandra-0/logs”。因此,不是每个节点都有自己的存储,而是将数据存储在外部 mapr 集群上。如果您对在分布式文件系统中存储分布式数据的后果以及单个磁盘故障问题(磁盘已满或崩溃时)有任何想法,请告诉我?
    • 正如我所提到的,在这样的设置中托管 Cassandra 是没有意义的——它就像 NAS——你的延迟会很大,而且很可能每个 Cassandra 节点都会竞争磁盘,互相攻击。
    猜你喜欢
    • 2016-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-30
    • 2016-07-19
    • 1970-01-01
    • 1970-01-01
    • 2015-12-09
    相关资源
    最近更新 更多