2015-10-19 79 views
4

我是Hadoop的新手,試圖執行我的第一個wordcount的mapreduce作業。 但是,每當我試圖做到這一點,我得到下面的錯誤:Windows上的Hadoop錯誤:java.lang.UnsatisfiedLinkError

java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeCompute 
ChunkedSumsByteArray(II[BI[BIILjava/lang/String;JZ)V 
     at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSumsByteArray(
Native Method) 
     at org.apache.hadoop.util.NativeCrc32.calculateChunkedSumsByteArray(Nati 
veCrc32.java:86) 
     at org.apache.hadoop.util.DataChecksum.calculateChunkedSums(DataChecksum 
.java:430) 
     at org.apache.hadoop.fs.FSOutputSummer.writeChecksumChunks(FSOutputSumme 
r.java:202) 
     at org.apache.hadoop.fs.FSOutputSummer.flushBuffer(FSOutputSummer.java:1 
63) 
     at org.apache.hadoop.fs.FSOutputSummer.flushBuffer(FSOutputSummer.java:1 
44) 
     at org.apache.hadoop.hdfs.DFSOutputStream.close(DFSOutputStream.java:221 
7) 
     at org.apache.hadoop.fs.FSDataOutputStream$PositionCache.close(FSDataOut 
putStream.java:72) 
     at org.apache.hadoop.fs.FSDataOutputStream.close(FSDataOutputStream.java 
:106) 
     at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:237) 
     at org.apache.hadoop.io.IOUtils.closeStream(IOUtils.java:254) 
     at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:61) 
     at org.apache.hadoop.io.IOUtils.copyBytes(IOUtils.java:112) 
     at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:366) 
     at org.apache.hadoop.fs.FileUtil.copy(FileUtil.java:338) 
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:190 
5) 
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:187 
3) 
     at org.apache.hadoop.fs.FileSystem.copyFromLocalFile(FileSystem.java:183 
8) 
     at org.apache.hadoop.mapreduce.JobResourceUploader.copyJar(JobResourceUp 
loader.java:246) 
     at org.apache.hadoop.mapreduce.JobResourceUploader.uploadFiles(JobResour 
ceUploader.java:166) 
     at org.apache.hadoop.mapreduce.JobSubmitter.copyAndConfigureFiles(JobSub 
mitter.java:98) 
     at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitt 
er.java:191) 
     at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1297) 
     at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1294) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at javax.security.auth.Subject.doAs(Subject.java:415) 
     at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInforma 
tion.java:1656) 
     at org.apache.hadoop.mapreduce.Job.submit(Job.java:1294) 
     at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1315) 
     at org.apache.hadoop.examples.WordCount.main(WordCount.java:87) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(Progra 
mDriver.java:71) 
     at org.apache.hadoop.util.ProgramDriver.run(ProgramDriver.java:144) 
     at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:74) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl. 
java:57) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:606) 
     at org.apache.hadoop.util.RunJar.run(RunJar.java:221) 
     at org.apache.hadoop.util.RunJar.main(RunJar.java:136) 

此外,當我做

的Hadoop checknative -a

它顯示我以下細節:

Native library checking: 
hadoop: true C:\hadoop-2.6.1\bin\hadoop.dll 
zlib: false 
snappy: false 
lz4:  true revision:43 
bzip2: false 
openssl: false org.apache.hadoop.util.NativeCodeLoader.buildSupportsOpenssl()Z 
winutils: true C:\hadoop-2.6.1\bin\winutils.exe 
15/10/19 15:18:24 INFO util.ExitUtil: Exiting with status 1 

有沒有什麼辦法可以解決這個問題?

+2

請檢查該鏈接可以幫助您:https://開頭的問題。 apache.org/jira/browse/HDFS-6974 –

回答

2

我有同樣的問題。從system32目錄中刪除hadoop.dll並設置它的工作環境變量HADOOP_HOME

或者使用可以添加像-Djava.library.path=<hadoop home>/lib/native這樣的jvm參數。

+1

@Carpetsmoker感謝編輯 – Jaigates

1

檢查相同的C:\ hadoop-2.6.1 \ bin \ hadoop.dll文件是否被java進程使用,但出現此錯誤。 使用進程資源管理器來查找。

3

我有這個錯誤也和我解決了這個錯誤:

  1. 您接入鏈路https://github.com/steveloughran/winutils
  2. 下載文件「winutils.exe」和「hadoop.dll」 與您使用
  3. 版本
  4. 將2個文件複製到HADOOP_HOME \ bin。

對我來說沒問題。 注:如果2個文件「winutils.exe」和「hadoop.dll」不能用Hadoop版本的權利,你使用,它也不行

+0

也爲我工作!謝謝 –