【HDFS篇】eclipse下开发hadoop配置相关及测试HDFSDemo

安装前准备
1.将bin目录下bin目录下的的文件替换到hadoop下的bin。然后将hadoop.dll 他的核心扩展库放在windows system32下。
2.创建jar库 在hadoop的部署包下的涉及到HDFS、MapReduce、common、yarn、tools的jar都放在新建的hadoop-lib下。
3.配置环境变量
新建,HADOOP_HOME
新建HADOOP_USER_NAME,设置成root,原因是在开发HDFS客户端的时候,会告诉HDFS我登陆的用户名称,如果不配置,windows的用户名是什么就会传什么,保证以后方便,不该windows的用户名,直接把用户名配置成环境变量就行。
这里写图片描述
4.eclipse放入hadopp插件。放入plugins中。然后在视图中可选择hadoop的图标。
这里写图片描述
5.配置路径
这里写图片描述
6.新建hadoop
这里写图片描述
这里写图片描述
7.新建i项目,注意新建hadoop-lib的jar库。

==================================================
测试demo:
放入基于HA搭建后的hadoop的core-site.xml和hdfs-site.xml 文件
将配置文件的父目录加入source folder。
这里写图片描述
因为使用hadoop读配置文件的configuration类是在根目录读取配置文件的。所以必须加进来不然没法读取。

测试代码:

public class TestHDFS { 
    Configuration conf = null;
    FileSystem fs = null; 

    @Before
    public void conn() throws Exception{
        conf = new Configuration(true);
        fs = FileSystem.get(conf); 
    }

    @After
    public void close() throws Exception{
        fs.close();
    }

    @Test
    public void mkdir() throws Exception{
        Path input = new Path("/000");
        if(fs.exists(input)){
            fs.delete(input, true);
        }
        fs.mkdirs(input);
    } 

    @Test
    public void upload() throws Exception{

        Path file = new Path("/000/cx.txt");
        FSDataOutputStream out = fs.create(file);
        InputStream in = new BufferedInputStream(new FileInputStream(new File("C:\\Users\\Administrator\\Desktop\\jw.txt")));
        IOUtils.copyBytes(in, out, conf, true);
    }

    @Test
    public void download() throws Exception{

    Path file = new Path("/000/cx.txt");
    FSDataInputStream in = fs.open(file);

    BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream("E:\\chenxiao.txt"));
    IOUtils.copyBytes(in, out, conf); 
    }

    @Test
    public void blks() throws Exception{
        Path f = new Path("/user/root/chenxiao.txt");
        FileStatus file = fs.getFileStatus(f );
        BlockLocation[] blks = fs.getFileBlockLocations(file, 0, file.getLen());

        for(BlockLocation blk : blks){
            System.out.println(blk.toString());
        }

        FSDataInputStream in = fs.open(f);
        System.out.println((char)in.readByte());
        System.out.println((char)in.readByte());
        System.out.println((char)in.readByte());
        System.out.println((char)in.readByte());  
        in.seek(1048576);  
        System.out.println((char)in.readByte()); 
    } 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值