Hive 数据的减速器
Reducers for Hive data
我是新手。我很好奇如何将 reducers 设置为不同的配置单元数据集。它是基于处理的数据的大小吗?或者所有的默认减速器集?
比如5GB的数据需要多少个reducer?相同数量的reducer会不会设置成更小的数据集?
提前致谢!!干杯!
在开源 Hive 中(可能还有 EMR)
# reducers = (# bytes of input to mappers)
/ (hive.exec.reducers.bytes.per.reducer)
默认hive.exec.reducers.bytes.per.reducer为1G。
reducer 的数量还取决于输入文件的大小
您可以通过设置 属性 hive.exec.reducers.bytes.per.reducer:
来更改它
要么通过更改配置单元-site.xml
hive.exec.reducers.bytes.per.reducer 1000000
或使用集合
hive -e "设置hive.exec.reducers.bytes.per.reducer=100000
在 MapReduce 程序中,reducer 是根据 reducer 中的键分配的 input.Hence 为分组中的每一对调用 reduce 方法 inputs.It 不依赖于数据大小。
假设您要执行一个简单的字数统计程序并且文件大小为 1 MB,但映射器输出包含 5 个键,这些键将用于缩减程序,那么有机会获得 5 个缩减程序来执行该任务。
但是假设如果您有 5GB 数据并且映射器输出仅包含一个键,那么只会分配一个 reducer 来将数据处理到 reducer 阶段。
hive 中reducer 的数量也由以下配置控制:
mapred.reduce.tasks
Default Value: -1
每个作业的默认减少任务数。通常设置为接近可用主机数的质数。 mapred.job.tracker 为 "local" 时忽略。 Hadoop 默认将此设置为 1,而 hive 使用 -1 作为其默认值。通过将此 属性 设置为 -1,Hive 将自动计算出 reducer 的数量。
hive.exec.reducers.bytes.per.reducer
Default Value: 1000000000
默认为1G,即如果输入大小为10G,将使用10个reducer。
hive.exec.reducers.max
Default Value: 999
将使用最大数量的减速器。如果配置参数mapred.reduce.tasks中指定的为负数,hive在自动判断reducer个数时会使用这个作为reducer的最大个数。
减少了多少?
reduce 的正确数量似乎是 0.95 or 1.75
乘以 (<no. of nodes> * mapred.tasktracker.reduce.tasks.maximum).
使用 0.95
,所有 reduce 都可以立即启动并在 map 完成时开始传输 map 输出。 1.75
更快的节点将完成第一轮减少并启动第二波减少,从而更好地实现负载平衡。
增加 reduce 的数量会增加框架的开销,但会增加负载平衡并降低 failures.The 的成本 failures.The 上面的缩放因子略小于整数,以便在框架中保留一些 reduce 插槽用于推测-任务和失败的任务。
来源:http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html
请查看下方 link 以获得有关 reducer 的更多说明。
Hadoop MapReduce: Clarification on number of reducers
hive.exec.reducers.bytes.per.reducer
Default Value: 1,000,000,000 prior to Hive 0.14.0; 256 MB (256,000,000) in Hive 0.14.0 and later
来源:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
我是新手。我很好奇如何将 reducers 设置为不同的配置单元数据集。它是基于处理的数据的大小吗?或者所有的默认减速器集?
比如5GB的数据需要多少个reducer?相同数量的reducer会不会设置成更小的数据集?
提前致谢!!干杯!
在开源 Hive 中(可能还有 EMR)
# reducers = (# bytes of input to mappers)
/ (hive.exec.reducers.bytes.per.reducer)
默认hive.exec.reducers.bytes.per.reducer为1G。
reducer 的数量还取决于输入文件的大小 您可以通过设置 属性 hive.exec.reducers.bytes.per.reducer:
来更改它要么通过更改配置单元-site.xml
hive.exec.reducers.bytes.per.reducer 1000000
或使用集合
hive -e "设置hive.exec.reducers.bytes.per.reducer=100000
在 MapReduce 程序中,reducer 是根据 reducer 中的键分配的 input.Hence 为分组中的每一对调用 reduce 方法 inputs.It 不依赖于数据大小。
假设您要执行一个简单的字数统计程序并且文件大小为 1 MB,但映射器输出包含 5 个键,这些键将用于缩减程序,那么有机会获得 5 个缩减程序来执行该任务。
但是假设如果您有 5GB 数据并且映射器输出仅包含一个键,那么只会分配一个 reducer 来将数据处理到 reducer 阶段。
hive 中reducer 的数量也由以下配置控制:
mapred.reduce.tasks
Default Value: -1
每个作业的默认减少任务数。通常设置为接近可用主机数的质数。 mapred.job.tracker 为 "local" 时忽略。 Hadoop 默认将此设置为 1,而 hive 使用 -1 作为其默认值。通过将此 属性 设置为 -1,Hive 将自动计算出 reducer 的数量。
hive.exec.reducers.bytes.per.reducer
Default Value: 1000000000
默认为1G,即如果输入大小为10G,将使用10个reducer。
hive.exec.reducers.max
Default Value: 999
将使用最大数量的减速器。如果配置参数mapred.reduce.tasks中指定的为负数,hive在自动判断reducer个数时会使用这个作为reducer的最大个数。
减少了多少?
reduce 的正确数量似乎是 0.95 or 1.75
乘以 (<no. of nodes> * mapred.tasktracker.reduce.tasks.maximum).
使用 0.95
,所有 reduce 都可以立即启动并在 map 完成时开始传输 map 输出。 1.75
更快的节点将完成第一轮减少并启动第二波减少,从而更好地实现负载平衡。
增加 reduce 的数量会增加框架的开销,但会增加负载平衡并降低 failures.The 的成本 failures.The 上面的缩放因子略小于整数,以便在框架中保留一些 reduce 插槽用于推测-任务和失败的任务。
来源:http://hadoop.apache.org/docs/r1.2.1/mapred_tutorial.html
请查看下方 link 以获得有关 reducer 的更多说明。
Hadoop MapReduce: Clarification on number of reducers
hive.exec.reducers.bytes.per.reducer
Default Value: 1,000,000,000 prior to Hive 0.14.0; 256 MB (256,000,000) in Hive 0.14.0 and later
来源:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties