用 java遍历hadoop分布式文件系统中某个目录下的全部文件,我的hadoop是单节点的

2020-09-21 科技 99阅读
原因:
你访问的是本地文件系统而非hdfs , 因为Configuration默认的是在core-default.xml中的属性fs.default.name默认值是file:///,表示本地文件系统。在我们new Configuration();时会默认加载core-default.xml文件,所以根据这个文件的fs.default.name值使用了本地文件系统。
解决方法:
一般安装hadoop时都是修改core-site.xml文件,这个文件设置的属性值一般使用来覆盖core-default.xml这个文件的,在core-site.xml文件中会设置fs.default.name值为hadoop的namenode的地址以及端口号,如hdfs://localhost:9000,即表示namenode是本机,也就是为分布式。所以我们在连接hdfs时需要指定连接的地址,也就是hadoop集群中core-site.xml中fs.default.name属性值。所以解决方法有三种:
1)在代码Configuration conf=new Configuration();之后手动为Configuration对象设置fs.default.name属性值,如:conf.set("fs.default.name","hdfs:localhost:9000");
2)在代码的classpath下创建一个文件,在文件中设置fs.default.name属性值,再使用conf.addResource("文件路径")将该文件添加到Configuration中;
3)直接将集群的core-site.xml添加到classpath下即可,无需手动添加到Configuration,在new Configuration时会自动加载该文件
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com