【Hadoop】HDFS客户端开发示例

1、原理、步骤

2、HDFS客户端示例代码

package com.ares.hadoop.hdfs;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URISyntaxException;

import org.apache.commons.io.IOUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.LocatedFileStatus;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.RemoteIterator;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class HDFSTest {
    private static final Logger LOGGER = Logger.getLogger(HDFSTest.class);

    private FileSystem fs = null;

    @Before
    public void setUp() throws IOException, URISyntaxException, InterruptedException {
        Configuration conf = new Configuration();
//        conf.set("fs.defaultFS", "hdfs://HADOOP-NODE1:9000");
//        URI uri = new URI("hdfs://HADOOP-NODE1:9000");
//        this.fs = FileSystem.get(uri, conf, "HADOOP");
        this.fs = FileSystem.get(conf);
    }
    @After
    public void tearDown() throws IOException {
        // TODO Auto-generated method stub
        this.fs.close();
    }

    @Test
    public void testGET() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: GET FILE TEST");
        Path path = new Path("hdfs://HADOOP-NODE1:9000/jdk-7u60-linux-x64.tar.gz");
        FSDataInputStream fsDataInputStream = this.fs.open(path);
        FileOutputStream fileOutputStream = new FileOutputStream("./testdata/get-test-jdk.tar.gz");
        IOUtils.copy(fsDataInputStream, fileOutputStream);
    }

    @Test
    public void testPUT() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: PUT FILE TEST");
        Path path = new Path("hdfs://HADOOP-NODE1:9000/put-test-jdk.tar.gz");
        FSDataOutputStream fsDataOutputStream = this.fs.create(path);
        FileInputStream fileInputStream = new FileInputStream("./testdata/test-jdk.tar.gz");
        IOUtils.copy(fileInputStream, fsDataOutputStream);
    }

    @Test
    public void testGET_NEW() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: GET_NEW FILE TEST");
        Path src = new Path("hdfs://HADOOP-NODE1:9000/jdk-7u60-linux-x64.tar.gz");
        Path dst = new Path("./testdata/get-test-new-jdk.tar.gz");
        this.fs.copyToLocalFile(src, dst);
    }

    @Test
    public void testPUT_NEW() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: PUT_NEW FILE TEST");
        Path src = new Path("./testdata/test-jdk.tar.gz");
        Path dst = new Path("hdfs://HADOOP-NODE1:9000/put-test-new-jdk.tar.gz");
        this.fs.copyFromLocalFile(src , dst);
    }

    @Test
    public void testMKDIR() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: MKDIR TEST");
        Path f = new Path("/mkdir-test/testa/testb");
        this.fs.mkdirs(f);
    }

    @Test
    public void testRM() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: RM TEST");
        Path f = new Path("/mkdir-test");
        this.fs.delete(f, true);
    }

    @Test
    public void testLIST() throws IOException {
        // TODO Auto-generated method stub
        LOGGER.debug("HDFSTest: LIST TEST");
        Path f = new Path("/");
        //LIST FILES
        RemoteIterator<LocatedFileStatus> files = this.fs.listFiles(f, true);
        while (files.hasNext()) {
            LocatedFileStatus file = files.next();
            LOGGER.debug(file.getPath());
            LOGGER.debug(file.getPath().getName());
        }

        //LIST DIRS
        FileStatus[] files2 = this.fs.listStatus(f);
//        for (int i = 0; i < files2.length; i++) {
//            LOGGER.debug(files2[i].getPath().getName());
//        }
        for (FileStatus fileStatus : files2) {
            LOGGER.debug(fileStatus.getPath().getName());
            LOGGER.debug(fileStatus.isDirectory());
        }
    }
}
时间: 2024-10-06 10:46:01

【Hadoop】HDFS客户端开发示例的相关文章

大数据技术之_04_Hadoop学习_01_HDFS_HDFS概述+HDFS的Shell操作(开发重点)+HDFS客户端操作(开发重点)+HDFS的数据流(面试重点)+NameNode和SecondaryNameNode(面试开发重点)

