Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
试图连接到HDFS的Java抛出HADOOP\u HOME未设置,找不到winutils_Java_Hadoop_Hdfs - Fatal编程技术网

试图连接到HDFS的Java抛出HADOOP\u HOME未设置,找不到winutils

试图连接到HDFS的Java抛出HADOOP\u HOME未设置,找不到winutils,java,hadoop,hdfs,Java,Hadoop,Hdfs,我正在尝试一个应用程序原型,将Hadoop用作数据存储,但我在第一个障碍上就失败了。我已经访问了Hadoop集群,我从Spring中盗取了一个测试样本来尝试第一步: import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataInputStream; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs

我正在尝试一个应用程序原型,将Hadoop用作数据存储,但我在第一个障碍上就失败了。我已经访问了Hadoop集群,我从Spring中盗取了一个测试样本来尝试第一步:

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
import org.junit.jupiter.api.Test;
import java.io.PrintWriter;
import java.net.URI;
import java.util.Scanner;

public class HdfsTest {

    @Test
    public void testHdfs() throws Exception {    

        System.setProperty("HADOOP_USER_NAME", "adam");

        // Path that we need to create in HDFS.
        // Just like Unix/Linux file systems, HDFS file system starts with "/"
        final Path path = new Path("/usr/adam/junk.txt");

        // Uses try with resources in order to avoid close calls on resources
        // Creates anonymous sub class of DistributedFileSystem to allow calling
        // initialize as DFS will not be usable otherwise
        try (
                final DistributedFileSystem dFS
                        = new DistributedFileSystem() {
                    {
                        initialize(new URI(
                                "hdfs://hanameservice/user/adam"),
                                new Configuration());
                    }
                };
                // Gets output stream for input path using DFS instance
                final FSDataOutputStream streamWriter = dFS.create(path);
                // Wraps output stream into PrintWriter to use high level
                // and sophisticated methods
                final PrintWriter writer = new PrintWriter(streamWriter);
                ) {
            // Writes tutorials information to file using print writer
            writer.println("bungalow bill");
            writer.println("what did you kill");
            System.out.println("File Written to HDFS successfully!");
        }
    }
以下是我正在使用的Hadoop库:


org.apache.hadoop
hadoop hdfs
2.8.1
org.apache.hadoop
hadoop通用
2.8.1
我会错过一个依赖关系吗

这是带有错误的日志记录-似乎有两个单独的错误

2017-06-23 16:01:38.787  WARN   --- [           main] org.apache.hadoop.util.Shell             : Did not find winutils.exe: {}

java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems
    at org.apache.hadoop.util.Shell.fileNotFoundException(Shell.java:528)
    at org.apache.hadoop.util.Shell.getHadoopHomeDir(Shell.java:549)
    at org.apache.hadoop.util.Shell.getQualifiedBin(Shell.java:572)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:669)
    at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:79)
    at org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1445)
    at org.apache.hadoop.fs.FileSystem.initialize(FileSystem.java:221)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:145)
    at com.bp.gis.tardis.HdfsTest$1.<init>(HdfsTest.java:34)
    at com.bp.gis.tardis.HdfsTest.testHdfs(HdfsTest.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:316)
    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:114)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.lambda$invokeTestMethod$6(MethodTestDescriptor.java:171)
    at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.invokeTestMethod(MethodTestDescriptor.java:168)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:115)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:57)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:81)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:91)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:91)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:87)
    at org.junit.platform.launcher.Launcher.execute(Launcher.java:93)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.
    at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:448)
    at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:419)
    at org.apache.hadoop.util.Shell.<clinit>(Shell.java:496)
    ... 35 common frames omitted

2017-06-23 16:01:39.449  WARN   --- [           main] org.apache.hadoop.util.NativeCodeLoader  : Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

java.lang.IllegalArgumentException: java.net.UnknownHostException: hanameservice

    at org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:418)
    at org.apache.hadoop.hdfs.NameNodeProxiesClient.createProxyWithClientProtocol(NameNodeProxiesClient.java:130)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:343)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:287)
    at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:156)
    at com.bp.gis.tardis.HdfsTest$1.<init>(HdfsTest.java:34)
    at com.bp.gis.tardis.HdfsTest.testHdfs(HdfsTest.java:31)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:316)
    at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:114)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.lambda$invokeTestMethod$6(MethodTestDescriptor.java:171)
    at org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.invokeTestMethod(MethodTestDescriptor.java:168)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:115)
    at org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:57)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:81)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:91)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:91)
    at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:76)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:51)
    at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:87)
    at org.junit.platform.launcher.Launcher.execute(Launcher.java:93)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
