报错信息
java.lang.RuntimeException: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblemsat org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:737)at org.apache.hadoop.util.Shell.getSetPermissionCommand(Shell.java:272)at org.apache.hadoop.util.Shell.getSetPermissionCommand(Shell.java:288)at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:840)at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:239)at org.apache.hadoop.fs.RawLocalFileSystem$LocalFSFileOutputStream.<init>(RawLocalFileSystem.java:219)at org.apache.hadoop.fs.RawLocalFileSystem.createOutputStreamWithMode(RawLocalFileSystem.java:318)at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:307)at org.apache.hadoop.fs.RawLocalFileSystem.create(RawLocalFileSystem.java:338)at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSOutputSummer.<init>(ChecksumFileSystem.java:401)at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:464)at org.apache.hadoop.fs.ChecksumFileSystem.create(ChecksumFileSystem.java:443)at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:1118)at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:1098)at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:987)at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:414)at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:387)at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:337)at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2434)at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2403)at org.apache.hadoop.fs.FileSystem.copyToLocalFile(FileSystem.java:2379)at cn.itcast.hdfs.HDFSClientTest.getFile2Local(HDFSClientTest.java:71)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:564)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)at org.junit.runners.ParentRunner.run(ParentRunner.java:413)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblemsat org.apache.hadoop.util.Shell.fileNotFoundException(Shell.java:549)at org.apache.hadoop.util.Shell.getHadoopHomeDir(Shell.java:570)at org.apache.hadoop.util.Shell.getQualifiedBin(Shell.java:593)at org.apache.hadoop.util.Shell.<clinit>(Shell.java:690)at org.apache.hadoop.util.StringUtils.<clinit>(StringUtils.java:78)at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3482)at org.apache.hadoop.fs.FileSystem$Cache$Key.<init>(FileSystem.java:3477)at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3319)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:479)at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:227)at cn.itcast.hdfs.HDFSClientTest.connect2HDFS(HDFSClientTest.java:31)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:564)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)at org.junit.internal.runners.statements.RunBefores.invokeMethod(RunBefores.java:33)at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:24)... 18 more
Caused by: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.at org.apache.hadoop.util.Shell.checkHadoopHomeInner(Shell.java:469)at org.apache.hadoop.util.Shell.checkHadoopHome(Shell.java:440)at org.apache.hadoop.util.Shell.<clinit>(Shell.java:517)... 34 more
解决方法
- 下载 winutils
github: https://github.com/cdarlint/winutils
gitee:https://gitee.com/yixiangtiankai361/winutils
我这里下载的是:hadoop-3.3.5
保存到了:D:\Programs\opt
- 配置环境变量
Path里面添加:
- 重启IDEA即可