一、HDFS集群API所需要jar包的maven配置信息

        <dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.8.4</version>
</dependency>

二、从HDFS下载数据文件/上传文件到HDFS文件系统

  思路:1.获取配置信息

     2.设置配置信息(块大小、副本数)

     3.构造客户端

     4.下载数据文件/上传数据文件

     5.关闭资源

  (1)下载文件

/**
* @author: PrincessHug
* @date: 2019/3/18, 16:10
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo02 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
//配置信息对象
Configuration conf = new Configuration();
//设置具体配置信息
conf.set("dfs.replication","2");
//构造客户端
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root"); //下载数据到本地
fs.copyToLocalFile(new Path("/words1.txt"),new Path("f://words1.txt"));
//关闭资源
fs.close();
System.out.println("下载完成");
}
}

  (2)上传文件

/**
* @author: PrincessHug
* @date: 2019/3/18, 11:53
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo01 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
//配置信息
Configuration conf = new Configuration();
//配置块大小和副本数
conf.set("dfs.blocksize","64m");
conf.set("dfs.replication","2");
//构造客户端
FileSystem fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"), conf, "root");
//上传文件到hdfs客户端
fs.copyFromLocalFile(new Path("/root/love.tsv"),new Path("/love1.tsv"));
//关闭资源
fs.close();
System.out.println("上传成功!");
}
}

三、对HDFS系统进行操作的API

/**
* @author: PrincessHug
* @date: 2019/3/18, 16:16
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class HdfsClientDemo { private static FileSystem fs = null; static {
Configuration conf = new Configuration();
conf.set("dfs.blocksize","64m");
conf.set("dfs.replication","3");
try {
fs = FileSystem.get(new URI("hdfs://192.168.126.128:9000/"),conf,"root");
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
} /**
* 创建文件夹方法
* @throws IOException
*/
public void mkDir(String path) throws IOException {
fs.mkdirs(new Path(path));
fs.close();
} /**
* 重命名或移动文件
* @param path1
* @param path2
* @throws IOException
*/
public void hdfsRename(String path1,String path2) throws IOException {
fs.rename(new Path(path1),new Path(path2));
fs.close();
} /**
* 删除文件或文件夹
* @param path 路径
* @throws IOException
*/
public void delete(String path) throws IOException {
fs.delete(new Path(path),true);
fs.close();
} /**
* 列出hdfs指定的目录信息
* @param path
* @throws IOException
*/
public void list(String path) throws IOException {
RemoteIterator<LocatedFileStatus> iterator = fs.listFiles(new Path(path), true);
while (iterator.hasNext()){
//拿数据
LocatedFileStatus status = iterator.next();
System.out.println("文件的路径为:" + status.getPath());
System.out.println("文件的块大小为:" + status.getBlockSize());
System.out.println("文件的块信息为:" + Arrays.toString(status.getBlockLocations()));
System.out.println("文件的长度为:" + status.getLen());
System.out.println("文件的副本数为:" + status.getReplication());
System.out.println("=====================================================");
}
fs.close();
} /**
* 判断时文件还是文件夹
* @param parh
* @throws IOException
*/
public void judgeFileOrDir(String parh) throws IOException {
//展示状态信息
FileStatus[] fileStatuses = fs.listStatus(new Path(parh));
//遍历所有文件
for (FileStatus fs:fileStatuses){
if (fs.isFile()){
System.out.println("文件-----f------" + fs.getPath().getName());
}else {
System.out.println("文件-----d------" + fs.getPath().getName());
}
}
}
} public class HdfsDriver {
public static void main(String[] args) {
HdfsClientDemo hcd = new HdfsClientDemo();
try {
//hcd.mkDir("/wyh");
hcd.judgeFileOrDir("/");
hcd.list("/");
} catch (IOException e) {
e.printStackTrace();
}
}
}

  

四、

