怎样用windows eclipse 编程hadoop

怎样用windows eclipse 编程hadoop,第1张

1、目标:

在三台ubuntu上搭建hadoop开发环境

在windows下利用Eclipse访问ubuntu下的hadoop环境,进行开发;

2、软硬件要求:

软件: hadoop-0.20.2 ,jdk-1.6 , *** 作系统 ubuntu10.10 , Eclipse3.7 ;

硬件:3台装有ubuntu系统的机器(我使用的是在一台windows xp下利用 VMware workstation 安装了三台ubuntu虚拟机)

3台ubuntu虚拟器使用相同的用户名和密码 如我的用户名都是matt,

3、ubuntu上搭建hadoop环境

(这一步我直接省略,在网上有很多参考),搭建好后的配置文件如下:

core-site.xml

<configuration>

<property>

<name>hadoop.tmp.dir</name>

<value>/home/matt/HadoopInstall/tmp</value>

<description>A base for other temporary directories.</description>

</property>

<!-- file system properties -->

<property>

<name>fs.default.name</name>

<value>hdfs://tiger:9000</value>

</property>

</configuration>

mapred-site.xml

<configuration>

<property>

<name>mapred.job.tracker</name>

<value>tiger:9001</value>

</property>

</configuration>

hdfs-site.xml

<configuration>

<property>

<name>dfs.replication</name>

<value>2</value>

</property>

</configuration>

4、在windows上安装eclipse3.7,

首先先进行windows系统参数设置,进入C:\WINDOWS\system32\drivers\etc 将hosts中加入主机名与对应Ip的关系

tiger 192.168.200.195

lion 192.168.200.196

wolf 192.168.200.197

(这三台分别是我的三台ubuntu虚拟机的主机名和对应的IP,可以参考我之前写的日志VMware虚拟机与主机共享上网的设置)

在官网下载解压eclipse3.7,然后将hadoop插件直接拷到eclipse的plugins里就可以了(hadoop0.20.2自带的hadoop插件只能支持

eclipse3.3.2以下版本,因此这个插件是我在google中搜索的);重启eclipse 通过点击Window ->Open Perspective ->Other 选择、Map/Reduce,图标是个蓝色的象。就可以看到mapreduce视图了;接下来进行设置mapreduce开发环境,在

eclipse下端,控制台旁边会多一个Tab,叫“Map/Reduce Locations”,在下面空白的地方点右键,选择“New Hadoop location...”,

d出配置框

其中Location name可以随便起,Map/Reduce Master要与你的mapered-site.xml对应,DFS与core-site.xml对应,User name是

unbuntu中搭建hadoop环境的用户名;接下来设置advanced parameter,里面主要注意的是 hadoop.tmp.dir(要与配置文件中的临时

目录一致) 和 hadoop.job.ugi(hadoop环境的用户名和组名 在这里就是 matt ,matt)这个变量名可能在刚开始时不存在,没有关系

先配置好其他的,确认保存。这时打开project Explorer就可以看到DFS Location了

如果在第一次没有hadoop.job.ugi变量的配置时在/hadoop/mapred/system下你是没有查看权限的 也就是查看不

到/matt/HadoopInstall/tmp这个目录,也不能进行删除文件 *** 作,这时再打开advanced parameter,将值配置为上面提到的对应值就

好了(matt,matt);到这里整个配置部分就ok了;

5、运行第一个程序wordcount

在 project Explorer中右键->new ->mapreduce project 然后点击 configure Hadoop install directory 浏览到 hadoop0.20.2文件夹

下,这样project就会自动把hadoop下的jar包导入到工程,然后把hadoop自带的wordcount源码复制到project src目录下(注意包名要

一致)然后右键 Run As ->Run configuration ,d出配置窗口单击左边的javap Application 选择WordCount程序,然后在右侧的

Arguments Program arguments 中配置运行参数(hdfs://tiger:9000/user/matt/input hdfs://tiger:9000/user/matt/output 分别对应程

序输入目录和输出目录)点击apply,然后再在wordcount上右键 ->run on hadoop 程序就能运行并在eclipse中打印日志信息了。

eclipse中调试Hadoop2.2.0的程序的方法:

本地程序要check hadoop运行的环境:

private static String checkHadoopHome() {

// first check the Dflag hadoop.home.dir with JVM scope

//System.setProperty("hadoop.home.dir", "...")

String home = System.getProperty("hadoop.home.dir")

// fall back to the system/user-global env variable

if (home == null) {

home = System.getenv("HADOOP_HOME")

}

try {

// couldn't find either setting for hadoop's home directory

if (home == null) {

throw new IOException("HADOOP_HOME or hadoop.home.dir are not set.")

}

if (home.startsWith("\"") &&home.endsWith("\"")) {

home = home.substring(1, home.length()-1)

}

// check that the home setting is actually a directory that exists

File homedir = new File(home)

if (!homedir.isAbsolute() || !homedir.exists() || !homedir.isDirectory()) {

throw new IOException("Hadoop home directory " + homedir

+ " does not exist, is not a directory, or is not an absolute path.")

}

home = homedir.getCanonicalPath()

} catch (IOException ioe) {

if (LOG.isDebugEnabled()) {

LOG.debug("Failed to detect a valid hadoop home directory", ioe)

}

home = null

}

//固定本机的hadoop地址

home="D:\\hadoop-2.2.0"

return home

}

2、点击run as就可以直接调试了 。

(1)首先将好的Hadoop源码解压,将解压后顶级目录和lib中的压缩文件加载到你的工程中(他们包括了hadoop源码和一些需要的第三方源码),然后就可以编写hadoop程序了。

(2)编写好hadoop程序,调试没有错误后,就可以通过(jar -cvf yourname.jar -C bin/ .),将工程中bin目录下编译好的.class文件打包成你想要的.jar压缩文件包。

(3)将yourname.jar压缩包复制到你的hadoop目录下,通过命令hadoop jar yourname.jar yourMainClass /data/inputfile /data/outputfile。如果是在完全分布式的hadoop配置环境下,需要通过hadoop命令在hadoop的hdfs系统中创建文件目录然后将本地的输入数据复制到hdfs系统中,命令有:

hadoop fs -mkdir data:创建一个名问data的文件夹

hadoop fs -ls :查看hdfs文件系统中的文件目录

hadoop fs -copyFromLocal /data/input /user/data :将本地文件input复制到hdfs系统的/user/data目录下

hadoop fs -copyToLocal /user/data/output/ /data/ :将hdfs系统中的output文件夹复制到本地系统中。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12087716.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存