作者jimkukky (kukky)
看板java
标题[问题] 在Hadoop环境下,程式设计_分配问题
时间Wed Apr 20 09:32:32 2016
我有三台虚拟机,其中我的程式的演算法需要跑四次的map reduce,
我想问假设我有三个文件,如何分配给三台虚拟机,
让一台机器只处理一份文件。
在程式码当中我有设定setNumReduceTask(3),
需要三个reducer,
第一个reducer处理第一份文件,
第二个reducer处理第二份文件,
以此类推,分别能够让每台对映执行一个文件!
但是会出现问题,就是当这样设定时,
会发生第一份文件会分给三台机器处理,
第二个文件也会分给三台机器处理,
第三个文件也会分给三个机器处理,
出来的结果会有问题,
所以想请问当中的key值要怎麽设,因此在程式方面要如何写才好?
或者还是有其他方法能够让一台机器只处理一份文件
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.167.41.64
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1461115954.A.731.html
1F:推 longlongint: 输入档三行档名 一台机器算一行 04/20 10:06
2F:→ longlongint: map的时候弄? 04/20 10:08
3F:→ longlongint: 另外如果三个档案不相关 可以直接跑三次 04/20 10:09
ok,目前我有用别的方法好像可以了,也感谢你!
※ 编辑: jimkukky (118.167.41.64), 04/20/2016 19:45:01
4F:推 realmeat: 你这问题的点在job tracker sheduler的分配问题 04/21 16:14
5F:→ realmeat: 另外你的形容有点看不懂,你可以先去了解partitioner 04/21 16:17
6F:→ realmeat: key跟task的关系去看partitioner 04/21 16:21
7F:→ realmeat: task跟机器的关系要去看sheduler 04/21 16:21
嗯我後来有去看partitioner,大概了解怎麽用了感谢!
※ 编辑: jimkukky (36.229.28.124), 04/22/2016 15:41:10