软件工程专业在读大二本科生,通过同学了解到“飞天加速计划·高校学生在家实践”活动。
记录一下遇到的坑
问题:按照阿里云提供的方案部署hdfs并修改配置文件后,在本地通过java调用HDFS的API,发现仍然不能从本地进行远程访问,提示连接被拒绝。
需要额外做的步骤:
1.把defaultFS里的localhost改成云主机的内网IP,注意是内网IP。
2.在本地修改hosts文件(步骤自行百度),加入一行:
[云主机的ip] BigData1
即可
按照阿里云提供的方案搭建hadoop和hdfs确实方便,搭建出来是伪分布式的系统,如果需要搭建真正的分布式或者单机的hdfs系统,可以去官方wiki上找找教程。
defaultFS记录的是默认的文件系统,网上的各种教程里的设置都说是localhost,但是localhost是一种类似循环的地址,如果要通过远程环境去访问的话,服务器使用localhost是不行的,会找不到hdfs。所以需要改成内网的ip来使得部署在本机的namenode和datanode能访问到对方,从而使系统能正常运行。至于为什么是内网的ip,因为是服务器中的两个本地程序互相通信(这个比喻不一定恰当),所以用公网ip是行不通的。
本地修改hosts文件是无奈之举,我暂时没有理解原理,但确实是一种解决方案。
另外,在尝试的过程中我发现Windows上使用hadoop虽然可以通过下载额外的补丁来实现,但是并不稳定,问题百出,所以无奈换用了linux,效果还可以。