如何在仅仅启动HDFS情况下处理HDFS中的文件

来源:互联网 发布:fc2最新域名网站 编辑:程序博客网 时间:2024/04/30 12:26

最近项目中需要这样一个应用,将上海市的遥感图像生成金字塔存储到Hadoop的HDFS中去,

然后在前台的三维地球画面上点击浏览,就会自动从HDFS下载相应的TIFF图像,并贴到地球上,显示。

 

但是这样出现了一个问题,如何从HDFS中下载图像呢?

 

我最初采用了绑定 地理坐标与TIFF图像,并且通过Java执行shell指令

 

bin/hadoop dfs -copyToLocal /hdfs /localfs

 

的方式,发现这种方式实用性有限,就琢磨着如何在普通的Java程序中根据HDFS中的文件名创建HDFS的FileSystem,

 

并且传出文件流,但是一直出现一种情况,HDFS的路径被程序认为是 本地Linux的文件系统而发生错误,

 

经过调试发现,在不启动mapreduce的情况下,conf对象是不会读取hadoop-site.xml的,

 

这样就郁闷了,在博士gg的指点下,我发现可以手工指定conf中配置使用HDFS文件系统,

 

具体做法很简单,就是

 

Configuration conf = new Configuration();

conf.set("fs.default.name","hdfs://nd0:54310");

 

郁闷了两天的问题终于解决了,希望这种使用方法能对大家有所帮助。

 

PS:最近已经成功的在Hadoop中重写了InputFormat,可以读取图像了,

 

希望有志同道合的筒子一起研究,用分布式的方法处理图像,做些处理,站内我。

 

原创粉丝点击