我是hadoop mapreduce框架的新手。我自己阅读了很多教程并理解了框架。我已经成功配置了伪分布式模式的hadoop设置。我有两个特定的任务需要在Hadoop MapReduce中完成。Hadoop MapReduce思维
我有很多很多数据文件,格式如下。
交换消息的数量; USER1;用户2;时间戳;
一个例子是:5; John Doe;约翰·史密斯; 1/1/1900;
我想什么来完成是
做数据上的用户名遮蔽(像用户名上构建SHA256,所以他们是匿名的。)
聚集的数交换在一定时期内的消息(比如一周)
现在让我们来对我的问题: 据我目前所知,该hadoop mapreduce框架旨在完成第二项任务。我可以映射键值(两个用户名之间交换消息,消息的数量),并减少它获得在给定的时间段内(例如1周)的消息总数。但是第一项任务呢?当我做数据屏蔽时,没有减少操作,这个任务不是hadoop mapreduce的东西吗?我想要并行执行,但不能真正想到应用hadoop mapreduce来完成第一项任务。我需要处理的数据文件数量非常大,因此无论如何都会考虑使用hadoop mapreduce。
感谢您的意见!
P.S .:这个问题可以概括为“哪种类型的任务是hadoop MapReduce最适合的?”
为什么你不能做地图部分做转换? Map/Reduce的Map部分也可以用来转换数据,所以你的任务是:Map - > Record to#;编码用户1;编码用户2;日期。 Reduce会将它转换成你需要的统计数字 – abatyuk
你说得对,我只能做地图部分。当我只做地图部分时,是否是一种很好的方法,将被屏蔽的记录文件存储回HDFS,并再次读取它以在被屏蔽的记录上执行减少作业?主内存不能保存整个数据集。 – Bob
据我了解,reducer等待mappers完成他们的工作,在我的情况下意味着所有的数据文件都必须进行转换。你能解释一下你在想的工作流程吗? – Bob