导航:首页 > 编程语言 > mapreduce编程

mapreduce编程

发布时间:2022-01-11 18:25:07

1. 编写一个简单的maprece程序,通常需要实现哪些模块

map 根据输入的映射函数,将一个集合映射为另一个集合,比如: 输入集合为 {1,2,3,4,5},输入的函数为 f(x) = x^2,那么输出的集合就是 {1,4,9,16,25}。 rece 就是根据输入的归约函数,将集合(一般指map输出的集合)归约,比如上面的输出集合...

2. MapRece编程模型考虑哪些问题

程序员有好几种啊 一,java程序员 : 二,php程序员 三,ios程序员 四,.net 5,C&C++&C# ...... 具体得看你想学什么; 一,二,三学的人比较多, 也容易自学, 具体的话,你可以上中国查看每一种语言的特性, 比较一下它们之间的区别 ,确定自己想要学哪一种, 当然确定之后就一定要拼命坚持下去 ,千万不要中途放弃, 断断续续地学效果很小的, 搞到最后可能就不想学了. 学这些语言的话最好上中国下载相关的培训视频, 淘宝可能有 ,好像十来块钱就可以买到, 当然有些视频可以免费下载, 不过不知道是否完整的, 如果真想购买最好买最新的培训视频. 另外最好可以找到一个人带你学, 这样更加有效果. 反正学程序一开始还没什么, 中间部分就可能会提不起精神了, 但是坚持下去了,就会很爽的了. 学程序的确实很有前途, 大学学校里面学不到什么东西的 , 一切得看自己自学 . 少年, 做一名程序员, 恩!非常好. 祝你顺利!最后, 谨记:坚持就是胜利

3. 怎样在研究在云计算环境下 用maprece编程模型去编程 然后把程序放到集群上去跑

在hadoop上安装eclipse,再在eclipse中配置hadoop环境变量,maprece编程的话可以看Hadoop in action

4. 基于hadoop的maprece编程的环境配置,下面哪一步是不必要的

分别对Map函数和Rece函数进行测试,功能正确后,就可以在小规模集群上进行测试,测试成功后就可以在Hadoop集群上进行运行。这里先不介绍单元测试的知识,后面再专门介绍如何在Hadoop中使用MRUnit进行单元测试。
MRUnit是由Couldera公司开发的专门针对 Hadoop中 编写MapRece单元测试的框架,基本原理是JUnit4和 EasyMock。MR就是Map和Rece的缩写。
MRUnit框架非常精简,其核心的单元测试依赖于JUnit。

5. MapRece编程的预处理

数据去重的最终目标是让原始数据中出现次数超过一次的数据在输出文件中只出现一次。我们自然而然会想到将同一个数据的所有记录都交给一台rece机器,无论这个数据出现多少次,只要在最终结果中输出一次就可以了。
具体就是rece的输入应该以数据作为key,而对value-list则没有要求。当rece接收到一个<key,value-list>时就直接将key复制到输出的key中,并将value设置成空值。

6. 跪求用JAVA 写一个maprece程序,完成数据读取处理,高分在线等

We want to count all the books in the library. You
count up shelf #1, I count up shelf #2. That's map. The more people we
get, the faster it goes.

我们要数图书馆中的所有书。你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。

Now we get together and add our indivial counts. That's rece.
现在我们到一起,把所有人的统计数加在一起。这就是“Rece”。

你这个是并行处理程序,用来处理这么小的数据合适吗?你有所需要的Hadoop环境吗

7. maprece编程实例,例如把3个文件的数相加,下面错误

你map完以后的数据格式是
key:1 value:1 2 3

key:1 value:4 5 6

key:1 value:7 8 9

new BigInteger(tmp) 这句,tmp的格式是1 2 3这种字符串,先把tmp作为String解析成几个数字再转int相加

8. 有没有关于maprece编程的书籍推荐

maprece编程书籍推荐一:《MapRece设计模式》


将各种有价值的MapRece设计模式汇集在一起,形成一本独特的合集,可以帮读者节省大量的时间和精力,无论读者身处哪个领域,使用哪种编程语言,使用什么开发框架。
书中对每一种模式都会详细解释其使用的上下文、可能存在的陷阱及使用的注意事项,以帮助读者在对大数据问题架构建模时避免常见的设计错误。本书还提供了MapRece的一个完整综述,解释其起源和实现,并说明设计模式如此重要的原因。书中的所有示例代码都是基于Hadoop平台编写的。
maprece编程书籍推荐二:《Hadoop MapRece实战手册》

9. maprece什么语言编程

maprece是hadoop的一个分布式计算框架,使用的是java语言编写

10. 如何快速地编写和运行一个属于自己的MapRece例子程序

