Mac OS上配置hadoop eclipse 调试环境

1. 配置Hadoop
将下载的Hadoop压缩文件解压缩,找到conf目录,打开core-site.xml,修改代码如下所示:

Xml代码   收藏代码
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.     <property>  
  8.         <name>fs.default.name</name>  
  9.         <value>localhost:9000</value>  
  10.     </property>  
  11. </configuration>  



找到mapred-site.xml修改代码如下所示:

Xml代码   收藏代码
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.   <property>  
  8.     <name>mapred.job.tracker</name>  
  9.     <value>localhost:9001</value>  
  10.   </property>  
  11. </configuration>  



找到hdfs-site.xml修改代码如下所示:

Xml代码   收藏代码
  1. <?xml version="1.0"?>  
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>  
  3.   
  4. <!-- Put site-specific property overrides in this file. -->  
  5.   
  6. <configuration>  
  7.   <property>  
  8.     <name>dfs.replication</name>  
  9.     <value>1</value>  
  10.   </property>  
  11. </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

  这时开始编译。

  1. jar: 
  2.      [echo] version:1.0.3 
  3.      [copy] Copying 1 file to D:\hadoop-1.0.3\build\contrib\eclipse-plugin\lib 
  4.      [copy] Copying D:\hadoop-1.0.3\build\ivy\lib\Hadoop\common\commons-cli-1.2. 
  5. jar to D:\hadoop-1.0.3\build\contrib\eclipse-plugin\lib\commons-cli-1.2.jar 
  6.       [jar] Building jar: D:\hadoop-1.0.3\build\contrib\eclipse-plugin\hadoop-ec 
  7. lipse-plugin-1.0.3.jar 
  8.  
  9. BUILD SUCCESSFUL 
  10. 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代码   收藏代码
  1. package cn.com.fri;  
  2.   
  3. import java.io.FileNotFoundException;  
  4. import java.io.IOException;  
  5. import java.net.URISyntaxException;  
  6.   
  7. import org.apache.hadoop.fs.FSDataInputStream;  
  8. import org.apache.hadoop.fs.FileContext;  
  9. import org.apache.hadoop.fs.Path;  
  10. import org.apache.hadoop.io.IOUtils;  
  11. import org.apache.hadoop.security.AccessControlException;  
  12.   
  13. public class Test {  
  14.     public static void main(String[] args) throws AccessControlException,  
  15.             FileNotFoundException, IOException, URISyntaxException {  
  16.         FileContext fc = FileContext  
  17.                 .getFileContext();//如果运行在hadoop location中,不需要配置URI,否则需要给一个URI  
  18.         FSDataInputStream fsInput = fc.open(new Path(  
  19.                 "/tmp/hadoop-alex/persons.rtf"));  
  20.         IOUtils.copyBytes(fsInput, System.out, 4090false);  
  21.         fsInput.seek(0);  
  22.         IOUtils.copyBytes(fsInput, System.out, 4090false);  
  23.     }  
  24. }  


然后右键->Run As->Run on hadoop,此时会让你选择一个location,就选中我们刚才新建的location即可。

猜你喜欢

转载自llystar.iteye.com/blog/1872151
今日推荐