package it.dawn.HDFSPra;

 import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Arrays; import org.apache.hadoop.conf.Configuration;
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.junit.Before;
import org.junit.Test; /**
* @version 1.0
* @author Dawn
* @since 2019年4月27日22:42:32
*
* 注意:1.需要配置hadoop环境
* 2.需要编译好的winutil包
*/
public class HdfsClientDemo01 { public static FileSystem fs=null;
public static String hdfs="hdfs://192.168.40.11:9000"; //初始化加载
@Before
public void init() throws IOException, InterruptedException, URISyntaxException
{
System.setProperty("hadoop.home.dir", "E:\\hadoop2.7.3\\hadoop-2.7.3");
// 1.加载配置
Configuration conf= new Configuration();
// 2.设置副本数 默认3块
conf.set("dfs.replication", "2");
// 3.设置块大小 默认128m
conf.set("dfs.blocksize", "64m");
// 4.构造客户端
fs=FileSystem.get(new URI(hdfs), conf, "root");
} /*
* 上传文件
* hdfs dfs -put /文件名 /hdfs目录
*/
@Test
public void hdfsUpData() throws IllegalArgumentException, IOException
{
//上传文件
fs.copyFromLocalFile(new Path("f:/temp/xxx.txt"), new Path("/"));
//2.关闭资源
fs.close();
} /*
* 下载文件
* hdfs dfs -get /hdfs文件 /文件目录
*/
@Test
public void hdfsDownload() throws IllegalArgumentException, IOException {
//下载文件
fs.copyToLocalFile(new Path("/xxx.txt"), new Path("f:/")); fs.close();
} /*
* 1:在hdfs中创建文件夹
* hdfs dfs -mkdir /文件名
*/
@Test
public void hdfsMkdir() throws IllegalArgumentException, IOException
{
//1.调用创建文件夹方法
fs.mkdirs(new Path("/dawn/ss"));
System.out.println("创建成功");
//2.关闭资源
fs.close();
} /*
* 2:在hdfs中 移动/修改 文件
* 相当于Ctrl+x
*/
@Test
public void hdfsRename() throws IllegalArgumentException, IOException
{
//1.调用移动并修改
fs.rename(new Path("/test/a.txt"), new Path("/dawn/renamea.txt"));
//2.关闭资源
fs.close();
} /*
* 3:在hdfs中删除文件夹
* hdfs dfs -rm -r /
*/
@Test
public void hdfsRm() throws IllegalArgumentException, IOException
{
//fs.delete(new Path("/hunterhenshuai"));
//1.调用删除文件方法 参数1:删除的路径 参数2:是否递归删除
fs.delete(new Path("/test"), true);
fs.close(); } /*
* 4:查询hdfs下制定的目录信息
*/
@Test
public void hdfsLs() throws FileNotFoundException, IllegalArgumentException, IOException
{
//1.调用方法 返回远程迭代器
RemoteIterator<LocatedFileStatus> iter=fs.listFiles(new Path("/dawn"), true); //2.取迭代器数据
while(iter.hasNext())
{
//拿数据
LocatedFileStatus status=iter.next(); System.out.println("文件路径为:"+status.getPath());
System.out.println("块大小为:"+status.getBlockSize() / (1024*1024) );
System.out.println("文件长度:"+ status.getLen());
System.out.println("副本数量为:"+status.getReplication());
System.out.println("块信息为:"+Arrays.asList(status.getBlockLocations())); System.out.println("============================>");
} //3.关闭资源
fs.close(); } /*
* 5:判断文件还是文件夹
*/
@Test
public void findIsFOrD() throws FileNotFoundException, IllegalArgumentException, IOException {
//1.展示状态信息
FileStatus[] listStatus = fs.listStatus(new Path("/")); //2.遍历所有文件
for(FileStatus ls:listStatus) {
if(ls.isFile()) {
//文件
System.out.println("文件----f----" +ls.getPath().getName());
}else {
//文件夹
System.out.println("文件夹----d----" +ls.getPath().getName());
}
}
} }