Caused by: java.net.UnknownHostException: hanameservice
    ... 36 more
2017-06-23 16:01:38.787警告---[main]org.apache.hadoop.util.Shell:未找到winutils.exe:{}
java.io.FileNotFoundException:java.io.FileNotFoundException:HADOOP\u HOME和HADOOP.HOME.dir未设置-看见https://wiki.apache.org/hadoop/WindowsProblems
位于org.apache.hadoop.util.Shell.fileNotFoundException(Shell.java:528)
位于org.apache.hadoop.util.Shell.getHadoopHomeDir(Shell.java:549)
在org.apache.hadoop.util.Shell.getQualifiedBin(Shell.java:572)上
位于org.apache.hadoop.util.Shell(Shell.java:669)
位于org.apache.hadoop.util.StringUtils。(StringUtils.java:79)
位于org.apache.hadoop.conf.Configuration.getBoolean(Configuration.java:1445)
位于org.apache.hadoop.fs.FileSystem.initialize(FileSystem.java:221)
在org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:145)上
位于com.bp.gis.tardis.HdfsTest$1(HdfsTest.java:34)
位于com.bp.gis.tardis.HdfsTest.testHdfs(HdfsTest.java:31)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:498)
位于org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:316)
位于org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:114)
位于org.junit.jupiter.engine.descriptor.MethodTestDescriptor.lambda$invokeTestMethod$6(MethodTestDescriptor.java:171)
位于org.junit.jupiter.engine.execution.ThrowableCollector.execute(ThrowableCollector.java:40)
位于org.junit.jupiter.engine.descriptor.MethodTestDescriptor.invokeTestMethod(MethodTestDescriptor.java:168)
位于org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:115)
位于org.junit.jupiter.engine.descriptor.MethodTestDescriptor.execute(MethodTestDescriptor.java:57)
位于org.junit.platform.engine.support.HierarchicalTestExecutor.lambda$execute$1(HierarchicalTestExecutor.java:81)
位于org.junit.platform.engine.support.hierarchy.SingleTestExecutor.ExecuteSafley(SingleTestExecutor.java:66)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.execute(HierarchycalTestExecutor.java:76)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.lambda$execute$1(HierarchycalTestExecutor.java:91)
位于org.junit.platform.engine.support.hierarchy.SingleTestExecutor.ExecuteSafley(SingleTestExecutor.java:66)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.execute(HierarchycalTestExecutor.java:76)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.lambda$execute$1(HierarchycalTestExecutor.java:91)
位于org.junit.platform.engine.support.hierarchy.SingleTestExecutor.ExecuteSafley(SingleTestExecutor.java:66)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.execute(HierarchycalTestExecutor.java:76)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestExecutor.execute(HierarchycalTestExecutor.java:51)
位于org.junit.platform.engine.support.hierarchy.HierarchycalTestEngine.execute(hierarchycalTestEngine.java:43)
位于org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:137)
位于org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:87)
位于org.junit.platform.launcher.launcher.execute(launcher.java:93)
位于com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:61)
位于com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51)
位于com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
位于com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)
原因:java.io.FileNotFoundException:HADOOP_HOME和HADOOP.HOME.dir未设置。
位于org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:448)
位于org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:419)
位于org.apache.hadoop.util.Shell(Shell.java:496)
... 省略35个公共框架
2017-06-23 16:01:39.449警告---[main]org.apache.hadoop.util.NativeCodeLoader:无法为您的平台加载本机hadoop库。。。在适用的情况下使用内置java类
java.lang.IllegalArgumentException:java.net.UnknownHostException:hanameservice
位于org.apache.hadoop.security.SecurityUtil.buildTokenService(SecurityUtil.java:418)
位于org.apache.hadoop.hdfs.NameNodeProxiesClient.createProxyWithClientProtocol(NameNodeProxiesClient.java:130)
位于org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:343)
位于org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:287)
在org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:156)上
位于com.bp.gis.tardis.HdfsTest$1(HdfsTest.java:34)
位于com.bp.gis.tardis.HdfsTest.testHdfs(HdfsTest.java:31)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
在java.lang.re