学习MapReduce遇到的一些小问题和解决办法记录

说明:以下问题均在windows下连接Linux操作hadoop时出现,其中几个问题在Linux下面都不叫问题。


  • 提交mapreduce作业的时候报错:未定义的类

    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Apps
    

    解决方法:

    从java.lang.NoClassDefFoundError: org/apache/hadoop/yarn/util/Apps可以知道是Yarn的jar包没有找到。

    于是,直接去linux上面把hadoop-2.7.3/share/hadoop/yarn文件夹里面的东西打包发到win上,再导入项目里面OK。

  • 提交mapreduce作业的时候报错:没有写入权限

    org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security .AccessControlException: Permission denied: user=Answer, access=WRITE, inode="hadoop": hadoop:supergroup:rwxr-xr-x
    

    解决方法:

    在hdfs上给输出文件夹加写入权限。

    或者,在win的环境变量里加HADOOP_USER_NAME变量,值为linux上安装hadoop的用户名。

    这里有详细的讲解:http://www.huqiwen.com/2013/07/18/hdfs-permission-denied/

  • 提交mapreduce作业的时候报错:WCReducer$WCMappe没有init方法

    java.lang.Exception: java.lang.RuntimeException: java.lang.NoSuchMethodException: com.company.WCReducer$WCMapper.<init>()
    

    解决方法:

    参照stackoverflowd 方法在这两个类里面加上默认构造函数,也行不通。

    最后直接把这两个类写成内部类就可以了。

坚持原创技术分享,您的支持将鼓励我继续创作!