1.搭建好分布式hadoop后续的操作,可能都是跟JAVA有关系。就想试试能否用PYTHON达到同样的效果。
2.模块包的选择,首先找到HDFS3模块跟HDFS模块,但是通过4个小时的查找无法连上服务端,最终放弃了2个模块,最后找到了PYHDFS
import pyhdfs fs = pyhdfs.HdfsClient(hosts='192.168.253.130:9870', user_name='root') #hadoop 已经配置完毕 通过sbin/start-all.sh启动集群
3.连接成功后我开始尝试读取hdfs的文件,然后一个报错
response = fs.open("/sanguo/shuguo/dakongming.txt")
# 查看文件内容
response.read()
requests.exceptions.ConnectionError: HTTPConnectionPool(host='hadoop2', port=9864): Max retries exceeded with url: /webhdfs/v1/sanguo/shuguo/dakongming.txt?op=OPEN&user.name=root&namenoderpcaddress=hadoop1:8020&offset=0 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000025720A8E160>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed',))
明显是连接建立失败了,反复修改配置后找到了一篇文章https://www.jianshu.com/p/3eb6458fb720
看到这我就明白了客户端可能到时候会对HADOOP2进行访问,而我WIN10客户端没有做域名映射,所以无法访问到。
C:\Windows\System32\drivers\etc 修改或者新加文件 hosts
192.168.253.130 hadoop1
192.168.253.131 hadoop2
192.168.253.132 hadoop3
成功读取文件 接下来就可以比较愉快的操作HDFS
还存在连接错误可以关闭LINUX防火墙