欢迎来到天天文库
浏览记录
ID:29728813
大小:61.01 KB
页数:11页
时间:2018-12-22
《超大机群上的简单数据处理》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、A单词频率统计本节包含了一个完整的程序,用于统计在一组命令行指定的输入文件中,每一个不同的单词出现频率.#include"mapreduce/mapreduce.h"//用户map函数classWordCounter:publicMapper{ public: virtualvoidMap(constMapInput&input){ conststring&text=input.value(); constintn=text.size(); for(inti=0;i2、ce(text[i])) i++; //查找单词的结束位置 intstart=i; while((i3、(ReduceInput*input){ //迭代具有相同key的所有条目,并且累加它们的value int64value=0; while(!input->done()){ value+=StringToInt(input->value()); input->NextValue(); } //提交这个输入key的综合 Emit(IntToString(value)4、); } };REGISTER_REDUCER(Adder);intmain(intargc,char**argv){ ParseCommandLineFlags(argc,argv); MapReduceSpecificationspec; //把输入文件列表存入"spec" for(inti=1;iset_format("text"); inp5、ut->set_filepattern(argv[i]); input->set_mapper_class("WordCounter"); } //指定输出文件: ///gfs/test/freq-00000-of-00100 ///gfs/test/freq-00001-of-00100 //... MapReduceOutput*out=spec.output(); out->set_filebase("/gfs/test/freq"); out->set_num_task6、s(100); out->set_format("text"); out->set_reducer_class("Adder"); //可选操作:在map任务中做部分累加工作,以便节省带宽 out->set_combiner_class("Adder"); //调整参数:使用2000台机器,每个任务100MB内存 spec.set_machines(2000); spec.set_map_megabytes(100); spec.set_reduce_megabytes(100); //运行它7、 MapReduceResultresult; if(!MapReduce(spec,&result))abort(); //完成:’result’结构包含计数,花费时间,和使用机器的信息 return0;}Google三大核心技术之二:GFSGFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。1、设计概览(1
2、ce(text[i])) i++; //查找单词的结束位置 intstart=i; while((i3、(ReduceInput*input){ //迭代具有相同key的所有条目,并且累加它们的value int64value=0; while(!input->done()){ value+=StringToInt(input->value()); input->NextValue(); } //提交这个输入key的综合 Emit(IntToString(value)4、); } };REGISTER_REDUCER(Adder);intmain(intargc,char**argv){ ParseCommandLineFlags(argc,argv); MapReduceSpecificationspec; //把输入文件列表存入"spec" for(inti=1;iset_format("text"); inp5、ut->set_filepattern(argv[i]); input->set_mapper_class("WordCounter"); } //指定输出文件: ///gfs/test/freq-00000-of-00100 ///gfs/test/freq-00001-of-00100 //... MapReduceOutput*out=spec.output(); out->set_filebase("/gfs/test/freq"); out->set_num_task6、s(100); out->set_format("text"); out->set_reducer_class("Adder"); //可选操作:在map任务中做部分累加工作,以便节省带宽 out->set_combiner_class("Adder"); //调整参数:使用2000台机器,每个任务100MB内存 spec.set_machines(2000); spec.set_map_megabytes(100); spec.set_reduce_megabytes(100); //运行它7、 MapReduceResultresult; if(!MapReduce(spec,&result))abort(); //完成:’result’结构包含计数,花费时间,和使用机器的信息 return0;}Google三大核心技术之二:GFSGFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。1、设计概览(1
3、(ReduceInput*input){ //迭代具有相同key的所有条目,并且累加它们的value int64value=0; while(!input->done()){ value+=StringToInt(input->value()); input->NextValue(); } //提交这个输入key的综合 Emit(IntToString(value)
4、); } };REGISTER_REDUCER(Adder);intmain(intargc,char**argv){ ParseCommandLineFlags(argc,argv); MapReduceSpecificationspec; //把输入文件列表存入"spec" for(inti=1;iset_format("text"); inp
5、ut->set_filepattern(argv[i]); input->set_mapper_class("WordCounter"); } //指定输出文件: ///gfs/test/freq-00000-of-00100 ///gfs/test/freq-00001-of-00100 //... MapReduceOutput*out=spec.output(); out->set_filebase("/gfs/test/freq"); out->set_num_task
6、s(100); out->set_format("text"); out->set_reducer_class("Adder"); //可选操作:在map任务中做部分累加工作,以便节省带宽 out->set_combiner_class("Adder"); //调整参数:使用2000台机器,每个任务100MB内存 spec.set_machines(2000); spec.set_map_megabytes(100); spec.set_reduce_megabytes(100); //运行它
7、 MapReduceResultresult; if(!MapReduce(spec,&result))abort(); //完成:’result’结构包含计数,花费时间,和使用机器的信息 return0;}Google三大核心技术之二:GFSGFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行于廉价的普通硬件上,但可以提供容错功能。它可以给大量的用户提供总体性能较高的服务。1、设计概览(1
此文档下载收益归作者所有