环境

Windows 7 64bit

JDK 1.6.0_45  (i586)

JDK 1.7.0_51  (i586)

Eclipse Kepler

Eclipse -plugin-1.2.1.jar

Hadoop 1.2.1 (32位的库)

服务器 hadoop与 本机的hadoop版本完全一致。

Note:我设置的Hadoop Master的 用户名是 root

正确配置

本机不需要 改windows用户名

 
JDK编译器 1.6 和 1.7 应该都行。1.7目前没试过,推荐有兴趣的人试试,不一定要按网上博客所说的配置
 
core-site.xml
这个设置 就是 data 和 name所在的位置
 
<property>

<name>hadoop.tmp.dir</name>
<value>/home/tmp</value>
<description>A base for other temporary directories.</description>
</property>
 
注意:Hadoop的Eclipse插件的 设置界面的 用户名要改成root,也就是 集群的用户名
 
我曾经尝试在 hdfs-site.xml中
配置
<name>dfs.namenode.name.dir</name>
<name>dfs.datanode.data.dir</name>
无效,不知为何。
 
hdfs-site.xml似乎不需要设置 datanode 和 namenode。
 
 
第一次运行出错
12/04/24 15:32:44 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 
12/04/24 15:32:44 ERROR security.UserGroupInformation: PriviledgedActionException as:dell cause:java.io.IOException: Failed to set permissions of path: \tmp\hadoop-root\mapred\staging\root-519341271\.staging to 0700 
Exception in thread "main" java.io.IOException: Failed to set permissions of path: \tmp\hadoop-root\mapred\staging\root-519341271\.staging to 0700
 
1.在解决问题的过程中 我尝试改过 /home/tmp的权限
chmod -R 777 tmp
这样导致 datanode 无法启动。
 
最后还原成  drwxr-xr-x 就好了。所以 这个目录权限不要修改。
 
2.在 Map/Reduce程序 中我加入了三行
		Configuration conf = new Configuration();
//conf.set("dfs.permissions", "false");
//conf.set("hadoop.job.user", "root");
//conf.set("mapred.job.tracker", "xxx.xxx.xxx:9001");
结果出现:
 
14/12/11 12:21:45 INFO mapred.JobClient: Task Id : attempt_201412101152_0004_m_000000_0, Status : FAILED
java.lang.RuntimeException: java.lang.ClassNotFoundException: wdc.WordCount$TokenizerMapper
 at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:857)
 at org.apache.hadoop.mapreduce.JobContext.getMapperClass(JobContext.java:199)
 at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:718)
 at org.apache.hadoop.mapred.MapTask.run(MapTask.java:364)
 at org.apache.hadoop.mapred.Child$4.run(Child.java:255)
 at java.security.AccessController.doPrivileged(Native Method)
 at javax.security.auth.Subject.doAs(Subject.java:396)
 at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1190)
 
研究了一晚上,无解。
但是 此时我 怀疑过 JDK 1.7是不是不行,
于是把Eclipse 的JDK 按照网上大神的博客改成 1.6问题依旧。
 
Google了一晚上,网上有人说it is because the permission,又没具体说怎么解决。
我又怀疑是 Windows 用户名 没有改成root,但是倔强的本人始终不愿意改。
 
研究过程中 我在core-site.xml中加入
<property>  

  <name>dfs.permissions</name>
<value>false</value> <description>
If "true", enable permission checking in HDFS. If "false", permission checking is turned off ,but all other behavior is unchanged. Switching from one parameter value to the other does not change the mode, owner or group of files or directories
</description> </property>
 
依然不行。但是这个改动 解决了一个 小问题,Eclipse插件不能创建目录和上传文件的问题。
 
那么又来改 hadoop fs -chmod -R 777 /user
改了之后 仍然不行。
 
难道一定要改用户名?
那么 我创建了一个 名为root的用户,运行Map/Reduce程序后出现
 
 
org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。

百度了一下,这是 hadoop-core-1.2.1.jar的问题 Windows下 和 linux用户权限不一致的问题。在linux下没有这个问题。

那么把 hadoop-1.2.1/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue方法,注释掉重新编译即可

private staticvoid checkReturnValue(boolean rv, File p,

FsPermission permission) throws IOException {

// if (!rv){

// throw newIOException("Failed to set permissions of path: " + p +

// " to" +

//String.format("%04o", permission.toShort()));

// }

}

我懒得编译这个hadoop-core-1.2.1.jar于是百度 搜了一个 放在本地 hadoop的根目录下。

这时候 我偶然去掉了 那三行。后 突然就正常了。
经过不断尝试 发现
 
java.lang.RuntimeException: java.lang.ClassNotFoundException: 包名.WordCount$TokenizerMapper
 

这个问题是

 
conf.set("mapred.job.tracker", "x.x.x.x:9001"); 这句导致的。另外的两句无影响。
 
去掉之后出现org.apache.hadoop.security.AccessControlException:Permission denied:user=Administrator,access=WRITE,inode="tmp":root:supergroup:rwxr-xr-x 。

这个错误在之前就见过。说明 之前改的 dfs.permission 无效,而真正的解决方法是 重新编译 hadoop-core-1.2.1.jar

那么 我又 切换到 Win7的 自己的账号下,依然可以运行 成功。

证明 不需要改Win7的用户名。

 
问题终于解决
 

