赞
踩
需求:
linux已经启动了hadoop集群,想要在windows中用java对文件进行下载操作。
错误提示:
找不到winutils.exe、hadoop.dll没有设置
原因:
Hadoop访问windows本地文件系统,要求Windows上的本地库能正常工作。
其中Hadoop使用某些Windows API来实现类似posix的文件访问权限。
上述功能需要在hadoop.dll和winutils.exe来实现。
解决:
使用清华大学镜像:Index of /apache/hadoop/common/hadoop-3.3.1,下载hadoop-3.3.1-src.tar.gz
来到路径D:\hadoop-3.3.1-src\hadoop-common-project\hadoop-common\src\main\winutils下,在vs里打开他
里面有这两个项目,首先我们先修改生成的平台
然后右键解决方案 - 重定解决方案目标 - 确定
此步可能会报错: warning C4003: 类函数宏的调用“STRINGIFY_”参数不足
如果报这个错,我们双击错误的那行进到文件里,然后手动把前面的STRINGIFY换成STRINGIFY_
如果提示找不到libwinutils.lib,那就说明第一个编译错误了,重新生成试试。
来到路径D:\hadoop-3.3.1-src\hadoop-common-project\hadoop-common\src\main\native下,打开项目
首先也是修改平台,然后右键解决方案重定解决方案目标。
此时试着点击生成,我这里是报错找不到 libwinutils.lib,我们需要手动把这个lib所在的目录加进来。
右键项目 - 属性 - 链接器 - 附加库目录 - 编辑 - 新行 - 选中D:\hadoop-3.3.1-src\hadoop-common-project\hadoop-common\src\main\winutils\x64\Release(你第一个编译的项目生成的东西所在的路径)
配置好后生成,如果还有其他错请百度。
在你电脑某个地方创建hadoop-3.3.1文件夹,在里面创建bin目录,来到bin目录下。
我们主要需要复制wintuils.exe、hadoop.lib和他们所需要的一些东西。
首先来到路径D:\hadoop-3.3.1-src\hadoop-common-project\hadoop-common\target\bin 下,复制里面所有内容到我们创建的bin中。
然后来到D:\hadoop-3.3.1-src\hadoop-common-project\hadoop-common\src\main\winutils\x64\Release 下,复制其中的libwinutils.lib、winutils.exe和winutils.pdb到创建的bin中
来到 D:\hadoop-3.3.1-src\hadoop-hdfs-project\hadoop-hdfs\src\main\bin ,复制其中的hdfs和hdfs.cmd
来到D:\hadoop-3.3.1-src\hadoop-yarn-project\hadoop-yarn\bin,复制其中的yarn和yarn.cmd
来到D:\hadoop-3.3.1-src\hadoop-mapreduce-project\bin,复制其中的mapred和mapred.cmd
都放到bin下,红色是第一步的,绿色是第二步的
配置HADOOP_HOME的值为我们创建的hadoop-3.3.1这个文件夹
再在path中添加%HADOOP_HOME%\bin
最后,重启idea,就可以使用了!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。