Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
未能检测到有效的hadoop主目录_Hadoop_Hdfs - Fatal编程技术网

未能检测到有效的hadoop主目录

未能检测到有效的hadoop主目录,hadoop,hdfs,Hadoop,Hdfs,我已经设置了Hadoop 2.2.0单节点并启动了它。我可以在http://localhost:50070/ 然后,我尝试使用以下代码编写一个虚拟文件 public class Test { public void write(File file) throws IOException{ FileSystem fs = FileSystem.get(new Configuration()); Path outFile = new Path("test.jpg");

我已经设置了Hadoop 2.2.0单节点并启动了它。我可以在
http://localhost:50070/
然后,我尝试使用以下代码编写一个虚拟文件

public class Test {
public void write(File file) throws IOException{
    FileSystem fs = FileSystem.get(new Configuration());
    Path outFile = new Path("test.jpg");       
    FSDataOutputStream out = fs.create(outFile);        

}    
我得到以下例外

INFO:   DEBUG - field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginSuccess with annotation @org.apache.hadoop.metrics2.annotation.Metric(valueName=Time, value=[Rate of successful kerberos logins and latency (milliseconds)], about=, type=DEFAULT, always=false, sampleName=Ops)
    INFO:   DEBUG - field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginFailure with annotation @org.apache.hadoop.metrics2.annotation.Metric(valueName=Time, value=[Rate of failed kerberos logins and latency (milliseconds)], about=, type=DEFAULT, always=false, sampleName=Ops)
    INFO:   DEBUG - UgiMetrics, User and group related metrics
    INFO:   DEBUG -  Creating new Groups object
    INFO:   DEBUG - Trying to load the custom-built native-hadoop library...
    INFO:   DEBUG - Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: no hadoop in java.library.path
    INFO:   DEBUG - java.library.path=/usr/lib/jvm/jdk1.7.0/jre/lib/amd64:/usr/lib/jvm/jdk1.7.0/jre/lib/i386::/usr/java/packages/lib/i386:/lib:/usr/lib
    INFO:   WARN - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    INFO:   DEBUG - Falling back to shell based
    INFO:   DEBUG - Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping
    INFO:   DEBUG - Group mapping impl=org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback; cacheTimeout=300000
    INFO:   DEBUG - hadoop login
    INFO:   DEBUG - hadoop login commit
    INFO:   DEBUG - using local user:UnixPrincipal: qualebs
    INFO:   DEBUG - UGI loginUser:qualebs (auth:SIMPLE)
    INFO:   DEBUG - Failed to detect a valid hadoop home directory
    java.io.IOException: HADOOP_HOME or hadoop.home.dir are not set.
        at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:225)
        at org.apache.hadoop.util.Shell.<clinit>(Shell.java:250)
        at 
    org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639)
        at org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:468)
        at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
        at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:905)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:886)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:783)
        at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:772)
        at com.qualebs.managers.HadoopDFS.writer(HadoopDFS.java:41)
INFO:DEBUG-field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginsaccess with annotation@org.apache.hadoop.metrics2.annotation.metrics(valueName=Time,value=[kerberos成功登录率和延迟(毫秒)],about=,type=DEFAULT,always=false,sampleName=Ops)
信息:DEBUG-field org.apache.hadoop.metrics2.lib.MutableRate org.apache.hadoop.security.UserGroupInformation$UgiMetrics.loginFailure with annotation@org.apache.hadoop.metrics2.annotation.Metric(valueName=Time,value=[kerberos登录失败率和延迟(毫秒)],about=,type=DEFAULT,always=false,sampleName=Ops)
信息:调试指标、用户和组相关指标
信息:调试-创建新的组对象
信息:调试-正在尝试加载自定义的本机hadoop库。。。
信息:调试-未能加载本机hadoop,错误为:java.lang.UnsatifiedLink错误:java.library.path中没有hadoop
信息:DEBUG-java.library.path=/usr/lib/jvm/jdk1.7.0/jre/lib/amd64:/usr/lib/jvm/jdk1.7.0/jre/lib/i386::/usr/java/packages/lib/i386:/lib:/usr/lib
信息:警告-无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
信息:调试-返回到基于shell的
信息:DEBUG-Group-mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping
信息:DEBUG-Group-mapping impl=org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback;缓存超时=300000
信息:调试-hadoop登录
信息:调试-hadoop登录提交
信息:调试-使用本地用户:UnixPrincipal:qualebs
信息:调试-UGI登录用户:qualebs(身份验证:简单)
信息:调试-未能检测到有效的hadoop主目录
java.io.IOException:未设置HADOOP_HOME或HADOOP.HOME.dir。
位于org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:225)
位于org.apache.hadoop.util.Shell(Shell.java:250)
在
org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:639)
位于org.apache.hadoop.fs.FilterFileSystem.setPermission(FilterFileSystem.java:468)
位于org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:456)
位于org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:424)
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:905)
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:886)
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:783)
位于org.apache.hadoop.fs.FileSystem.create(FileSystem.java:772)
位于com.qualebs.managers.HadoopDFS.writer(HadoopDFS.java:41)
在哪里设置HADOOP\u HOME或HADOOP.HOME.dir? 操作系统是Ubuntu 11.10