HDFS常用API(1)的更多相关文章

  1. HDFS常用API操作 和 HDFS的I/O流操作

    前置操作 创建maven工程,修改pom.xml文件: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  2. hdfs常用api(java)

    1.下载文件到本地 public class HdfsUrlTest { static{ //注册url 让java程序识别hdfs的url URL.setURLStreamHandlerFactor ...

  3. HDFS连接JAVA,HDFS常用API

    先在pom.xml中导入依赖包 <dependencies> <!-- https://mvnrepository.com/artifact/org.apache.hadoop/ha ...

  4. HDFS常用API(2)

    一.读取HDFS文件数据.将本地文件写入HDFS中文件.使用IOUtils读写数据 ** * @author: PrincessHug * @date: 2019/3/18, 17:24 * @Blo ...

  5. 大数据(5) - HDFS中的常用API操作

    一.安装java 二.IntelliJ IDEA(2018)安装和破解与初期配置 参考链接 1.进入官网下载IntelliJ IDEA https://www.jetbrains.com/idea/d ...

  6. HDFS Java API 常用操作

    package com.luogankun.hadoop.hdfs.api; import java.io.BufferedInputStream; import java.io.File; impo ...

  7. [b0014] HDFS 常用JAVA 操作实战

    目的: 学习用java进行的常用hdfs操作 参考: [b0002] Hadoop HDFS cmd常用命令练手 环境: hadoop2.6.4 win7 下的eclipse环境调试已经配置好,参考前 ...

  8. html5 canvas常用api总结(一)

    1.监听浏览器加载事件. window.addEventListener("load",eventWindowLoaded,false); load事件在html页面加载结束时发生 ...

  9. compass General 常用api学习[Sass和compass学习笔记]

    compass 中一些常用api 包括一些浏览器hack @import "compass/utilities/general" Clearfix Clearfix 是用来清除浮动 ...

随机推荐

  1. for循环中按条件删除数据元素

    var managerList = [ { id: 0, title: '小小消息的标题1', small: '小小消息内容', newsFlag:true, }, { id: 1, title: ' ...

  2. (*(volatile unsigned long *)详解

    (*(volatile unsigned long *) 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的.如果系统结构支持独立的IO地址空间,并且是端口映射,就必须使用汇编语言完成实 ...

  3. Windows7上完全卸载Oracle 12c操作步骤

    注:本文来源于:< Windows7上完全卸载Oracle  12c操作步骤 > 1.关闭Oracle所有的服务,按[win+R]运行[services.msc]找到所有Oracle开头的 ...

  4. Confluence 6 后台中为站点添加应用导航

    Confluence 6 后台中为站点添加应用导航的连界面和方法. https://www.cwiki.us/display/CONFLUENCEWIKI/Configuring+the+Site+H ...

  5. Executor多线程框架使用

    在我们的JDK1.5的时候JAVA推出一款为了更加方便开发的多线程应用而封装的框架(Executor),相比传统的Thread类,Executor更加的方便,性能好,更易于管理,而且支持线程池.一般在 ...

  6. LeetCode(92):反转链表 II

    Medium! 题目描述: 反转从位置 m 到 n 的链表.请使用一趟扫描完成反转. 说明:1 ≤ m ≤ n ≤ 链表长度. 示例: 输入: 1->2->3->4->5-&g ...

  7. ubuntu MySQL的安装

    https://i.cnblogs.com/EditPosts.aspx?opt=1 https://juejin.im/entry/5adb5deff265da0b9d77cb3b MySQL Co ...

  8. cf1114D 区间dp基础

    最简单的那类区间dp,昨天晚上心态不对,不知道在打什么.. /* dp[l][r]表示区间[l,r]都涂成同色的代价 dp[l][r]可以由dp[l][r-1],dp[l+1][r],dp[l+1][ ...

  9. Nginx详解十七:Nginx深度学习篇之动静分离

    动静分离:通过中间件将动态请求和静态请求分离 作用:分离资源,减少不必要的请求消耗,减少请求延时 动静分离还有个好处就是,当动态请求的后端服务出问题了,只会影响动态的部分,静态资源不影响,照样加载 如 ...

  10. JS实现简单的观察者模式

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...