手把手教hadoop2.5.1+eclipse开发调试环境搭建(2)

前一篇博文我们搭建了好了运行环境,这篇小文我们开始搭建开发调试环境。这才是真正的精华,是无数血泪铸就的

4、eclipse,又见eclipse

这个我想只要是做java的没有不熟悉,因此我就不再多说了,一切向http://www.eclipse.org索取

注意,这里的eclipse环境安装在虚拟机中哦,别装错地方了!

5、安装maven环境

去maven.apache.org上下载maven3,解压到/home(因为/home一般是数据盘,装在这里不占系统盘的空间)。配置~/.bash_profile,修改PATH

PATH=$PATH:/home/maven3/bin/

然后 source ~/.bash_profile,使环境变量生效。

执行mvn -version,看看是否配置成功了。

因为repo.maven.org/maven2在国外访问太慢,最后设置一个本地镜像,我使用的是oschina的镜像,请参考:http://maven.oschina.net/help.html

二、调试mapreduce代码

1、搞一个简单的Hadoop MapReduce例子

首先我们在eclipse中创建一个maven工程,直接用简单模板就可以,修改pom.xml添加依赖:

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.5.1</version>
</dependency>

然后参考:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html来写一个简单的mapreduce程序。当然,他用了hadoop-eclipse-plugin,这个东东配置起来狂复杂,不建议大家使用,直接使用命令行方式,不但可以锻炼对hadoop命令的熟练度,而且还会省很多事情。我是为了省事,直接使用了他的第一个Dedup例子,两个输入文件样本和一个Dedup类。

先用bin/hadoop fs -mkdir /user/root/dedup_in 创建HDFS上的目录。

两个样本数据可以放在两个txt文件中,比如in.txt和in1.txt,名字随意,放在/home/temp/目录中,然后用bin/hadoop dfs -copyFromLocal /home/temp /user/root/dedup_in上传到HDFS中,数据准备完成。

在命令行执行mvn install 编译打包这个程序到jar,然后在命令行输入:

bin/hadoop jar 工程目录/target/xxx.jar [package].Dedup

就可以运行一个mapreduce了,当然,你要先用sbin/start-all.sh启动hadoop才行。

2、修改Dedup类

为了本地追踪调试mapreduce,我们还需要改造一下Dedup类,主要是修改main函数,在Configuration conf = new Configuration()之后增加几行代码:

Configuration conf = new Configuration();

conf.addResource("classpath:mapred-site.xml");
conf.set("fs.defaultFS", "hdfs://虚拟机IP:8020");
conf.set("mapreduce.framework.name", "yarn");
conf.set("yarn.resourcemanager.address", "虚拟机IP:8032");
conf.set("mapred.remote.os", "Linux");
conf.set("hadoop.job.ugi", "hadoop,hadoop");

3、创造一个本地运行时配置

在src/main/resources下增加一个mapred-site.xml文件,用于配置运行时的hadoop参数:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapred.child.java.opts</name>
        <value>-Xmx800m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.staging.root.dir</name>
        <value>/tmp</value>
    </property>
    <property>
        <name>yarn.app.mapreduce.am.staging-dir</name>
        <value>/tmp</value>
    </property>
    <property>
        <name>mapreduce.framework.name</name>
        <value>local</value>
    </property>
    <property>
        <name>mapreduce.jobtracker.address</name>
        <value>local</value>
    </property>
    <property>
        <name>mapred.job.tracker</name>
        <value>local</value>
    </property>
</configuration>

注意:-Xmx800m -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000中的address=8000可以配置一个不被占用的端口号,以防此端口已被占用。

4、增加一个LocalJob类

这个类是为了在本地模式下,帮助hadoop-mapreduce-client发布jar用的,代码如下:

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapreduce.Job;

/**
 * @author root
 *
 */
public class LocalJob extends Job {

	public LocalJob() throws IOException {
		super();
	}

	public LocalJob(Configuration conf, String jobName) throws IOException {
		super(conf, jobName);
	}

	public LocalJob(Configuration conf) throws IOException {
		super(conf);
	}

	public static LocalJob getInstance(Configuration conf, String jobName) throws IOException{
		JobConf jobConf = new JobConf(conf);
		LocalJob job=new LocalJob(jobConf);
		return job;
	}

	public void setJarByClass(Class<?> clazz){
		super.setJarByClass(clazz);

		conf.setJar("file:///工程目录/target/xxx.jar");
	}

}

修改Dedup类main函数Job job=new Job(conf,"Data Deduplication")这一行为:

Job job = LocalJob.getInstance(conf, "Data Deduplication");

5、在eclipse的Debug配置中增加一个Remote Java Application实例debug8000,远程端口号设为8000,这就是我们前面在mapred-site.xml中配置那个。然后再在命令行中执行一次mvn install,用于编译jar文件。

6、在Dedup类的map或reduce代码中设置断点,以application形式runDedup类,注意不是Debug方式,而是Run方式。如果这时报dedup_out目录已经存在,就用 bin/hadoop fs -rm -r /user/root/dedup_out删除输出目录

7、如果看到Dedup类正常启动了,没有报错,但停止不动了,这时不要奇怪,因为你刚才设置的那个断点生效了。这时,你要在运行debug8000这个Remote Java Application,在Eclipse Debug透视图中就能看到我们刚才设置的断点,并且直接跳到我们设置的那一行!

