Mac OS上配置hadoop eclipse 调试环境
1. 配置Hadoop将下载的Hadoop压缩文件解压缩,找到conf目录,打开core-site.xml,修改代码如下所示:
Xml代码
[*]<?xml version="1.0"?>
[*]<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
[*]
[*]<!-- Put site-specific property overrides in this file. -->
[*]
[*]<configuration>
[*] <property>
[*] <name>fs.default.name</name>
[*] <value>localhost:9000</value>
[*] </property>
[*]</configuration>
找到mapred-site.xml修改代码如下所示:
Xml代码
[*]<?xml version="1.0"?>
[*]<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
[*]
[*]<!-- Put site-specific property overrides in this file. -->
[*]
[*]<configuration>
[*] <property>
[*] <name>mapred.job.tracker</name>
[*] <value>localhost:9001</value>
[*] </property>
[*]</configuration>
找到hdfs-site.xml修改代码如下所示:
Xml代码
[*]<?xml version="1.0"?>
[*]<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
[*]
[*]<!-- Put site-specific property overrides in this file. -->
[*]
[*]<configuration>
[*] <property>
[*] <name>dfs.replication</name>
[*] <value>1</value>
[*] </property>
[*]</configuration>
找到hadoop-env.sh打开,加入以下配置
引用
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
export HADOOP_INSTALL=/Users/alex/Documents/DevRes/hadoop-version
export PATH=$PATH:$HADOOP_INSTALL/bin
其中,具体的目录根据你的实际情况配置。
2. 配置SSH
windows版本可安装openssh,本章主要介绍Mac OS,打开“系统偏好设置”,找到共享,勾选远程登录,如下图所示:
在terminal里面输入
ssh localhost
会有错误提示信息,表示当前用户没有权限。
输入
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
ssh-keygen表示生成秘钥;-t表示秘钥类型;-P用于提供密语;-f指定生成的秘钥文件。这个命令在”~/.ssh/“文件夹下创建两个文件id_dsa和id_dsa.pub,是ssh的一对儿私钥和公钥。接下来,将公钥追加到授权的key中去,输入:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
ssh免登陆设置完成。
3. 运行Hadoop
打开终端,定位到Hadoop目录输入以下命令:
bin/hadoop namenode -format
然后输入bin/start-all.sh
4. 检查启动
打开连接地址http://localhost:50070
如果找不到页面,请查看log日志(在hadoop目录中的log文件夹下),否则应当会看到以下页面:
然后再打开地址http://localhost:50030/
应当能看到以下页面(如果看不到,则证明你的jobtracker启动失败,请查看log):
至此,Hadoop配置成功。
5. Mac下编译hadoop eclipse plugin
进入%Hadoop_HOME%\src\contrib\
编辑build-contrib.xml
加入
<property name="version" value="1.0.3"/>
<property name="eclipse.home" location="D:/soft/eclipse-jee-indigo-SR1-win32/eclipse"/>
将%Hadoop_HOME%下的jar包拷到eclipse所在目录的plugins目录下,比如hadoop-core-*.jar
进入%Hadoop_HOME%\src\contrib\eclipse-plugin
编辑build.xml
在
<path id="eclipse-sdk-jars">
<fileset dir="${eclipse.home}/plugins/">
</fileset>
</path>
中加入
<include name="hadoop*.jar"/>
将compile模块中
deprecation="${javac.deprecation}
去掉。
打开CMD在%Hadoop_HOME%\src\contrib\eclipse-plugin下使用ant
这时开始编译。
[*]jar:
[*] version:1.0.3
[*] Copying 1 file to D:\hadoop-1.0.3\build\contrib\eclipse-plugin\lib
[*] Copying D:\hadoop-1.0.3\build\ivy\lib\Hadoop\common\commons-cli-1.2.
[*]jar to D:\hadoop-1.0.3\build\contrib\eclipse-plugin\lib\commons-cli-1.2.jar
[*] Building jar: D:\hadoop-1.0.3\build\contrib\eclipse-plugin\hadoop-ec
[*]lipse-plugin-1.0.3.jar
[*]
[*]BUILD SUCCESSFUL
[*]Total time: 2 seconds
注意,在编译的过程中可能会报错,主要出在jar时的copy问题上,把commons-cli-1.2.jar与拷到 %HADOOP_HOME%\build\ivy\lib\Hadoop\common\下,将hadoop-core-1.0.3.jar拷到%HADOOP_HOME%\build下即可。
编译成功后,会在 %Hadoop_Home%\build\contrib\eclipse-plugin\下生成hadoop-eclipse-plugin-1.0.3.jar。将其拷到eclipse所在目录的plugins目录下。
6. 配置Eclipse
将编译成功的eclipse-plugin复制到你的Eclipse的plugin文件夹中。
此时打开Eclipse,在Open Perspective中选择其它,找到Map/Reduce视图,打开它。
此时你会发现在Project Explorer和下面的视图中多了一个DFS Locations,右键新建Location如下图所示:
此时会打开一个窗口,对其进行配置,端口号就是我们刚才在core-site.xml中配置的端口好,既9000,如下图所示:
点击确定后即可在左边的Project Explorer面板中对DFS Location进行展开,如下图所示:
第六步:在Eclipse中写代码
在Map/Reduce视图中新建一个Map/Reduce项目(该项目与普通Java项目没什么区别),新建一个Java类,该类主要用于读取我们前面复制到HDFS中的那个文件内容:
Java代码
[*]package cn.com.fri;
[*]
[*]import java.io.FileNotFoundException;
[*]import java.io.IOException;
[*]import java.net.URISyntaxException;
[*]
[*]import org.apache.hadoop.fs.FSDataInputStream;
[*]import org.apache.hadoop.fs.FileContext;
[*]import org.apache.hadoop.fs.Path;
[*]import org.apache.hadoop.io.IOUtils;
[*]import org.apache.hadoop.security.AccessControlException;
[*]
[*]public class Test {
[*] public static void main(String[] args) throws AccessControlException,
[*] FileNotFoundException, IOException, URISyntaxException {
[*] FileContext fc = FileContext
[*] .getFileContext();//如果运行在hadoop location中,不需要配置URI,否则需要给一个URI
[*] FSDataInputStream fsInput = fc.open(new Path(
[*] "/tmp/hadoop-alex/persons.rtf"));
[*] IOUtils.copyBytes(fsInput, System.out, 4090, false);
[*] fsInput.seek(0);
[*] IOUtils.copyBytes(fsInput, System.out, 4090, false);
[*] }
[*]}
然后右键->Run As->Run on hadoop,此时会让你选择一个location,就选中我们刚才新建的location即可。
页:
[1]