在三台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文件夹复制到本地系统中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)