windows下Eclipse远程连接linux hadoop远程调试 经验(一)的更多相关文章

  1. Windows下fabric sdk连接Linux上fabric网络的调试过程

    上个月刚入职一家公司从事区块链研发工作,选型采用Hyperledger Fabric作为开发平台.团队的小组成员全部采用的是在VirtualBox上面安装桌面版的Ubuntu 16.04虚拟机,开发工 ...

  2. 在Windows下使用Navicat连接Linux下的MySql

    Linux下的Mysql安装可以参考菜鸟教程:https://www.runoob.com/mysql/mysql-install.html 安装完成后你会发现用Navicat链接MySql会失败,这 ...

  3. windows下eclipse远程连接hadoop集群开发mapreduce

    转载请注明出处,谢谢 2017-10-22 17:14:09  之前都是用python开发maprduce程序的,今天试了在windows下通过eclipse java开发,在开发前先搭建开发环境.在 ...

  4. windows下使用vnc viewer远程连接Linux桌面(转)

    在windows下使用vnc viewer远程连接Linux桌面,主要配置步骤: Linux: 1.rpm -qa vnc //查看是否安装vnc服务,如果没有安装,可以使用yum,或者rpm进行安装 ...

  5. Windows远程连接Linux

    目录 xrdp方式 vnc方式 xrdp方式 ----------------------------------------------------------------------------- ...

  6. windows远程连接Linux(Ubuntu)的方法

    需要做的工作: 1.在Linux(Ubuntu)端安装.设置好SSH 2.下载putty,并通过putty的SSH连接登录Linux 一 .如何在Linux(Ubuntu)端安装.设置好SSH,获取I ...

  7. 虚拟机VMware网络类型&&SSH远程连接Linux

    前言: Linux专题是16年11月开始写,说来惭愧,已经5个月没学Linux,至今感觉连入门还没达到.暑假实习有投运维开发岗位,无奈对Linux不熟悉,校招简历也被刷了.so, 我打算先花1个月内的 ...

  8. Sublime 远程连接 Linux服务器

    Sublime是一款强大的编辑器,它的强大体现在它强大的插件. 要实现Sublime 远程连接 Linux服务器,需要使用插件SFTP. 一. 插件安装 用Package Control安装插件按下C ...

  9. Android源码浅析(六)——SecureCRT远程连接Linux,配置端点和字节码

    Android源码浅析(六)--SecureCRT远程连接Linux,配置端点和字节码 需要编译源码的同学,一般都是win+虚拟机吧,但是再虚拟机里体验并不是很好,所有市面上有很多的软件能够做到在wi ...

随机推荐

  1. Unity-遇到的问题小总结

    1. event trigger后面显示不了对应的方法 原因:我是直接把脚本拖拽进去的,这是没有实例化的,拖拽进去的应该是挂载这个脚本的GameObject就可以了 2.制作prefeb 将场景中的单 ...

  2. CentOS6.x环境通过yum命令在线安装或重装zookeeper-server

    一.环境描述: 在CentOS6.x系统环境下,使用yum命令的形式安装zookeeper-server,由于我这里是重新安装zookeeper-server,所以在正式开始之前我需要将原本的zook ...

  3. python-电脑结构、网络基础、单位转换

    目录 一.计算机五大部件 二.程序运行的过程 三.ARP协议 四.单位转换 一.计算机五大部件 电脑之父——冯·诺伊曼提出了计算机的五大部件:输入设备.输出设备.存储器.运算器和控制器. 我们把键盘和 ...

  4. 阿里云服务器CentOS6.9 tomcat配置域名访问

    之前一直是ip访问项目,今天申请到一个测试域名,想要用设置用域名访问项目. 1.进入阿里云服务器中,修改tomcat中server.xml文件 cd /usr/local/apache-tomcat/ ...

  5. .Net Core 商城微服务项目系列(十):使用SkyWalking构建调用链监控(2019-02-13 13:25)

    SkyWalking的安装和简单使用已经在前面一篇介绍过了,本篇我们将在商城中添加SkyWalking构建调用链监控. 顺带一下怎么把ES设置为Windows服务,cd到ES的bin文件夹,运行ela ...

  6. C# 服务里面调用Python.exe 来执行python文件

    问题描述:在WCF服务里面通过调用python.exe来执行py文件,像下面这样py文件路径+参数,用空格隔开.会出现调用结果为空的现象 System.Diagnostics.ProcessStart ...

  7. 一文读懂Java GC原理和调优

    概述 本文介绍GC基础原理和理论,GC调优方法思路和方法,基于Hotspot jdk1.8,学习之后将了解如何对生产系统出现的GC问题进行排查解决 阅读时长约30分钟,内容主要如下: GC基础原理,涉 ...

  8. 【CJOJ】为了博多

    Description 做了个噩梦,梦见我的 n 把刀到60级会二次变身,变成一个 对推6图有xi点贡献,刷大阪城有yi点贡献 的刀,于是要把刀分成两队一队刷大阪城另一队推6图 . 但是有m对兄弟刀在 ...

  9. mac安装flask

    1.1使用虚拟环境 输入以下命令可以检查系统是否安装了 virtualenv: $ virtualenv --version 大多数 Linux 发行版都提供了 virtualenv 包.例如,Ubu ...

  10. Angry Words 愤怒的话

    _ Words said in anger are like scars left by nails in a fence. Even though you can pull all the nail ...