如果你一步一步都完成了,祝贺你!你已经打开了Hadoop开发的大门了!

时间: 2024-10-06 07:01:12

手把手教hadoop2.5.1+eclipse开发调试环境搭建(2)的相关文章

搭建Hadoop2.6.0+Eclipse开发调试环境

上一篇在win7虚拟机下搭建了hadoop2.6.0伪分布式环境.为了开发调试方便,本文介绍在eclipse下搭建开发环境,连接和提交任务到hadoop集群. 1. 环境 Eclipse版本Luna 4.4.1 安装插件hadoop-eclipse-plugin-2.6.0.jar,下载后放到eclipse/plugins目录即可. 2. 配置插件 2.1 配置hadoop主目录 解压缩hadoop-2.6.0.tar.gz到C:\Downloads\hadoop-2.6.0,在eclipse的

搭建Hadoop2.5.2+Eclipse开发调试环境

一.简介 为了开发调试方便,本文介绍在Eclipse下搭建开发环境,连接和提交任务到Hadoop集群. 二.安装前准备: 1)Eclipse:Luna 4.4.1 2)eclipse插件:hadoop-eclipse-plugin-2.6.0.jar 3)hadoop版本:hadoop-2.6.0.tar.gz 三.环境搭建 1.安装eclipse 2.安装插件 将插件hadoop-eclipse-plugin-2.5.2.jar,下载后放到eclipse/plugins目录即可 3.配置had

android开发-wifi连接eclipse开发调试环境

android开发请远离数据线! 方法很简单: 第一步,首先你需要在你的手机上安装一个终端模拟器工具,这里我推荐 androidterm_1,0,48.apk,搜下各大app store都会下载到. 第二步,在手机打开这个终端工具,输入命令: su//获取root权限 setprop service.adb.tcp.port 5555//设置监听的端口,端口可以自定义,如5554,5555是默认的 stop adbd//关闭adbd start adbd//重新启动adbd 第三步,记录下你手机

Solr4.8.0源码分析(4)之Eclipse Solr调试环境搭建

Solr4.8.0源码分析(4)之Eclipse Solr调试环境搭建 由于公司里的Solr调试都是用远程jpda进行的,但是家里只有一台电脑所以不能jpda进行调试,这是因为jpda的端口冲突.所以只能在Eclipse 搭建Solr的环境,折腾了一小时终于完成了. 1. JDPA远程调试 搭建换完成Solr环境后,对${TOMCAT_HOME}/bin/startup.sh 最后一行进行修改,如下所示: 1 set JPDA_ADDRESS=7070 2 exec "$PRGDIR"

基于wampserver和Eclipse for PHP Developers的PHP开发调试环境搭建

一.系统环境 OS:Windows7 sp1 64 Apache:2.4.23 MySQL:5.7.14 PHP:5.6.25 二.软件准备 1.WampServer 下载地址:http://www.wampserver.com/en/download-wampserver-64bits/ 下载后的文件为:wampserver3.0.6_x64_apache2.4.23_mysql5.7.14_php5.6.25-7.0.10.exe 里面包含了搭建PHP必须的4个软件: 1.Apache 2.

CentOS6.5环境下Python + Django + MySQL + eclipse开发web环境搭建的简单方法

这几天跟Linux下的Python + Django环境搭建卯上了.经过几天的琢磨,找到了一条自己认为给力的路径. 这里给出命令行,过程如下: 首次登陆,切换管理员: [[email protected] ~]$ suPassword: 查看当前的版本:[[email protected] web]# pythonPython 2.6.6 (r266:84292, Nov 22 2013, 12:11:10) [GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on l

Android Studio 1.01 + BlueStacks 开发调试环境搭建之旅

首先让我缓口气,太累了,弄了大半天,一堆的问题啊,不过主要是Android Studio本身的问题,用BlueStacks调试倒是很简单. 1.下载Android Studio 安装,打开Android Studio,创建新项目,遇到了第一个麻烦: Android Studio一直处于building "project xxx" gradle project info界面,久等十几分钟依然没反应. 问题原因:感谢天朝伟大的〇〇〇,Android Studio无法下载gradle-2.2

windows中用eclipse开发Android环境搭建SDK安装异常

SDK更新时的“https://dl-ssl.google.com refused”错误 Download interrupted: hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com>Download interrupted: Connection to https://dl-ssl.google.com refusedDone. Nothing was installed. 解

CSS3实战开发:手把手教你鼠标滑动特效开发

各位网友,如果你已经看过我的CSS3实战开发系列教程,我相信你对CSS3已经有了非常全面深刻的了解.有些人可能CSS3语法掌握了不少,但是真正实际用起来还有点生疏,甚至无从下手.请别担心,我会不断更新一系列实战开发案例,我会为大家分步骤剖析特效开发过程. 今天我将手把手带领大家开发一个鼠标滑动的特效案例,废话不多说,直接上效果动画: 你有没有觉得上面的这个特效很棒呢! 好,现在咱们就开始分步骤实战开发这个动画特效吧: 首先,我们先准备好html页面代码: <!DOCTYPE html> <