我配置的唯一配置文件是以下添加了属性的文件

  • core-site.xml
  • 
    fs.default.name
    hdfs://localhost:9000
    
  • hdfs-site.xml
  • 
    dfs.replication
    1.
    
  • mapred-site.xml.template
  • 
    mapred.job.tracker
    本地主机:9001
    

    热切等待您的回复。

    如果您没有使用hadoop专用用户,请将其添加到终端bash文件中

    1. start terminal
    2. sudo vi .bashrc
    3. export HADOOP_HOME=YOUR_HADOOP_HOME_DIRECTORY(don't include bin folder)
    4. save
    5. restart terminal and check it if it's saved by typing : echo $HADOOP_HOME
    

    我通过这样做找到了解决方案:

    System.setProperty("hadoop.home.dir", "/");
    
    此异常是在
    org.apache.hadoop.util.Shell中引发的


    希望有帮助

    我从某个地方得到了同样的错误信息,我认为这与路径无关。我的记录器设置不正确:

    导致错误的原因是:

    import org.apache.log4j._
    
    trait Logger {
      val logger = LogManager.getRootLogger
    }
    
    修正了它:

    import org.apache.log4j._
    
    trait Logger {
      val logger = LogManager.getRootLogger
      logger.setLevel(Level.INFO)
    }
    

    解决方案可能根本不在于更改路径。

    此设置在Windows上不起作用。解决方法是在项目上创建文件夹(例如winutils/bin)并将winutils.exe放在其中(请参阅)。然后在Java代码中添加

    static {
        String OS = System.getProperty("os.name").toLowerCase();
    
        if (OS.contains("win")) {
          System.setProperty("hadoop.home.dir", Paths.get("winutils").toAbsolutePath().toString());
        } else {
          System.setProperty("hadoop.home.dir", "/");
        }
      }
    

    我希望它能有所帮助。

    我已经添加了它,但仍然得到相同的例外。我还尝试为hadoop创建一个专用用户帐户,重复安装,并在安装目录中成功运行了一些示例。唯一的问题是我无法在netbeans中从jsp web应用程序编写文件。我哪里出错了?你能用当前的问题编辑这篇文章吗?没有任何变化,问题仍然是这样。hadoop主目录是hadoop文件系统中的主目录还是包含未压缩hadoop tar文件的目录?当我
    echo$HADOOP\u HOME
    时,输出是
    /usr/local/HADOOP
    。您得到了正确的值。我不知道为什么它不起作用。但我可以告诉你一个窍门。下载hadoop核心jar并将其放置在类路径中。然后运行应用程序。你试过了吗?你能给我看一下完整的跟踪吗?@Tariq很抱歉反应太晚了,我的问题现在已经解决了,请阅读你对这个问题的回答www.stackoverflow.com/questions/16000840显然,在将资源添加到配置之前,我正在调用
    FileSystem.get(new Configuration())
    。没问题。很高兴你能让它工作:)@Tariq如果可能的话,你能告诉我一个很好的教程,关于如何将一个像图像或视频这样的文件从网页上传到hadoop文件系统,以及如何在网站前端JSP页面上显示这个文件。很抱歉,我看不出这两种解决方案之间的区别。我遗漏了什么吗?@CamiloSampedro抱歉,我已经更新了解决方案。我忘记了我使用的另一种解决方案:(降低日志级别只会隐藏错误,而不会解决它
    import org.apache.log4j._
    
    trait Logger {
      val logger = LogManager.getRootLogger
    }
    
    import org.apache.log4j._
    
    trait Logger {
      val logger = LogManager.getRootLogger
      logger.setLevel(Level.INFO)
    }
    
    static {
        String OS = System.getProperty("os.name").toLowerCase();
    
        if (OS.contains("win")) {
          System.setProperty("hadoop.home.dir", Paths.get("winutils").toAbsolutePath().toString());
        } else {
          System.setProperty("hadoop.home.dir", "/");
        }
      }