第1章 HDFS概述1.1 HDFS产出背景及定义1.2 HDFS优缺点1.3 HDFS组成架构1.4 HDFS文件块大小(面试重点)第2章 HDFS的Shell操作(开发重点)第3章 HDFS客户端操作(开发重点)3.1 HDFS客户端环境准备3.2 HDFS的API操作3.2.1 HDFS文件上传(测试参数优先级)3.2.2 HDFS文件下载3.2.3 HDFS文件夹删除3.2.4 HDFS文件名更改3.2.5 HDFS文件详情查看3.2.6 HDFS文件和文件夹判断3.3 HDFS的I/O

Hadoop2.4.1 HDFS的Java客户端开发

我是在linux的环境下的Eclipse中开发这个程序的,如果你是在windows环境下写这个程序,请自行调整. 第一步:首先我们确定自己的hadoop的hdfs的环境是好的,我们在linux中启动hdfs,然后在web页面上通过URL测试:http://uatciti:50070 第二步:在Linux下打开Eclipse, 写我们的客户端代码. 说明:我们在Linux系统的/usr/local/devtool/java文件下,有JDK的文件.我们希望把这个文件上传到hdfs系统的根目录下的jd

Redis开发与运维 (数据库技术丛书) PDF 下载,深度剖析Hadoop HDFS PDF 下载

1.Redis开发与运维 (数据库技术丛书) PDF 下载 2.深度剖析Hadoop HDFS (大数据技术丛书) PDF 下载 关注微信公众号:职业开发者之路,百度云免费 下载 PDF 电子书籍,或直接访问:问风网:askwinds.com请添加链接描述,免费资源下载模块下载,问风@程序员部落,更多资源分享等你获取关注微信公众号:职业开发者之路,?更多免费资源分享 原文地址:http://blog.51cto.com/2058005/2350798

数道云大数据平台解决方案,Hadoop + HDFS+Hive+Hbase大数据开发整体架构设计

波若大数据平台(BR-odp)Hadoop + HDFS+Hive+Hbase大数据开发工具剖析: HDFS:分布式.高度容错性文件系统,能提供高吞吐量的数据访问,非常适合大规模数据集上的应用,大规模的波若大数据平台(BR-odp)用户部署上1000台的HDFS集群.数据规模高达50PB以上 HDFS和MR共同组成Hadoop分布式系统体系结构的核心.HDFS在集群上实现了分布式文件系统,MR在集群上实现了分布式计算和任务处理.HDFS在MR任务处理过程中提供了文件操作和存储等支持,MR在HDF

Hadoop之HDFS客户端操作

1. HDFS 客户端环境准备 1.1 windows 平台搭建 hadoop 2.8.5 2. 创建Maven工程 # pom.xml <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> <dep

Hadoop之HDFS(客户端操作) 1.环境准备

HDFS客户端操作 1.HDFS客户端环境准备 1.根据自己电脑的操作系统拷贝对应的编译后的hadoop jar包到非中文路径(例如:D:\Develop\hadoop-2.7.2),如图所示. 图 编译后的hadoop jar包 2.配置HADOOP_HOME环境变量,如图所示. 图  配置HADOOP_HOME环境变量 3. 配置Path环境变量,如图所示. 图  配置Path环境变量 4.创建一个Maven工程HdfsClientDemo 5.导入相应的依赖坐标+日志添加 <depende

使用HDFS客户端java api读取hadoop集群上的信息

本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.7.2</version> <scope>provided</scope> </dependency> 2.配置文

HDFS应用开发篇

HDFS的java操作 hdfs在生产应用中主要是客户端的开发,其核心步骤是从hdfs提供的api中构造一个HDFS的访问客户端对象,然后通过该客户端对象操作(增删改查)HDFS上的文件 7.1 搭建开发环境 1.引入依赖 <dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-client</artifactId> <version>2.6.1<

Hadoop HDFS 基础使用

目录 1.HDFS 前言 ................................................................................................................................... 1 2.HDFS 相关概念和特性 ........................................................................................