由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题

这篇准确来说不是搭建hadoop开发环境,而是指windows10连接到centos下hadoop集群进行开发遇到的一系列问题,仅此而已!如果你有兴趣搭建hadoop集群,可以参考这里。

环境

我已经在Linux服务器上安装了分布式的hadoop环境,一namenode两datanode。
eclipse中已添加hadoop-eclipse-plugin-2.7.jar(不是2.8的插件jar包,请注意)。并且在eclipse中配置了map/reduce对应的hadoop的一些基本配置信息。如下面两张图
由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题_第1张图片
由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题_第2张图片

上图中的advanced parameters中仅修改了hadoop.tmp.dir属性,改为我在linux中的/usr/local/hadoop-3.0.0-alpha4/data的路径而已。其他属性都是默认值。

由一个HADOOP_HOME and hadoop.home.dir are unset报错引起的window环境连接调试远程hadoop的一系列问题_第3张图片
当我运行这个java文件的时候,报错“HADOOP_HOME and hadoop.home.dir are unset”。然后我就懵逼了。

解决步骤

我一直认为,我本地的eclipse就是个调用远程hadoop的作用,所以本地的windows操作系统中不需要安装hadoop了。所以我看到这个HADOOP_HOME的时候一直不明白,难道我还需要在我本地安装一个hadoop吗????
其实答案是:是的。我倒霉就倒霉在没有在本地放一个hadoop。只需要找一个hadoop3.0.0的二进制包(官网上这个东西大概400多兆),解压放到你windows下的某处即可。
然后重点在这里,仅仅解压缩了这个hadoop的包还不够,还需要这俩东西:hadoop.dll和winutils.exe下载链接及其附属(hadoop.exp、hadoop.lib、hadoop.pdb、libwinutils.lib、winutils.pdb)。缺少会报错,我在报错前已经把这俩及其相关的东西都放上了,所以不知会报啥错。再说一点如果版本不一致会报java.lang.UnsatisfiedLinkError:org.apache.hadoop.io.nativeio.NativeIO$Windows.createDirectoryWithMode0(Ljava/lang/String;I)V错误
有点扯远了,还说在本地放hadoop程序包的问题。只要解压了程序包,同时在你的环境变量中的系统变量中配置了HADOOP_HOME并且指向hadoop程序包的本目录即可(如我本机就是E:\tools\apache\hadoop),并且在系统变量的path中附加了%HADOOP_HOME%\bin及%HADOOP_HOME%\sbin就能在你的windows上运行hadoop程序了。如果还不行则重启电脑试试。

总结

本地的hadoop其实真的真的没有参与干活儿。因为我连启动都没启动过本地的hadoop。建议大家选择hadoop版本时选一个比较多人用的版本。

你可能感兴趣的:(hadoop,大数据)