Windows环境下Hadoop执行hdfs dfs -ls命令报UnsatisfiedLinkError错误求助
UnsatisfiedLinkError问题 嘿,这个错误我之前帮好几个Windows上的Hadoop新手搞定过,别慌!咱们先搞清楚问题出在哪:这个报错是因为Hadoop在Windows环境下运行时,找不到对应的本地原生库(Native Libraries),导致Java没法调用Windows系统的文件访问接口。下面是一步步的解决办法:
第一步:检查并补充Windows原生库文件
找到你的Hadoop安装根目录(比如C:\hadoop-3.3.4),进入bin文件夹,看看里面有没有hadoop.dll、winutils.exe这几个关键文件。如果没有,你需要下载和你Hadoop版本完全匹配的Windows适配原生库包(注意版本必须对应,比如你装的是3.3.2,就找3.3.2的版本),把这些文件放到Hadoop安装目录\bin下。第二步:配置系统环境变量
右键「此电脑」→「属性」→「高级系统设置」→「环境变量」,做以下配置:- 新建系统变量
HADOOP_HOME,值设为你的Hadoop安装根目录(比如C:\hadoop-3.3.4) - 编辑系统变量
Path,添加%HADOOP_HOME%\bin - 新建系统变量
HADOOP_OPTS,值设为-Djava.library.path=%HADOOP_HOME%\bin——这一步是告诉Java去哪里找本地库,非常关键!
- 新建系统变量
第三步:重启命令行工具
不管你用的是CMD还是PowerShell,都要完全关掉再重新打开,环境变量的修改才会生效。第四步:验证修复效果
先输入hadoop version,如果能正常输出Hadoop的版本信息,说明环境变量配置没问题。接着再执行hdfs dfs -ls /testDirHadoop2,应该就能正常列出目录里的文件了!
额外小提示
如果还是报错,检查一下core-site.xml里的hadoop.tmp.dir配置的路径有没有中文或者空格?建议改成纯英文的路径(比如C:\hadoop-3.3.4\tmp),避免路径特殊字符导致的访问权限问题。
内容的提问来源于stack exchange,提问作者Ganesh Dogiparthi

