用eclipse编写MapReduce程序的基本要点

本文详细介绍了如何在Eclipse上配置Hadoop插件,创建Map/Reduce项目,导入相关Hadoop包,并实现Mapper和Reducer类。通过在Hadoop上运行MapReduce程序,包括直接输入参数运行和生成jar包后命令行执行的方法,演示了程序执行流程及可能出现的错误解决策略。最终验证了程序在不同运行方式下的正确性。

1.要想在eclipse上编写MapReduce,那么就需要在eclipse上安装hadoop插件,具体操作是将hadoop安装目录下的contrib/eclipse-plugin/hadoop-0.20.2-eclipse-plugin.jar复制到eclipse安装目录里的plugins目录中。

2.插件安装完成之后,就可以新建Map/Reduce Project了,在java文件中需要导入hadoop提供的一些包,具体有:

import org.apache.hadoop.conf.*;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.*;
import org.apache.hadoop.mapreduce.*;
import org.apache.hadoop.mapreduce.lib.input.*;
import org.apache.hadoop.mapreduce.lib.output.*;
import org.apache.hadoop.util.*;

java文件中,需要继承两大类Mapper和Reducer,然后重新实现map函数和reduce函数。在MapReduce主类中还要实现run方法和main方法,run方法中设置作业名以及对参数的处理。

3.运行MapReduce程序

在Hadoop上运行MapReduce程序有2中方法,第一种是直接在eclipse上输入所需参数运行,结果在控制台上打印出来,这种方便调试;设置参数如下图所示:


中间可能会出现“org.apache.hadoop.hdfs.server.namenode.SafeModeException:Cannot create directory。。。Name node is in safe mode”错误,这时就需要强制集群离开安全模式

bin/hadoop  dfsadmin -safemode leave

再次以参数的方式运行,得结果



Administrator@ML ~/hadoop-0.20.2
$ bin/hadoop dfs -ls
Found 4 items
-rw-r--r--   1 ml\root          supergroup         33 2013-12-28 12:10 /user/ml/root/input
drwxr-xr-x   - ml\root          supergroup          0 2013-12-28 12:13 /user/ml/root/output
drwxr-xr-x   - ml\administrator supergroup          0 2013-12-28 17:08 /user/ml/root/output_arg
drwxr-xr-x   - ml\root          supergroup          0 2013-12-28 15:45 /user/ml/root/output_ecl

Administrator@ML ~/hadoop-0.20.2
$ bin/hadoop dfs -cat output_arg/part*
I       1
Oh      1
am      1
father  1
hello   1
shit    1
your    1

结果与预期一致。


另外一种是将程序先生成jar包,顺便将生成的包发送至Hadoop安装目录下,

然后以命令行的方式执行该jar包,

Administrator@ML ~/hadoop-0.20.2
$  bin/hadoop  jar myWordCount.jar  MRTest  input  output_ecl
13/12/28 15:44:58 INFO input.FileInputFormat: Total input paths to process : 1
13/12/28 15:45:01 INFO mapred.JobClient: Running job: job_201312281151_0008
13/12/28 15:45:02 INFO mapred.JobClient:  map 0% reduce 0%
13/12/28 15:45:16 INFO mapred.JobClient:  map 100% reduce 0%
13/12/28 15:45:28 INFO mapred.JobClient:  map 100% reduce 100%
13/12/28 15:45:30 INFO mapred.JobClient: Job complete: job_201312281151_0008
13/12/28 15:45:30 INFO mapred.JobClient: Counters: 17
13/12/28 15:45:30 INFO mapred.JobClient:   Job Counters
13/12/28 15:45:30 INFO mapred.JobClient:     Launched reduce tasks=1
13/12/28 15:45:30 INFO mapred.JobClient:     Launched map tasks=1
13/12/28 15:45:30 INFO mapred.JobClient:     Data-local map tasks=1
13/12/28 15:45:30 INFO mapred.JobClient:   FileSystemCounters
13/12/28 15:45:30 INFO mapred.JobClient:     FILE_BYTES_READ=160
13/12/28 15:45:30 INFO mapred.JobClient:     HDFS_BYTES_READ=33
13/12/28 15:45:30 INFO mapred.JobClient:     FILE_BYTES_WRITTEN=271
13/12/28 15:45:30 INFO mapred.JobClient:     HDFS_BYTES_WRITTEN=45
13/12/28 15:45:30 INFO mapred.JobClient:   Map-Reduce Framework
13/12/28 15:45:30 INFO mapred.JobClient:     Reduce input groups=7
13/12/28 15:45:30 INFO mapred.JobClient:     Combine output records=7
13/12/28 15:45:30 INFO mapred.JobClient:     Map input records=2
13/12/28 15:45:30 INFO mapred.JobClient:     Reduce shuffle bytes=0
13/12/28 15:45:30 INFO mapred.JobClient:     Reduce output records=7
13/12/28 15:45:30 INFO mapred.JobClient:     Spilled Records=14
13/12/28 15:45:30 INFO mapred.JobClient:     Map output bytes=59
13/12/28 15:45:30 INFO mapred.JobClient:     Combine input records=7
13/12/28 15:45:30 INFO mapred.JobClient:     Map output records=7
13/12/28 15:45:30 INFO mapred.JobClient:     Reduce input records=7
Administrator@ML ~/hadoop-0.20.2
$ bin/hadoop dfs -ls output_ecl/*
drwxr-xr-x   - ml\root supergroup          0 2013-12-28 15:45 /user/ml/root/output_ecl/_logs/history
-rw-r--r--   1 ml\root supergroup         45 2013-12-28 15:45 /user/ml/root/output_ecl/part-r-00000

Administrator@ML ~/hadoop-0.20.2
$ bin/hadoop dfs -cat output_ecl/part*
I       1
Oh      1
am      1
father  1
hello   1
shit    1
your    1

程序完美执行!

内容概要:本文介绍了一个关于超声谐波成像中幅度调制聚焦超声所引起全场位移和应变的分析模型,并提供了基于Matlab的代码实现。该模型旨在精确模拟和分析在超声谐波成像过程中,由于幅度调制聚焦超声作用于生物组织时产生的力学效应,包括全场的位移与应变分布,从而为医学成像和治疗提供理论支持和技术超声谐波成像中幅度调制聚焦超声引起的全场位移和应变的分析模型(Matlab代码实现)手段。文中详细阐述了模型构建的物理基础、数学推导过程以及Matlab仿真流程,具有较强的理论深度与工程应用价值。; 适合人群:具备一定声学、生物医学工程或力学背景,熟悉Matlab编程,从事医学成像、超声技术或相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于超声弹性成像中的力学建模与仿真分析;②支持高强度聚焦超声(HIFU)治疗中的组织响应预测;③作为教学案例帮助理解超声与组织相互作用的物理机制;④为相关科研项目提供可复用的Matlab代码框架。; 阅读建议:建议读者结合超声物理和连续介质力学基础知识进行学习,重点关注模型假设、偏微分方程的数值求解方法及Matlab实现细节,建议动手运行并修改代码以加深理解,同时可拓展应用于其他超声成像或治疗场景的仿真研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值