• 使用Windows上Eclipse远程调试Linux上的Hadoop


    一、设置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 %~dp0eclipse.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
     
     
     
     
     
     




  • 相关阅读:
    hdu1180奇怪的楼梯……bfs迷阵……wa该16二级,我太渣滓
    Android新闻案例clientserver达到,完全自己的新闻节目平台
    xcode代码统计行
    linux每个路由表的系统研究
    Oracle 学习笔记 18 -- 存储函数和存储过程(PL/SQL子程序)
    《网络编程》ioctl 操作
    Android framework召回(3)binder使用和IBinder BpRefbase IInterface INTERFACE 之间的关系
    使用关节型
    leetcode 218: The Skyline Problem
    删除依赖命令
  • 原文地址:https://www.cnblogs.com/han1988/p/3389882.html
Copyright © 2020-2023  润新知