基于Hadoop的Map reduce编程(一) - 编程入门网
基于Hadoop的Map reduce编程(一)时间:2011-08-27翻译的一篇国外的关于hadoop mapreduce的文章,文章比较长,先翻译第一部分吧 翻译者:pconlin900 博客:http://pconline900.javaeye.com Hadoop是apache的一个开源的map-reduce框架,MapReduce是一个并行计算模型,用来处理海量数据。模型思想来源于google的Jeffrey Dean 和 Sanjay Ghemawat,包括map() reduce()两个主要的功能。 这是一个很简单的类似于Hadoop的MapReduce应用例子,应用了mapreduce的基本思想,可以帮助理解hadoop的处理思想和技术,但注意,它没有使用hadoop框架。 例子的功能是创建一些字符串,然后统计这些字符串里面每个字符出现的次数,最后汇总得到总的字符出现次数。 Listing 1. 主程序 public class Main { public static void main(String[] args) { MyMapReduce my = new MyMapReduce(); my.init(); } 基于Hadoop的Map reduce编程(一)(2)时间:2011-08-27Listing 2. MyMapReduce.java import java.util.*; public class MyMapReduce { List buckets = new ArrayList(); List intermediateresults = new ArrayList(); List values = new ArrayList(); public void init() { for(int i = 1; i<=30; i++) { values.add("http://pconline900.javaeye.com" + new Integer(i).toString()); } System.out.println("**STEP 1 START**-> Running Conversion into Buckets**"); System.out.println(); List b = step1ConvertIntoBuckets(values,5); System.out.println("************STEP 1 COMPLETE*************"); System.out.println(); System.out.println(); System.out.println("**STEP 2 START**->Running **Map Function** concurrently for all Buckets"); System.out.println(); List res = step2RunMapFunctionForAllBuckets(b); System.out.println("************STEP 2 COMPLETE*************"); System.out.println(); System.out.println(); System.out.println("**STEP 3 START**->Running **Reduce Function** for collating Intermediate Results and Printing Results"); System.out.println(); step3RunReduceFunctionForAllBuckets(res); System.out.println("************STEP 3 COMPLETE*************"); System.out.println("************pconline900 翻译*************"); System.out.println("***********博客:http://pconline900.javaeye.com*************"); } public List step1ConvertIntoBuckets(List list,int numberofbuckets) { int n = list.size(); int m = n / numberofbuckets; int rem = n% numberofbuckets; int count = 0; System.out.println("BUCKETS"); for(int j =1; j<= numberofbuckets; j++) { List temp = new ArrayList(); for(int i=1; i<= m; i++) { temp.add((String)values.get(count)); count++; } buckets.add(temp); temp = new ArrayList(); } if(rem != 0) { List temp = new ArrayList(); for(int i =1; i<=rem;i++) { temp.add((String)values.get(count)); count++; } buckets.add(temp); } System.out.println(); System.out.println(buckets); System.out.println(); return buckets; } public List step2RunMapFunctionForAllBuckets(List list) { for(int i=0; i< list.size(); |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |