分享

eclipse上运行简单hadoop2程序出错

fish_tx 发表于 2015-1-22 10:16:45 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 8 21063
程序:
package com.fish.first;

import java.net.URI;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

public class firstHadoop {
   
    private static String PATH = "hdfs://Hadoop2-Master:9000/";

    public static void main(String[] args) throws Exception {
        FileSystem fs = FileSystem.get(new URI(PATH), new Configuration());
        
        //浏览
        FileStatus[] status = fs.listStatus(new Path("/hmbbs_logs"));
        for (FileStatus l : status) {
            String isDir = l.isDirectory() ? "文件夹" : "文件";
            String permission = l.getPermission().toString();
            short replication = l.getReplication();
            long len = l.getLen();
            String path = l.getPath().toString();
            System.out.println(isDir+"\t"+permission+"\t"+replication+"\t"+len+"\t"+path);
        }
    }
}

错误信息:
2015-01-22 10:06:36,117 WARN  util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
2015-01-22 10:06:36,845 ERROR util.Shell (Shell.java:getWinUtilsPath(303)) - Failed to locate the winutils binary in the hadoop binary path
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
    at org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:278)
    at org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:300)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:293)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:76)
    at org.apache.hadoop.conf.Configuration.getTrimmedStrings(Configuration.java:1546)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:519)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:453)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:136)
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2433)
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:88)
    at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2467)
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2449)
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:367)
    at com.fish.first.firstHadoop.main(firstHadoop.java:15)
文件    rw-r--r--    2    61084192    hdfs://Hadoop2-Master:9000/hmbbs_logs/access_2013_05_30.log
文件    rw-r--r--    2    157069653    hdfs://Hadoop2-Master:9000/hmbbs_logs/access_2013_05_31.log

能得到结果:
文件    rw-r--r--    2    61084192    hdfs://Hadoop2-Master:9000/hmbbs_logs/access_2013_05_30.log
文件    rw-r--r--    2    157069653    hdfs://Hadoop2-Master:9000/hmbbs_logs/access_2013_05_31.log

请问有人解决过这种问题吗?我用的是hadoop2.2.0版。


已有(8)人评论

跳转到指定楼层
w123aw 发表于 2015-1-22 11:02:51
本帖最后由 w123aw 于 2015-1-22 11:04 编辑
参考这个帖子
windows通过hadoop-eclipse-plugin插件远程开发hadoop运行mapreduce遇到问题及解决



缺少hadoop.dll,以及winutils.exe
(1)缺少winutils.exe回报如下错误:
Could not locate executable null \bin\winutils.exe in the hadoop binaries






(2)缺少hadoop.dll
错误如下:
Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
解决办法:
1.首先将hadoop.dll放到hadoop的bin目录下,如下图所示



2.配置hadoop home及path

path,这里使用的是绝对路径,path里面配置的是hadoop的bin路径。配置完毕,切忌重启机器
如下图所示





包及插件的下载,可以在这里面找
hadoop家族、strom、spark、Linux、flume等jar包、安装包汇总下载(持续更新)
上面总结了我们开发环境中经常遇到的问题,上面问题打了预防针,我们后面在连接的时候,就会顺利多了。
上面主要讲的window远程连接集群,还有另外一种就是Linux连接集群,这个遇到的问题不多,后面也有所涉及
回复

使用道具 举报

wuyizuiyoucao 发表于 2015-1-22 13:16:56
lz的HADOOP_HOME没有配置吧,拿到的是null呢
回复

使用道具 举报

fish_tx 发表于 2015-1-23 15:14:43
回复

使用道具 举报

cochou 发表于 2015-1-23 15:59:36
回复

使用道具 举报

cochou 发表于 2015-1-23 16:00:17
回复

使用道具 举报

cochou 发表于 2015-1-23 16:01:14
回复

使用道具 举报

cochou 发表于 2015-1-23 16:02:00
回复

使用道具 举报

cochou 发表于 2015-1-23 16:14:27
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条