【问题标题】:cassandra.input.split.size is not reflecting in DSE3.2.4 Hadoopcassandra.input.split.size 未反映在 DSE3.2.4 Hadoop 中
【发布时间】:2014-09-26 23:58:54
【问题描述】:

我在 DSE3.2.4 中使用 Hive 处理 Cassandra 表。 无论表大小如何,它为每个作业运行 513 个映射器。 我试图改变

cassandra.input.split.size 65536
mapred.min.split.size 1000000

这些都反映在 Job.xml 中,但没有运气,

tring 更改 mapred.map.tasks to 4 没有反映在 Job.xml 中,我知道这不会反映但只是试了一下

我还是不明白为什么这个花哨的数字 513?

【问题讨论】:

    标签: hadoop mapreduce cassandra hive datastax-enterprise


    【解决方案1】:

    513 = 256 个 vnode 拆分 * 2 + 1

    这让我猜你有一个 2 节点集群。拆分的数量取决于两件事。集群中令牌范围的数量以及这些范围中的分区数量。目前,每个 vnode 范围都至少分成一个部分,这就是为什么不建议将 vnode 用于分析集群的原因。

    【讨论】:

    • 我现在该怎么办?你有什么文件可以解释这个吗?即使现在查询 10 行表,这也太糟糕了,它会从 n*2+1 拆分 那么 cassandra.input.split.size、页面大小所有这些参数有什么用?我可以尝试更改任何输入格式吗?
    • 好吧,要么您不使用 vnode(但每个节点仍然至少有一个拆分),要么您在超过 10 行上使用 map reduce。 Map reduce 适用于数千行和批量操作。
    • 然后通过 PIG 或 Hive 从 Cassandra 获取输入将运行恒定的 MAPS,这取决于令牌范围的数量或 Vnode 的数量?并且更改输入格式类也不起作用?我正在尝试将 InputFormat 类更改为 CqlPagingInputFormat 然后建议仅在 DSE 中运行高记录表来运行分析?
    • 如果我禁用 Vnodes 并通过在我的 2 节点集群中生成令牌再次重新启动。需要 2Maps 还是取决于表格大小?
    • 它总是取决于表的大小,但有一个最小值。该最小值是集群中令牌范围的数量。如果您的表有 10M 行和 20k 的拆分大小,您将获得 5000 个拆分。
    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2014-04-27
    • 1970-01-01
    • 2011-11-23
    • 2017-03-24
    • 2019-05-17
    • 2018-08-11
    • 2017-02-12
    相关资源
    最近更新 更多