大数据学习之HDFS基本API操作(上)06

  1 package it.dawn.HDFSPra;
  2
  3 import java.io.FileNotFoundException;
  4 import java.io.IOException;
  5 import java.net.URI;
  6 import java.net.URISyntaxException;
  7 import java.util.Arrays;
  8
  9 import org.apache.hadoop.conf.Configuration;
 10 import org.apache.hadoop.fs.FileStatus;
 11 import org.apache.hadoop.fs.FileSystem;
 12 import org.apache.hadoop.fs.LocatedFileStatus;
 13 import org.apache.hadoop.fs.Path;
 14 import org.apache.hadoop.fs.RemoteIterator;
 15 import org.junit.Before;
 16 import org.junit.Test;
 17
 18 /**
 19  * @version 1.0
 20  * @author Dawn
 21  * @since 2019年4月27日22:42:32
 22  *
 23  * 注意:1.需要配置hadoop环境
 24  *         2.需要编译好的winutil包
 25  */
 26 public class HdfsClientDemo01 {
 27
 28     public static FileSystem fs=null;
 29     public static String hdfs="hdfs://192.168.40.11:9000";
 30
 31     //初始化加载
 32     @Before
 33     public void init() throws IOException, InterruptedException, URISyntaxException
 34     {
 35         System.setProperty("hadoop.home.dir", "E:\\hadoop2.7.3\\hadoop-2.7.3");
 36         // 1.加载配置
 37         Configuration conf= new Configuration();
 38         // 2.设置副本数 默认3块
 39         conf.set("dfs.replication", "2");
 40         // 3.设置块大小 默认128m
 41         conf.set("dfs.blocksize", "64m");
 42         // 4.构造客户端
 43         fs=FileSystem.get(new URI(hdfs), conf, "root");
 44     }
 45
 46     /*
 47      * 上传文件
 48      * hdfs dfs -put /文件名 /hdfs目录
 49      */
 50     @Test
 51     public void hdfsUpData() throws IllegalArgumentException, IOException
 52     {
 53         //上传文件
 54         fs.copyFromLocalFile(new Path("f:/temp/xxx.txt"), new Path("/"));
 55         //2.关闭资源
 56         fs.close();
 57     }
 58
 59
 60     /*
 61      * 下载文件
 62      * hdfs dfs -get /hdfs文件 /文件目录
 63      */
 64     @Test
 65     public void hdfsDownload() throws IllegalArgumentException, IOException {
 66         //下载文件
 67         fs.copyToLocalFile(new Path("/xxx.txt"), new Path("f:/"));
 68
 69         fs.close();
 70     }
 71
 72
 73     /*
 74      * 1:在hdfs中创建文件夹
 75      * hdfs dfs -mkdir /文件名
 76      */
 77     @Test
 78     public void hdfsMkdir() throws IllegalArgumentException, IOException
 79     {
 80         //1.调用创建文件夹方法
 81         fs.mkdirs(new Path("/dawn/ss"));
 82         System.out.println("创建成功");
 83         //2.关闭资源
 84         fs.close();
 85     }
 86
 87     /*
 88      * 2:在hdfs中 移动/修改 文件
 89      * 相当于Ctrl+x
 90      */
 91     @Test
 92     public void hdfsRename() throws IllegalArgumentException, IOException
 93     {
 94         //1.调用移动并修改
 95         fs.rename(new Path("/test/a.txt"), new Path("/dawn/renamea.txt"));
 96         //2.关闭资源
 97         fs.close();
 98     }
 99
100     /*
101      * 3:在hdfs中删除文件夹
102      * hdfs dfs -rm -r /
103      */
104     @Test
105     public void hdfsRm() throws IllegalArgumentException, IOException
106     {
107         //fs.delete(new Path("/hunterhenshuai"));
108         //1.调用删除文件方法 参数1:删除的路径 参数2:是否递归删除
109         fs.delete(new Path("/test"), true);
110         fs.close();
111
112     }
113
114     /*
115      * 4:查询hdfs下制定的目录信息
116      */
117     @Test
118     public void hdfsLs() throws FileNotFoundException, IllegalArgumentException, IOException
119     {
120         //1.调用方法 返回远程迭代器
121         RemoteIterator<LocatedFileStatus> iter=fs.listFiles(new Path("/dawn"), true);
122
123         //2.取迭代器数据
124         while(iter.hasNext())
125         {
126             //拿数据
127             LocatedFileStatus status=iter.next();
128
129             System.out.println("文件路径为:"+status.getPath());
130             System.out.println("块大小为:"+status.getBlockSize() / (1024*1024) );
131             System.out.println("文件长度:"+ status.getLen());
132             System.out.println("副本数量为:"+status.getReplication());
133             System.out.println("块信息为:"+Arrays.asList(status.getBlockLocations()));
134
135             System.out.println("============================>");
136         }
137
138         //3.关闭资源
139         fs.close();
140
141     }
142
143     /*
144      * 5:判断文件还是文件夹
145      */
146     @Test
147     public void findIsFOrD() throws FileNotFoundException, IllegalArgumentException, IOException {
148         //1.展示状态信息
149         FileStatus[] listStatus = fs.listStatus(new Path("/"));
150
151         //2.遍历所有文件
152         for(FileStatus ls:listStatus) {
153             if(ls.isFile()) {
154                 //文件
155                 System.out.println("文件----f----" +ls.getPath().getName());
156             }else {
157                 //文件夹
158                 System.out.println("文件夹----d----" +ls.getPath().getName());
159             }
160         }
161     }
162
163 }

