hadoop初级入门学习——hdfs

来源:互联网 发布:dnf时装搭配软件 编辑:程序博客网 时间:2024/04/27 21:29

通过java API来操作hadoop的hdfs遇到的问题整理

1.两种操作方式的比较

(1)直接通过url地址访问的方式

public static final String PATH = "hdfs://hadoop:9000/hello/test.txt";public static void main(String[] args) throws Exception {URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());final URL url = new URL(PATH);final InputStream is = url.openStream();IOUtils.copyBytes(is, System.out, 1024, true);}

说明:这种方式发送请求时候,浏览器不认识hdfs协议,无法解析,通过URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory());使得url可以被解析。使用这种方式,我们先需要让java识别Hadoop的文件系统的URL方案,就是用URL.setURLStreamHandlerFactory方法,这个方法只能在运行整个jvm中调用一次。

(2)通过api读取配置文件来构造

public static FileSystem fileSystem() throws Exception{Configuration conf = new Configuration();URI uri = new URI("hdfs://hadoop:9000/");FileSystem fs = FileSystem.get(uri, conf);return fs;}

其中的URI里面的参数是core-site.xml 这个配置文件配置的fs.default.name属性

2.windows下开发遇到的权限不足不允许操作问题

(1)需要把windows的用户名改为root,参见http://www.superwu.cn/2013/08/03/%e4%bf%ae%e6%94%b9%e6%93%8d%e4%bd%9c%e7%b3%bb%e7%bb%9f%e7%94%a8%e6%88%b7%e5%90%8d/

(2)需要导入org.apache.hadoop.fs.FileUtil包