1、搭建好Hadoop环境,包括JDK的安装、Hadoop的安装及文件配置、SSH通信的配置、eclipse Java开发环境的配置(具体安装见最后附件Hadoop安装配置)。
2、本环境配置是在ubuntu下建立了三台虚拟机,一台为master,另两台为slave。打开三台虚拟机,在master上启动Hadoop:
使用jps命令查看结点启动情况,如下表明Hadoop启动成功:
3、打开eclipse,建立工程并配置Hadoop运行(具体安装见最后附件Hadoop安装配置),编程界面如下:
4、MapReduce下分布并行实现多个数相加的程序,代码及详细解释如下:
import java.io.IOException; //异常包
import java.util.StringTokenizer; //分隔字符串,默认用空格来分隔
import org.apache.hadoop.conf.Configured; //任务配置包,配置任务所需的map等函数
import org.apache.hadoop.fs.Path; //设置文件路径
import org.apache.hadoop.io.IntWritable; //Hadoop的数据类型,类似Java中int
import org.apache.hadoop.io.LongWritable; //数据类型,类似Java中long
import org.apache.hadoop.io.Text; //hadoop的数据类型,类似Java中String
import org.apache.hadoop.mapreduce.Job; //控制整个作业运行
import org.apache.hadoop.mapreduce.Mapper; //map接口
import org.apache.hadoop.mapreduce.Reducer; //reduce接口
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; /定义输入路径
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; /定义输入路径
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; /输出路径
import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; /输出路径
import org.apache.hadoop.util.Tool; //会用到的工具包
import org.apache.hadoop.util.ToolRunner;
public class sumcount extends Configured implements Tool { 实现map函数
public static class Map extends Mapper<LongWritable, Text, Text, IntWritable> {
public void map(LongWritable key, Text value, Context context) throws IOException,InterruptedException {
String line = value.toString(); //file01中的1 2 3等值,转换成string
StringTokenizer tokenizer = new StringTokenizer(line); //以空格为分隔符,分割出各个value
while(tokenizer.hasMoreElements()){ //在while循环中,将每个value改写成Hadoop能够处理的(key,value)形式,如(0,1)、(1,2)、(0,3)......
String strSorce0 = tokenizer.nextToken(); //依此取每个value
context.write(new Text("0"), new IntWritable(Integer.parseInt(strSorce0))); //写成(key,value)形式
if(tokenizer.hasMoreElements())
{
String strSorce1 = tokenizer.nextToken();
context.write(new Text("1"), new IntWritable(Integer.parseInt(strSorce1))); //因为只配置了两台从属机器,所以我把奇数数字放到了slave1机器上去运行加法,把偶数数字放到了slave2机器上去运行加法,实际中可以根据key值自动分配,相同key值得肯定放到同一台机器上运行,同一机器上也可以放不同key值得value。
}
}
<
本文档详细介绍了如何在Hadoop环境中实现分布式并行加法。首先,搭建了包括JDK、Hadoop、SSH通信和eclipse Java开发环境的配置。接着,在Ubuntu的三台虚拟机上配置了主从节点,并通过MapReduce编程实现了多个数的加法。通过eclipse创建工程并配置运行,最后展示了程序的运行和结果。此外,还提供了在命令行下运行程序的方法。
最低0.47元/天 解锁文章
1490

被折叠的 条评论
为什么被折叠?



