bug填坑|hadoop使用

hadoop使用中的bug


前言

前一篇文章搭建了hadoop集群,这篇文章,针对的是window上做开发时的日常踩坑。


bug1

这个问题一开始挺郁闷的,HADOOP_HOME and hadoop.home.dir are unset服务器设置环境变量的时候,HADOOP_HOME这个我是有设置的,但这个hadoop.home.dir are unset却是第一次见到。
在这里插入图片描述
在这里插入图片描述

解决

找了些文章,有些竟然说还需要在windows上部署一个和服务器上版本一样的hadoop。。这想想就觉得不可能这么坑吧,程序员都是比较懒的,要不然就不会有那么多框架、组件了,肯定有其他好的解决办法。然后找到如下的解决办法:

GitHub,根据你的hadoop版本下载对应的版本bin文件(原来window上开发,和服务器集群交互时,需要winutil.exe模拟linux下的目录环境?)版本对应对某些hadoop版本来说可能有要求,我是hadoop2.10的,并没有对应的版本,但也能用。

ps:竟然有人用这个东西来赚积分,看到的时候果断关掉网页。。。

我用的springboot,直接在启动的时候加入hadoop.home.dir设置,注意,不用指定到bin文件夹,否则,也会报错,默认读取的时候会自动补上/bin。

public class HadoopApplication {
    
    
    public static void main(String[] args) {
    
    
        System.setProperty("hadoop.home.dir", "F:\\hadoop-common-2.2.0-bin-master");
   
        SpringApplication.run(HadoopApplication.class);
    }
}

在这里插入图片描述

bug2

这个是在编写MapReduce时候遇到的java.lang.UnsatisfiedLinkError: ,也是有点醉了,找了些资料解决:

java.lang.UnsatisfiedLinkError: 
org.apache.hadoop.io.nativeio.
NativeIO$Windows.access0
(Ljava/lang/String;I)Z

在这里插入图片描述

解决

原来windows上开发,还需要添加一个库,叫做hadoop.dll文件,这个文件在上面下载bin文件夹里头就有。同样在启动的时候进行加载。

@SpringBootApplication
public class HadoopApplication {
    
    
    public static void main(String[] args) {
    
    
        System.setProperty("hadoop.home.dir", "F:\\hadoop-common-2.2.0-bin-master");
        // 加载库文件
        System.load("F:\\hadoop-common-2.2.0-bin-master\\bin\\hadoop.dll");
        SpringApplication.run(HadoopApplication.class);
    }
}

在这里插入图片描述

总结

上面的解决方案,是基于自己的linux集群上的hadoop2.10版本和本地windows开发环境而总结出的解决方案。除此之外,也还需要注意自己上传到hdfs的地址是否有误,ip或者域名信息是否写对了,这些都是自己马虎造成的,多多审查。

猜你喜欢

转载自blog.csdn.net/legendaryhaha/article/details/106320514