一、设置Eclipse运行用户
    如果以与Hadoop运行用户名(比如grid)不同的用户运行Eclipse,则无法对Hadoop运行用户所属的文件进行管理,运行Map/Reduce程序也会报“org.apache.hadoop.security.AccessControlException:Permission denied”错误。

 
1、新建Windows用户grid,密码是grid
在Powershell中运行:
#Windows命令提示符下创建用户,并设置密码永不过期 http://zhcxl.blog.51cto.com/211202/841964
net user grid grid /add /comment:"模拟Hadoop运行用户" /passwordchg:no
 
#将用户密码配置为永不过期 http://technet.microsoft.com/zh-cn/library/hh967633.aspx
cmd /c "wmic.exe Path Win32_UserAccount Where Name=""grid"" Set PasswordExpires=""FALSE"" "

 
 
2、以用户grid运行eclipse
(1)、临时方法:
按住Shift键再右击eclipse.exe程序,会出现“以其他用户身份运行”选项,点击之。
 
输入用户名和密码,点击“确定”
 
(2)、永久方法:
在Eclipse根目录下新建一个grid-eclipse.bat文件,内容为
runas /user:grid /savecred %~dp0\eclipse.exe

以后就运行这个脚本来启动eclipse。
只有第一次运行时需要输入密码,以后就不用了。
 
 
 
二、重编译Hadoop安装目录中的hadoop-core-*.jar
不修改的话运行Map/Reduce程序会报“ERROR security.UserGroupInformation: PriviledgedActionException ”错误

方法A:修改FileUtil权限控制源码并重新编译
1、在Linux平台上重新编译Hadoop项目
##下载解压Ant
cd /usr/local/src
wget -nc http://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.9.2-bin.tar.gz
tar -zxvf apache-ant-[0-9]*-bin.tar.gz
 
mv apache-ant-[0-9]*[^z] /usr/local/apache-ant
chown -R grid:grid /usr/local/apache-ant

##解压一份Hadoop用于编译
cd /usr/local/src
tar -zxf hadoop-[0-9]*[0-9].tar.gz
mv hadoop-[0-9]*[0-9] hadoop_for_build
chown -R grid:grid /usr/local/src/hadoop_for_build

##修改FileUtil.java注释掉checkReturnValue的判断
cd /usr/local/src/hadoop_for_build
cp -n -p src/core/org/apache/hadoop/fs/FileUtil.java src/core/org/apache/hadoop/fs/FileUtil.java.save

sed -i '/private static void checkReturnValue/,/private static void execSetPermission/s/!rv/1!=1/' \
src/core/org/apache/hadoop/fs/FileUtil.java

##获得Hadoop版本
HADOOP_VERSION=`grep "Release" CHANGES.txt | sed 1q | awk '{print $2}'`

##备份hadoop-core-*.jar包,以后会被Eclipse的Map/Reduce程序覆盖
cp -p hadoop-core-$HADOOP_VERSION.jar hadoop-core-$HADOOP_VERSION.jar.bak

##修改源码编译的版本,默认是带SNAPSHOT的
sed -i 's@\(<property name="version" value="\)1.2.2-SNAPSHOT\("/>\)@\1'"$HADOOP_VERSION"'\2@' \
build.xml

 
##使用Ant重新编译hadoop的jar包
cd /usr/local/src/hadoop_for_build
time /usr/local/apache-ant/bin/ant 1> /tmp/ant.log
 
 
##检查编译结果
cat /tmp/ant.log | grep error
tail -n10 /tmp/ant.log
rm -f /tmp/ant.log

ls build

 
2、将Linux上编译出来hadoop-core重命名并覆盖Windows上Hadoop安装目录中的hadoop-core-*.jar


方法B:设置dfs.permissions参数为False
1、在所有节点上运行以下命令:
grep -q "dfs.permissions" $HADOOP_CONF_DIR/hdfs-site.xml
sed -i '/<\/configuration>/i\
<property>\
<name>dfs.permissions</name>\
<value>false</value>\
</property>\
' \
$HADOOP_CONF_DIR/hdfs-site.xml


 
 
三、加载插件,打开Map/Reduce Perspective
 
 
 
四、设置Hadoop安装目录
 
 
 
 
五、配置Map/Reduce Locations
 
选择Map/Reduce Perspective中下方的“Map/Reduce Location”
 
在空白处右击,选择“New Hadoop location...”
 
 
填写Location参数,点击“Finish”
 
 
 
六、检查配置
浏览左边的DFS Locations,尝试能否增删文件,确定权限是否正确。
 
参考资料:
Hadoop学习笔记(九):如何在windows上使用eclipse远程连接hadoop进行程序开发 http://www.cnblogs.com/beanmoon/archive/2013/01/05/2845579.html
 
 
 
 
 
 

