hdfs回顾总结(1)

来源:互联网 发布:linux系统jdk1.6 下载 编辑:程序博客网 时间:2024/05/18 00:52

由于笔者是在windows下idea的IDE开发,虽然每次都可以把程序提交到linux集群运行,但是对于查看业务,以及深入学习框架原理基本上不好使,所以想办法能让hadoop在windows上运行是最佳的。
沿着这个思路,可以到官网下载源码进行windows版的编译,这个这里就不再累述。(可以直接到网上找个windows版的)
之后就是在windows的环境中制定HADOOP_HOME环境变量和path路径。
1、hdfs主要java格式API接口的案例

package hdfs;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.*;import org.junit.Before;import org.junit.Test;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.util.Iterator;import java.util.Map;/** * 本地hdfs api测试 * Created by tianjun on 2017/3/14. */public class HdfsClient {    FileSystem fs = null;    Configuration conf = null;    @Before    public void init() throws IOException, URISyntaxException, InterruptedException {        conf = new Configuration();        /**         * 方法1:vm参数 -DHADOOP_USER_NAME=root         * 或者是 System.setProperty("HADOOP_USER_NAME","root");         *///        conf.set("fs.defaultFS","hdfs://mini01:9000");//        fs = FileSystem.get(conf);        /**         * 方法2         */        fs = FileSystem.get(new URI("hdfs://mini01:9000"), conf, "root");    }    //上传    @Test    public void testUpload() throws IOException {        fs.copyFromLocalFile(new Path("c:/dos.txt"), new Path("/wc/dos.txt.copy2"));        fs.close();    }    //下载    @Test    public void testDownload() throws IOException {        fs.copyToLocalFile(new Path("/wc/dos.txt.copy"), new Path("e:/"));        fs.close();    }    //查询配置信息    @Test    public void testConf() {        Iterator<Map.Entry<String, String>> iterator = conf.iterator();        while (iterator.hasNext()){            Map.Entry<String,String> entry = iterator.next();            System.out.println(entry.getKey() + " ---> "+entry.getValue());        }    }    //创建目录    @Test    public void makedirTest() throws IOException {        boolean mkdir = fs.mkdirs(new Path("/aa/bb"));        System.out.printf(Boolean.toString(mkdir));    }    //删除    @Test    public void deleteTest() throws IOException {        boolean delete = fs.delete(new Path("/wc/output1"),true);        System.out.printf(String.valueOf(delete));    }    //列出当前文件下的子文件    @Test    public void listTest() throws IOException {        FileStatus[] listStatus = fs.listStatus(new Path("/"));        for(FileStatus fileStatus : listStatus){            System.out.println(fileStatus.getPath()+" ============> "+fileStatus.toString());        }        System.out.println("+++++++++++++++++++++++++++++++++++++++++");        //递归查找所有的文件        RemoteIterator<LocatedFileStatus> listFiles = fs.listFiles(new Path("/"),true);        while (listFiles.hasNext()){            LocatedFileStatus next = listFiles.next();            String name = next.getPath().getName();            Path path = next.getPath();            System.out.println(name + " ====> " + path);        }    }}

注意:
应为上面个不是HA版本呢的hadoop,如果是在HA环境下,请把namenode下的core-site.xml和hdfs-site.xml拷贝到工程的classpath路径下。(前提是在windows的hosts上配置好映射关系)
注意fs = FileSystem.get(new URI("hdfs://mini01:9000"), conf, "root");改为core-site.xml中的fs.defaultFS的值fs = FileSystem.get(new URI("hdfs://cmcc"), conf, "dev");

0 0
原创粉丝点击