首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hadoop映射减少对大密钥空间的查询

Hadoop映射减少对大密钥空间的查询
EN

Stack Overflow用户
提问于 2013-04-23 08:28:40
回答 1查看 1.6K关注 0票数 0

我需要定期处理10亿份记录。唯一的键可以在1000万左右。值是具有最大200 K字符的字符串。

以下是我的问题:

  1. 是非常大的关键空间(1000万)。Hadoop能处理这么大的密钥空间吗?每把钥匙会有一个减速机,所以会有上百万的减速器。
  2. 我想更新减速机本身的DB。在还原器中,我将合并这些值(比如当前值),从DB读取现有值(比如现有值),合并当前值和现有值,并更新DB。这是个正确的策略吗?
  3. 每箱能同时运行多少台减速器?是可配置的吗?如果一次只运行一个还原器,就会有问题,因为我不能非常快地更新DB中键的状态。
  4. 我想在2-3小时内完成这项工作。我需要多少个盒子(我可以腾出最多50盒- 64 GB内存,8台核心机器)

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-23 19:17:39

对你的问题的回答:

你有错误的观念,关键,价值分配的减速器。减速器的数量不等于唯一映射器输出键的数量。这个概念是--映射器中与键相关的所有值都归一个减速器所有。这绝不意味着减速机只能得到一个键。

例如,考虑以下映射器输出:

代码语言:javascript
复制
Mapper(k1,v1), Mapper(k1,v2), Mapper(k1,v3)
Mapper(k2,w1), Mapper(k2,w2)
Mapper(k3,u1), Mapper(k3,u2), Mapper(k3,u3), Mapper(k3,u4)

因此,与k1 - v1,v2和v3相关的值将进入一个单一的减速器,比如R1,它不会被分割成多个减速器。但这并不意味着R1将只有一个键k1需要处理。它也可能具有k2或k3的值。但是对于还原器接收到的任何键,与该键相关联的所有值都将到达同一个减速机。希望它能消除你的疑虑。

你用的是哪个DB?若要减少DB调用或update语句,可以在完成与特定键相关的值的循环之后,在还原器()的末尾进行查询。

例如:

代码语言:javascript
复制
public static class ReduceJob extends MapReduceBase implements Reducer<Text, Text, Text, Text> {

        @Override
        public synchronized void reduce(Text key, Iterator<Text> values, OutputCollector<Text, Text> output,
                Reporter reporter) throws IOException {


            while (values.hasNext()) {
                      // looping through the values
            }
            // have your DB update etc. query here to reduce DB calls
      }
}

是的,减速器的数量是可配置的。如果希望将其设置为每个作业基础,则可以在作业代码run()方法中添加一行,该方法设置减速器的数量。

代码语言:javascript
复制
jobConf.set("mapred.reduce.tasks", numReducers)

如果希望将其设置为每台机器,即集群中每台计算机应有多少减缩器,则需要将集群的hadoop配置更改为:

Mapred.tasktracker.{map\reduce}.tasks.maximum--单独在给定的TaskTracker上同时运行的最大MapReduce任务数。默认为2(2个映射和2个减少),但是根据硬件的不同而改变它。

这里有更多详细信息:setup.html#Configuring+the+Hadoop+Daemons

如果您的数据文件不是gZipped(hadoop InputSplit不适用于gZipped文件),那么正如您所说的,您有200 * 1024 *10亿字节= 204800 GB或204.800 TB数据,所以如果您想在2-3小时内完成它,最好保留所有50个框,如果减速器的内存占用较低,那么按照最后一个答案增加每台计算机的减速器数量。此外,将InputSplit大小增加到128 to可能会有所帮助。

谢谢和问候。

卡蒂克亚·辛哈

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16164534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档