问题1:java.lang.UnsatisfiedLinkError: org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMo
背景:在Linux服务器上配置好hadoop,对HDFS进行命令行操作正确,运行wordcount Demo正常,但在window上使用Java api进行HDFS测试的时候报错。
0、需要在window机器上也下载一份hadoop,并且大版本要和Linux机器上运行的Hadoop版本一致
1、在https://github.com/steveloughran/winutils上下载对应版本的bin文件夹(主要是有winutils.exe这个文件),并且替换原有bin文件夹
2、在系统变量上设置HADOOP_HOME
3、在Path中添加%HADOOP_HOME%\bin和%HADOOP_HOME%\lib
4、问题解决
问题2:org.apache.hadoop.security.AccessControlException: Permission denied: user=ymdhi, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
原因:在window机器上使用Java api往HDFS中上传文件的时候,由于用户名默认使用的是window中的用户名,比如admin等等,在HDFS中就会被认为是other,如果other没有w权限的话,就会出这个问题
解决办法:
0、在Edit Configurations中设置VM options,加上-DHADOOP_USER_NAME=hadoop(这个hadoop是HDFS中的用户名)
1、运行,问题解决