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());
}
}
}

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

  1. java 调用webservice (asmx) 客户端开发示例

    这是本人第一次写博客,其实就是自己做个笔记,写的很粗糙,也希望能给跟我遇到同样问题的你一点帮助. 因为最近有个项目要调用webservice接口,之前接触的都是Java开发服务端和客户端的接口,开发前 ...

  2. hadoop学习day2开发笔记

    1.将hdfs客户端开发所需的jar导入工程(jar包可在hadoop安装包中找到common/hdfs) 2.写代码 要对hdfs中的文件进行操作,代码中首先需要获得一个hdfs的客户端对象 Con ...

  3. Hadoop HDFS的shell(命令行客户端)操作实例

    HDFS的shell(命令行客户端)操作实例 3.2 常用命令参数介绍 -help 功能:输出这个命令参数手册 -ls                  功能:显示目录信息 示例: hadoop fs ...

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

    本文介绍使用hdfs java api的配置方法. 1.先解决依赖,pom <dependency> <groupId>org.apache.hadoop</groupI ...

  5. Hadoop JAVA HDFS客户端操作

    JAVA HDFS客户端操作 通过API操作HDFS org.apache.logging.log4jlog4j-core2.8.2org.apache.hadoophadoop-common${ha ...

  6. Hadoop之HDFS客户端操作

    1. HDFS 客户端环境准备 1.1 windows 平台搭建 hadoop 2.8.5 2. 创建Maven工程 # pom.xml <dependencies> <depend ...

  7. Hadoop HDFS分布式文件系统设计要点与架构

      Hadoop HDFS分布式文件系统设计要点与架构     Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群 ...

  8. 【转】Hadoop HDFS分布式环境搭建

    原文地址  http://blog.sina.com.cn/s/blog_7060fb5a0101cson.html Hadoop HDFS分布式环境搭建 最近选择给大家介绍Hadoop HDFS系统 ...

  9. Hadoop HDFS分布式文件系统设计要点与架构(转摘)

    Hadoop简介:一个分布式系统基础架构,由Apache基金会开发.用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储.Hadoop实现了一个分布式文件系统(Ha ...

随机推荐

  1. 【SQL】使用调用层接口

    只记录C语言相关的,java相关的JDBC和PHP相关的都先跳过. C相关的也只是记录一下,这里面的语句我都不知道如何运行,在我的vs2010里面连头文件都找不到... 我觉得这里只是讲解了一下基本的 ...

  2. 分析函数调用堆栈的原理和Delphi实现

    来自:http://blog.163.com/liuguang_123/blog/static/816701920105262543890/ ----------------------------- ...

  3. Selenium2+python自动化44-元素定位参数化(find_element)【转载】

    前言 元素定位有八种方法,这个能看到这一篇的小伙伴都知道了,那么有没有一种方法,可以把八种定位合为一种呢?也就是把定位的方式参数化,如id,name.css等设置为一个参数,这样只需维护定位方式的参数 ...

  4. Java多态机制和继承中重写重载

    关于Java中多态机制 http://www.cnblogs.com/chenssy/p/3372798.html 这篇博文讲的很透彻 大体意思是 多态定义: 多态就是指程序中定义的引用变量所指向的具 ...

  5. IE webkit 滚动条样式!

    <style type="text/css"> // IE 模式 *{ scrollbar-face-color:#F3F3F3; /*面子*/ scrollbar-a ...

  6. 只用120行Java代码写一个自己的区块链-3挖矿算法

    在本系列前两篇文章中,我们向大家展示了如何通过精炼的Java代码实现一个简单的区块链.包括生成块,验证块数据,广播通信等等,这一篇让我们聚焦在如何实现 PoW算法. 大家都无不惊呼比特币.以太坊及其他 ...

  7. (二)centos7安装zabbix agentd端

    关闭防火墙和selinux systemctl stop firewalld systemctl disable firewalld sed -ri '/^SELINUX=/cSELINUX=disa ...

  8. HDU 6326.Problem H. Monster Hunter-贪心(优先队列)+流水线排序+路径压缩、节点合并(并查集) (2018 Multi-University Training Contest 3 1008)

    6326.Problem H. Monster Hunter 题意就是打怪兽,给定一棵 n 个点的树,除 1 外每个点有一只怪兽,打败它需要先消耗 ai点 HP,再恢复 bi点 HP.求从 1 号点出 ...

  9. Codeforces 626 B. Cards (8VC Venture Cup 2016-Elimination Round)

      B. Cards   time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  10. 8、Flask实战第8天:add_url_rule和app.route原理

    之前我们使用@app.route这个装饰器来把视图函数和url绑定 @app.route('/') def hell_world(): return 'hello world' 而且我们可以通过url ...