大数据的时代, 到处张嘴闭嘴都是Hadoop, MapRece, 不跟上时代怎么行? 可是对一个hadoop的新手, 写一个属于自己的MapRece程序还是小有点难度的, 需要建立一个maven项目, 还要搞清楚各种库的依赖, 再加上编译运行, 基本上头大两圈了吧。 这也使得很多只是想简单了解一下MapRece的人望而却步。
本文会教你如何用最快最简单的方法编写和运行一个属于自己的MapRece程序, let's go!
首先有两个前提:
1. 有一个已经可以运行的hadoop 集群(也可以是伪分布系统), 上面的hdfs和maprece工作正常 (这个真的是最基本的了, 不再累述, 不会的请参考 http://hadoop.apache.org/docs/current/)
2. 集群上安装了JDK (编译运行时会用到)
正式开始
1. 首先登入hadoop 集群里面的一个节点, 创建一个java源文件, 偷懒起见, 基本盗用官方的word count (因为本文的目的是教会你如何快编写和运行一个MapRece程序, 而不是如何写好一个功能齐全的MapRece程序)
内容如下:
import java.io.IOException;
import java.util.StringTokenizer;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.maprece.Job;
import org.apache.hadoop.maprece.Mapper;
import org.apache.hadoop.maprece.Recer;
import org.apache.hadoop.maprece.lib.input.FileInputFormat;
import org.apache.hadoop.maprece.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;

public class myword {

public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{

private final static IntWritable one = new IntWritable(1);
private Text word = new Text();

public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}

public static class IntSumRecer
extends Recer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();

public void rece(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}

public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = new GenericOptionsParser(conf, args).getRemainingArgs();
if (otherArgs.length != 2) {
System.err.println('Usage: wordcount <in> <out>');
System.exit(2);
}
Job job = new Job(conf, 'word count');
job.setJarByClass(myword.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumRecer.class);
job.setRecerClass(IntSumRecer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(otherArgs[0]));
FileOutputFormat.setOutputPath(job, new Path(otherArgs[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}

与官方版本相比, 主要做了两处修改
1) 为了简单起见,去掉了开头的 package org.apache.hadoop.examples;
2) 将类名从 WordCount 改为 myword, 以体现是我们自己的工作成果 :)
2. 拿到hadoop 运行的class path, 主要为编译所用
运行命令
hadoop classpath

保存打出的结果,本文用的hadoop 版本是Pivotal 公司的Pivotal hadoop, 例子:
/etc/gphd/hadoop/conf:/usr/lib/gphd/hadoop/lib/*:/usr/lib/gphd/hadoop/.//*:/usr/lib/gphd/hadoop-hdfs/./:/usr/lib/gphd/hadoop-hdfs/lib/*:/usr/lib/gphd/hadoop-hdfs/.//*:/usr/lib/gphd/hadoop-yarn/lib/*:/usr/lib/gphd/hadoop-yarn/.//*:/usr/lib/gphd/hadoop-maprece/lib/*:/usr/lib/gphd/hadoop-maprece/.//*::/etc/gphd/pxf/conf::/usr/lib/gphd/pxf/pxf-core.jar:/usr/lib/gphd/pxf/pxf-api.jar:/usr/lib/gphd/publicstage:/usr/lib/gphd/gfxd/lib/gemfirexd.jar::/usr/lib/gphd/zookeeper/zookeeper.jar:/usr/lib/gphd/hbase/lib/hbase-common.jar:/usr/lib/gphd/hbase/lib/hbase-protocol.jar:/usr/lib/gphd/hbase/lib/hbase-client.jar:/usr/lib/gphd/hbase/lib/hbase-thrift.jar:/usr/lib/gphd/hbase/lib/htrace-core-2.01.jar:/etc/gphd/hbase/conf::/usr/lib/gphd/hive/lib/hive-service.jar:/usr/lib/gphd/hive/lib/libthrift-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-metastore.jar:/usr/lib/gphd/hive/lib/libfb303-0.9.0.jar:/usr/lib/gphd/hive/lib/hive-common.jar:/usr/lib/gphd/hive/lib/hive-exec.jar:/usr/lib/gphd/hive/lib/postgresql-jdbc.jar:/etc/gphd/hive/conf::/usr/lib/gphd/sm-plugins/*:

3. 编译
运行命令
javac -classpath xxx ./myword.java

xxx部分就是上一步里面取到的class path
运行完此命令后, 当前目录下会生成一些.class 文件, 例如:
myword.class myword$IntSumRecer.class myword$TokenizerMapper.class
4. 将class文件打包成.jar文件
运行命令
jar -cvf myword.jar ./*.class

至此, 目标jar 文件成功生成
5. 准备一些文本文件, 上传到hdfs, 以做word count的input
例子:
随意创建一些文本文件, 保存到mapred_test 文件夹
运行命令
hadoop fs -put ./mapred_test/

确保此文件夹成功上传到hdfs 当前用户根目录下
6. 运行我们的程序
运行命令
hadoop jar ./myword.jar myword mapred_test output

顺利的话, 此命令会正常进行, 一个MapRece job 会开始工作, 输出的结果会保存在 hdfs 当前用户根目录下的output 文件夹里面。
至此大功告成!
如果还需要更多的功能, 我们可以修改前面的源文件以达到一个真正有用的MapRece job。
但是原理大同小异, 练手的话, 基本够了。
一个抛砖引玉的简单例子, 欢迎板砖。
转载

阅读全文

与mapreduce编程相关的资料

热点内容
精品php源码 浏览:956
自己编写云服务器抢红包 浏览:200
java解压缩文件加密 浏览:884
dlink打印服务器默认地址 浏览:350
php休眠函数 浏览:370
金蝶如何打开服务器 浏览:762
e4a手游辅助源码 浏览:775
什么app可以实时直播 浏览:104
苹果13的app闪退什么原因 浏览:773
尾盘选股源码公式 浏览:447
php日期运算 浏览:929
天龙八部长歌服务器什么时候开的 浏览:198
鬼泣4模型在那个文件夹 浏览:226
单片机的串行口 浏览:55
phpjson转化为数组 浏览:266
pdf导入excel 浏览:427
苹果xsmax信任app在哪里设置 浏览:52
自动外链php源码 浏览:243
我的世界新手奖励箱命令 浏览:145
linux更新vim 浏览:997