原文地址:https://www.cnblogs.com/hidamowang/p/10781139.html

时间: 2024-11-05 21:54:02

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

大数据学习之ubuntu的基础操作

时隔两个星期,学习了和复习了大数据的一些基本操作,第一系列是ubuntu的基础! 基础涉及到: 1.virtualBOX的安装和使用 2.FTP工具传输 3.root用户密码设置和vim的安装 4.创建用户并设置权限:这里使用Hadoop用户 5.ssh免密码登入的设置 6.Java环境的安装和配置 7.文件权限的修改和操作 原文地址:https://www.cnblogs.com/R-HLC0401/p/10085690.html

大数据学习之四——HDFS

1.Hadoop与HDFS的关系 Hadoop实现了一个分布式文件系统,即Hadoop Distributed File System,简称HDFS.对外部客户机而言,HDFS就像一个传统的分级文件系统,所以,很多时候,我们也叫它DFS(Distributed File System).可以理解为HDFS是Hadoop中的一个部件. 文件系统由三部分组成:文件管理软件.被管理文件.文件存储结构 2.HDFS存储(流处理,块存储) HDFS以流处理访问模式来存储文件的.分布化的文件系统会因为分布后

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

1)hdfs的客户端 1.网页形式->测试用 http://192.168.40.11:50070/dfshealth.html#tab-overview 2.命令行形式->测试用 3.企业级API 2)查看帮助 hdfs dfs -help 3)查看当前目录信息 hdfs dfs -ls / 3)上传文件 hdfs dfs -put /本地路径 /hdfs路径 4)剪切文件 hdfs dfs -moveFromLocal a.txt /aa.txt 5)下载文件到本地 hdfs dfs -g

大数据学习之五——HDFS常用命令

HDFS文件操作常用命令: (1)列出HDFS下的文件 hadoop  dfs  -ls  <目录> (2)上传文件 将Linux系统本地文件上传到HDFS中 hadoop  dfs  -put  <本地文件>  <HDFS文件> (3)下载文件 将HDFS 中的文件下载到Linux系统本地目录 hadoop   dfs  -get  <HDFS文件>  <本地文件> (4)查看文件 hadoop  dfs  -cat  <HDFS文件&g

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

1:namenode+secondaryNameNode工作机制 2:datanode工作机制 3:HDFS中的通信(代理对象RPC) 下面用代码来实现基本的原理 1:服务端代码 package it.dawn.HDFSPra.RPC.server; import java.io.IOException; import org.apache.hadoop.HadoopIllegalArgumentException; import org.apache.hadoop.conf.Configura

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

史上最全“大数据”学习资源整理

史上最全"大数据"学习资源整理 当前,整个互联网正在从IT时代向DT时代演进,大数据技术也正在助力企业和公众敲开DT世界大门.当今"大数据"一词的重点其实已经不仅在于数据规模的定义,它更代表着信息技术发展进入了一个新的时代,代表着爆炸性的数据信息给传统的计算技术和信息技术带来的技术挑战和困难,代表着大数据处理所需的新的技术和方法,也代表着大数据分析和应用所带来的新发明.新服务和新的发展机遇. 为了帮助大家更好深入了解大数据,云栖社区组织翻译了GitHub Aweso

大数据学习路线(自己制定,从零开始)

大数据已经火了很久了,一直想了解它学习它结果没时间,了解了一些资料,结合我自己的情况,整理了一个学习路线,. 学习路线 Linux(shell,高并发架构,lucene,solr) Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume) 机器学习(R,mahout) Storm(Storm,kafka,redis) Spark(scala,spark,spark core,spark sql,spark stream

大数据学习路径

大数据学习路径我vx ①⑤零零③④③⑥⑨③① 备注 A 更多大数据第一阶段linux+搜索+hadoop体系 Linux基础→shell编程→高并发架构→lucene,solr搜索→hadoop体系→HDFS→mapreduce→hbase→zookeeper→hive→flume→sqoop→项目实战一 第二阶段机器学习 R语言→mahout→项目实战二 第三阶段storm流式计算 kafka→storm→redis→项目实战三 第四阶段spark内存计算 scala编程→spark core