大数据学习之HDFS基本API操作(上)06的更多相关文章

  1. 大数据学习之HDFS基本API操作(下)06

    hdfs文件流操作方法一: package it.dawn.HDFSPra; import java.io.BufferedReader; import java.io.FileInputStream ...

  2. 大数据学习之HDFS基本命令操作05

    1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企 ...

  3. 大数据学习之hdfs集群安装部署04

    1-> 集群的准备工作 1)关闭防火墙(进行远程连接) systemctl stop firewalld systemctl -disable firewalld 2)永久修改设置主机名 vi ...

  4. 大数据学习笔记——HDFS写入过程源码分析(1)

    HDFS写入过程方法调用逻辑 & 源码注释解读 前一篇介绍HDFS模块的博客中,我们重点从实践角度介绍了各种API如何使用以及IDEA的基本安装和配置步骤,而从这一篇开始,将会正式整理HDFS ...

  5. 大数据学习笔记——HDFS写入过程源码分析(2)

    HDFS写入过程注释解读 & 源码分析 此篇博客承接上一篇未讲完的内容,将会着重分析一下在Namenode获取到元数据后,具体是如何向datanode节点写入真实的数据的 1. 框架图展示 在 ...

  6. 大数据学习笔记——HDFS理论知识之编辑日志与镜像文件

    HDFS文件系统——编辑日志和镜像文件详细介绍 我们知道,启动Hadoop之后,在主节点下会产生Namenode,即名称节点进程,该节点的目录下会保存一份元数据,用来记录文件的索引,而在从节点上即Da ...

  7. 大数据学习之HDFS的工作机制07

    1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it ...

  8. 大数据学习笔记——Hadoop编程实战之HDFS

    HDFS基本API的应用(包含IDEA的基本设置) 在上一篇博客中,本人详细地整理了如何从0搭建一个HA模式下的分布式Hadoop平台,那么,在上一篇的基础上,我们终于可以进行编程实操了,同样,在编程 ...

  9. 大数据学习路线,来qun里分享干货,

    一.Linux lucene: 全文检索引擎的架构 solr: 基于lucene的全文搜索服务器,实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面. 推荐一个大数据学习群 ...

随机推荐

  1. java 数字左补齐0

    NumberFormat nf = NumberFormat.getInstance();        //设置是否使用分组        nf.setGroupingUsed(false);    ...

  2. EditText以及登录UI实现

    EditText是可以输入的文本框 <?xml version="1.0" encoding="utf-8"?><RelativeLayout ...

  3. showdoc app接口文档编写利器

    通过朋友介绍,才知道有这么好的一个在线接口编写文档开源项目,非常感谢原作者的贡献 ShowDoc介绍 关于ShowDoc的介绍,请访问:http://blog.star7th.com/2015/11/ ...

  4. BAT面试经验分享——iOS高级开发工程师的自我总结!

    序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了. 今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,随着各大公司秋招的开始,很多小伙伴都行动起来了,我也有幸获得了一份不 ...

  5. (七) UVC框架分析

    title: UVC框架分析 date: 2019/4/23 19:50:00 toc: true --- UVC框架分析 源码的位置在drivers\media\video\uvc,查看下Makef ...

  6. 打开MCMC(马尔科夫蒙特卡洛)的黑盒子 - Pymc贝叶斯推理底层实现原理初探

    我们在这篇文章里有尝试讨论三个重点.第一,讨论的 MCMC.第二,学习 MCMC 的实现过程,学习 MCMC 算法如何收敛,收敛到何处.第三,将会介绍为什么从后验分布中能返回成千上万的样本,也许读者和 ...

  7. Linux工具安装和常用配置

    1 常用开发工具安装 1 安装Mysql ①基本安装 wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm: s ...

  8. SQL Server 游标的使用示例

    Ø  简介 本文主要记录 MSSQL 中的游标使用示例,在有必要时方便借鉴查阅.游标一般定义在某段功能性的 SQL 语句中,或者存储过程中.之所以选择用它,是因为有时候无法使用简单的 SQL 语句满足 ...

  9. Python——Python+Pydev出现SyntaxError: Non-UTF-8 code

    搭建好Python+Pydev后发现每次输入中文,包括注释,会出现语法错误提示,如: SyntaxError: Non-UTF-8 code starting with... 可通过下面方法解决. 1 ...

  10. 在mysql 5.7中,创建表的字段名中包含双引号的时候,执行会报错

    解决办法,添加 SET SESSION SQL_MODE=ANSI_QUOTES;