了解我的 SnappyData 表的存储桶数?

Posted

技术标签:

【中文标题】了解我的 SnappyData 表的存储桶数?【英文标题】:Understanding the # of buckets for my SnappyData table? 【发布时间】:2016-08-25 05:48:53 【问题描述】:

默认的桶数是 113。为什么?为什么不是110?桶逻辑在某个“可除数”值下是否表现更好。

SnappyData 中有很多桶较少的示例。这是为什么?确定使用比默认 113 更少的存储桶的逻辑是什么?

选择更少有什么影响?更多的桶呢?我看到很多日志记录在我的 Spark SQL 查询中,在每个存储桶中查找数据。拥有更多存储桶对查询的性能是否更差?

【问题讨论】:

【参考方案1】:

按照这些指南计算分区表的桶总数:

    使用质数。我们在内部使用散列函数,这提供了最均匀的分布。查看此帖子了解更多详情:Why use a prime number in hashCode?

    使其至少是数据存储数量的四倍 你期望有桌子。桶的比例越大 数据存储,负载可以更均匀地分布在成员之间。

但请注意,负载平衡和开销之间存在权衡。管理存储桶会带来大量开销,尤其是在冗余级别较高的情况下。

【讨论】:

你能解释一下你所说的“数据存储数量”是什么意思吗?当我定义表 DDL 时,您指的是 SnappyData Store 服务器总数还是 REDUNDANCY 属性? 是的,它表示已配置的服务器总数(或将来扩展集群时预计配置的服务器)。【参考方案2】:

我们选择了一个在基于散列的分区逻辑中分配数据最有效的素数。桶的数量会对查询性能产生一定的影响。当存储桶被转换为 Spark 任务时,会有更多存储桶数量的任务调度开销。

但是,如果您的集群在 cpu 数量方面具有更大的容量,您当然应该尝试将存储桶的数量与接近的素数相匹配。

【讨论】:

以上是关于了解我的 SnappyData 表的存储桶数?的主要内容,如果未能解决你的问题,请参考以下文章

Snappydata 存储与来自现有 spark 安装的 hive 元存储

如何使用 sql 查询以行存储模式在 snappydata 表中加载 JSON 数据?

SnappyData 上的 Theta Sketch (Yahoo)

Spark 组件在 SnappyData 统一集群模式下位于何处?

DBVisualizer 和 SnappyData 的数据库配置文件?

BVH 的线性化和 SAH 的桶数是啥意思?