hdfs回顾总结(1)

本文介绍如何在Windows环境下搭建Hadoop开发环境,并通过具体案例演示HDFS的主要Java API使用方法,包括文件上传、下载、目录创建等操作。

由于笔者是在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");

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值