使用Windows上Eclipse远程调试Linux上的Hadoop的更多相关文章

  1. 使用Windows上的Eclipse 远程调试 linux下的Tomcat

    1:修改Linux上Tomcat的catalina.sh,第一行添加declare -x CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_sock ...

  2. 使用xdebug+eclipse远程调试centOS7上的PHP代码

    这两天一直在研究PHP代码的调试,原来开发一直用的var_dump,麻烦! 最近发现能使用xdebug+eclipse远程单步调试PHP,但是百度后实现此技术的文章都写得不够具体. 我照着这里零散的文 ...

  3. windows下Eclipse远程连接linux hadoop远程调试 经验(一)

    环境 Windows 7 64bit JDK 1.6.0_45  (i586) JDK 1.7.0_51  (i586) Eclipse Kepler Eclipse -plugin-1.2.1.ja ...

  4. eclipse远程调试Linux环境下的web项目

    前提: 远程服务器上的代码和本地的代码同步 第一步 : 配置远程服务器下的startup.sh文件 在第一行添加 : declare -x CATALINA_OPTS="-server -X ...

  5. Eclipse远程调试+FTPClient在jdk6以上写法不兼容问题的排查

    业务场景: 应业务新需求的UAT测试,需要部署一份新tomcat到测试环境.新环境正常启动并运行了一天,没太大差错.但今天发现原本在另一个老的tomcat下运行的好好的FTP上传文件模块突然出了问题. ...

  6. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲

    来源于xuwanbest的博客   所谓"工欲善其事,必先利其器",好的工具确能起到事半工倍的作用.我用到的最多的就两个JConsole 和JProfiler .JConsole监 ...

  7. JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)

    JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core)     Apa ...

  8. Linux下使用Eclipse 远程调试

    1 开启端口 修改/apache-tomcat-7.0.40/bin/catalina.sh 在合适的位置(请自行判断,只要有JAVA_OPTS的设定前后即可)插入下面的设定:UI_DEBUG=&qu ...

  9. 远程调试 Azure 上的 Website

    让我们先检查一下使用的 Azure SDK 版本和 Visual Studio 版本.根据MSDN的介绍,Azure 的远程调试功能是在 Azure SDK 2.2 中加入的,所以请确保您的机器上安装 ...

随机推荐

  1. 整理Crontab 定时计划

    一. 什么是crontab? crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和 ...

  2. 【剑指Offer】36、两个链表的第一个公共结点

      题目描述:   输入两个链表,找出它们的第一个公共结点.   解题思路:   本题首先可以很直观的想到蛮力法,即对链表1(假设长度为m)的每一个结点,遍历链表2(假设长度为n),找有没有与其相同的 ...

  3. 通过JDBC取Oracle数据库的时间字段时,时间丢失,只剩日期

    通过JDBC连接Oracle数据库,在查询的时候发现时间字段取出来值后只剩下了日期,时间消失了.查资料发现跟Oracle jdbc驱动版本有关,这里先贴出解决方案: 修改数据库的连接方式: try { ...

  4. code runner运行终端的目录设置

    我的github:swarz,欢迎给老弟我++星星 该设置属性为 "code-runner.fileDirectoryAsCwd": true 设置为 true后,终端默认目录为运 ...

  5. CodeForces-999D Equalize the Remainders (贪心+神奇的STL)

    题意:给你一个n,m;其中n一定能被m整除,然后给你n个数 有一种操作   选择n个数中的任意一个,使其+1: 条件: Ci 属于[0,m-1]  Ci代表ai模m的余数为i的个数 且都等于n/m; ...

  6. 复习C语言基础知识(day02)

    一.大型软件组织 定义规则,规则就是协议.用户和中介的接口. 软件开发的过程: 定义规则,定义协议.软件为用户提供的功能. 在C语言中使用接口实现.接口就是函数. 两种用户 函数的使用者 函数的实现者 ...

  7. NEFU 115

    刚开始,做了水题 #include <iostream> #include <cstdio> #include <algorithm> using namespac ...

  8. 【翻译自mos文章】Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port?

    Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port? 来源于: How Does GoldenGate Allocates Por ...

  9. Java网页小程序——Java Applet

    Java Applet是编译过的Java程序,可以在所有支持Java的浏览器中运行. 1.Applet的使用 import java.applet.Applet; import java.awt.Gr ...

  10. Linux - shell壳脚本

    shell脚本. 壳,充当一个翻译,让计算机能够认识的二进制程序,并将结果翻译给我们. 加在内核上,可以跟内核打交道的壳. 可以通过/etc/shells 来查看. [root@local ~]# c ...