《大数据Hadoop 3.x 分布式处理实战》书籍第三章踩坑处理记录

前提:本书中教程是在本地安装虚拟机,虚拟机装图形化界面的CentOS7,并且安装在虚拟机上安装Hadoop 3.0.0。并且在Linux系统中安装Eclipse使用java调用Hadoop的api教程。但是本人不喜欢在本地安装虚拟机和Eclipse,所以我是用的是腾讯云服务器安装CentOS7系统,本地Win环境安装IDEA跟随书籍指导来实现。由于与书籍环境太一致,导致踩了很多的坑,在此记录下来,为自己或其他像我一样本地连接远程Hadoop的小伙伴提供踩坑的问题和解决方法。

书籍:《大数据Hadoop 3.x分布式处理实战》 人民邮电出版社版

  • 问题1 3.3.3 HDFS Java API实例

  1. 在本章中,书中使用了java API对hadoop的文件进行操作,我也在本地的IDEA环境写了下书上的代码,遇到几个问题。一个是书上的java代码和hadoop是在同一个环境中,因此他的java代码中Hadoop的uri用的是“hdfs://hadoop0:9000/”,我连的是服务器上的hadoop,因此我的hadoop0需要更换为服务器的公网ip,并且在对应的云平台上将服务器的9000端口开放。

  1. 开放了端口,使用书籍上的代码,向服务器写文件调试的时候报错

java.io.FileNotFoundException: java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset. -see https://wiki.apache.org/hadoop/WindowsProblems

这是需要win环境下载以hadoop的配置,可以下载和配置方法请参考这个博客。

https://blog.csdn.net/weixin_38504735/article/details/125216888

  1. 连接好了之后,开始上传文件测试,输上了书上的上传代码,又遇到一个问题

hadoop中只是创建了文件,但是只是一个空的文件,里边并没有我想写入的“hello world”

这个问题是因为:

NameNode节点存放的是文件目录,也就是文件夹、文件名称,本地可以通过公网访问 NameNode,所以可以进行文件夹的创建,当上传文件需要写入数据到DataNode时,NameNode 和DataNode 是通过局域网进行通信,NameNode返回地址为 DataNode 的私有 IP,本地无法访问。因此需要配置主机名和公网ip的映射关系来对DataNode可以进行写入。

在此提供更改代码的方式解决这个问题

    public static FileSystem getFileSystem() throws Exception {
        URI uri = new URI("hdfs://xxx:9000/");// xxx你的公网ip
        Configuration configuration = new Configuration();
        // 需要加上下方两句配置
        configuration.set("dfs.client.use.datanode.hostname", "true");
        FileSystem fileSystem = FileSystem.get(uri, configuration, "root");
        return fileSystem;
    }

然后本地配置一下DNS域名映射。首先查看linux主机名称,我们可以通过下面的命令查看:

   hadoop dfsadmin -report

然后在C:\Windows\System32\drivers\etc的hosts文件中新增一个你服务器公网ip到主机名的映射

云服务器还需要配置一下安全组,对外开放 9866端口,然后就可以重新执行上传文件的程序了。

附修改host文件的方法:https://baijiahao.baidu.com/s?id=1717567112868968220&wfr=spider&for=pc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值