HDFS文件系统(含hdfs常用命令,java对hdfs API的简单操作)
HDFS文件系统
- HDFS概念
- 什么是HDFS
- HDFS的组成
- HDFS文件块大小
- HFDS命令行操作
- 基本语法
- 常用命令
- Java操作hdfs
- 配置编译环境
- 获取文件系统
- 上传文件
- 文件下载
- 目录创建
- 删除文件
- 文件重命名
前置条件:hadoop环境搭建完毕。
hadoop环境搭建
HDFS概念
什么是HDFS
HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。HDFS的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
HDFS的组成
HDFS集群包括,NameNode和DataNode以及Secondary Namenode。NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
DataNode 负责管理用户的文件数据块,每一个数据块都可以在多个datanode上存储多个副本。
Secondary NameNode用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
HDFS文件块大小
HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64MHDFS的块比磁盘的块大,其目的是为了最小化寻址开销。如果块设置得足够大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。因而,传输一个由多个块组成的文件的时间取决于磁盘传输速率。如果寻址时间约为10ms,而传输速率为100MB/s,为了使寻址时间仅占传输时间的1%,我们要将块大小设置约为100MB。默认的块大小实际为64MB,但是很多情况下HDFS使用128MB的块设置。块的大小:10ms*100*100M/s = 100M
HFDS命令行操作
基本语法
hdfs dfs -具体命令
或
hadoop fs -具体命令##注:hdfs dfs 和 hadoop fs 的意义是相同的
常用命令
##注:hdfs中大多数命令和linux中的意义是一样的
## -help:输出这个命令参数hadoop fs -help rm## -ls: 显示目录信息hadoop fs -ls /## -mkdir:在hdfs上创建目录 -p 代表递归创建多个文件夹hadoop fs -mkdir -p /aaa/bbb/cc## -moveFromLocal从本地剪切粘贴到hdfshadoop fs - moveFromLocal input/ /input## -moveToLocal:从hdfs剪切粘贴到本地hadoop fs - moveToLocal /input /home/test## -appendToFile :追加一个文件到已经存在的文件末尾hadoop fs -appendToFile ./hello.txt /hello.txt## -cat :显示文件内容hadoop fs -cat /hello.txt## -tail:显示一个文件的末尾hadoop fs -tail /hello.txt## -text:以字符形式打印一个文件的内容hadoop fs -text /hello.txt## -chgrp 、-chmod、-chown:linux文件系统中的用法一样,修改文件所属权限hadoop fs -chmod 666 /hello.txt## -copyFromLocal:从本地文件系统中拷贝文件到hdfs路径去 hadoop fs -copyFromLocal ./jdk.tar.gz /test## -copyToLocal:从hdfs拷贝到本地hadoop fs -copyToLocal /test/jdk.tar.gz## -cp :从hdfs的一个路径拷贝到hdfs的另一个路径hadoop fs -cp /test1/jdk.tar.gz /test2/jdk.tar.gz.2## -mv:在hdfs目录中移动文件hadoop fs -mv /test/jdk.tar.gz /## -get:等同于copyToLocal,就是从hdfs下载文件到本地hadoop fs -get /test/jdk.tar.gz## -put:等同于copyFromLocalhadoop fs -put /test/jdk.tar.gz /test/jdk.tar.gz.2## -rm:删除文件或文件夹hadoop fs -rm -r /test## -rmdir:删除空目录hadoop fs -rmdir /aaa/bbb/ccy## -df :统计文件系统的可用空间信息hadoop fs -df -h /## -du统计文件夹的大小信息hadoop fs -du -s -h /test/*## -count:统计一个指定目录下的文件节点数量hadoop fs -count /aaa/## -setrep:设置hdfs中文件的副本数量hadoop fs -setrep 3 /aaa/jdk.tar.gz注:这里设置的副本数只是记录在namenode的元数据中,是否真的会有这么多副本,还得看datanode的数量。因为目 前只有3台设备,最多也就3个副本,只有节点数的增加到10台时,副本数才能达到10。
Java操作hdfs
配置编译环境
##将下载好编译过的hadoop文件和jar解压到纯英文路径
##配置HADOOP_HOME
##将lib下的所有jar导入到 ide 中下载地址:https://pan.baidu.com/s/1e8VnWSLNowePJjDDHV0ddw 提取码:7ozz
获取文件系统
c
public void initHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();// 2 获取文件系统FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root");// 3 打印文件系统System.out.println(fs.toString());
}
上传文件
@Test
public void putFileToHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root");// 2 创建要上传文件所在的本地路径Path src = new Path("c:/hello.txt");// 3 创建要上传到hdfs的目标路径Path dst = new Path("hdfs://hadoop集群地址:9000/hello.txt");// 4 拷贝文件fs.copyFromLocalFile(src, dst);fs.close();
}
文件下载
@Test
public void getFileFromHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root"); // 2 下载文件// boolean delSrc 指是否将原文件删除// Path src 指要下载的文件路径// Path dst 指将文件下载到的路径// boolean useRawLocalFileSystem 是否开启文件效验fs.copyToLocalFile(false, new Path("/hello.txt"), new Path("d:/hellocopy.txt"), true);fs.close();
}
目录创建
@Test
public void mkdirAtHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root"); //2 创建目录fs.mkdirs(new Path("/user/output"));fs.close();
}
删除文件
@Test
public void deleteAtHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root"); //2 删除文件夹时 ,如果是非空文件夹,参数2必须给值truefs.delete(new Path("/user/output"), true);fs.close();
}
文件重命名
@Test
public void renameAtHDFS() throws Exception{// 1 创建配置信息对象Configuration configuration = new Configuration();FileSystem fs = FileSystem.get(new URI("hdfs://hadoop集群地址:9000"),configuration, "root");//2 重命名文件或文件夹fs.rename(new Path("/hello.txt"), new Path("/hellonihao.txt"));fs.close();
}
HDFS文件系统(含hdfs常用命令,java对hdfs API的简单操作)相关推荐
- Linux文件系统简介及常用命令
在linux系统中一切皆是文件,下面简要总结了一下linux文件系统中分区类型.文件系统类型以及常用命令. 一.分区类型 1.主分区:最多只能有四个 2.扩展分区:只能有一个,也可以看做是主分区的一种 ...
- linux常用命令 java,Java工程在Linux常用命令
Java Web工程 在Linux下操作常用命令 cd ../ 退出当前目录,前往父文件夹 cd ezoffice 进入ezoffice文件夹 ls 查看目录 ps -ef|grep java 查看J ...
- 常用命令-JAVA大数据-Week5-DAY2-linux
文章目录 前言 2.Linux 2.1 目录结构 2.2.3. 目录查看.目录创建和目录删除命令 2.2.4. 目录切换命令 2.2.5. 文件操作命令 2.2.5.1. touch 常见使用方式: ...
- birt java api_BIRT使用API进行简单部署
在网上查了下BIRT的文章,不是很多.而且讲述的也不是十分全面.还是得自己琢磨啊. 刚实验好,贴上来分享一下共同交流.希望也能帮助到对API部署还困惑的人. 做这个纯粹是看官网上的例子,还有好多疑点, ...
- java hdfs 新建目录_如何用java在hdfs中创建一个新目录?
public static void main(String[] args) throws IOException, URISyntaxException { ????????????配置config ...
- 常用的Java流程引擎API开发调用接口大全-工作流引擎设计
关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 一.程序调用开发接口 二. 接口说明 所谓的驰骋工作流引擎的接口, ...
- java 简单使用baidu地图API进行简单操作
1.获取百度地图AK [链接网址:百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com)](百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com ...
- JAVA的循环结构以及简单操作
1.循环结构分为几种? 分为三种:for循环:while循环:do...while循环: 1.1for循环:适合次数比较固定的情况 for(初始化变量:条件语句:变量的变化) { 代码 } ...
- HDFS的访问方式之HDFS shell的常用命令
场景 CentOS7上搭建Hadoop集群(入门级): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119335883 在上面搭 ...
最新文章
- 【Python】keras卷积神经网络识别mnist
- 双击.exe文件出现Debug Error: abort() has been called解决办法(之一)
- 老司机也晕车--java字符串String晕车之旅
- java的简单工厂模式_java设计模式之简单工厂模式
- pythoni屏幕连点_【Flutter组件】仿抖音双击点赞弹出爱心效果(可连点)
- 2016-8-2更新日志
- NAT(NAPT)地址转换过程
- html 内嵌xml数据库,是否可以在SQLite数据库中存储XML/HTML文件?
- 真狠!10000mAh超大电池手机发布,真的神机...
- Build Settings发布设置
- NYOJ题目37-回文字符串
- 找出大于200的最小的质数
- Java Web三大组件
- 掌控你的信息流:在自己的VPS上部署RSSHub
- Cosine Similarity(余弦相似度)
- 《袁老师访谈录》第十九期-【在商言商·思享会】(第一场)“企业如何抓住新一代科技红利”...
- 北京师范大学计算机学院 姚力,姚力(北京师范大学信息科学与技术学院院长)_百度百科...
- 麦克劳林公式怎么记忆_怎么背麦克劳林公式?
- 超级通俗易懂的自然连接
- MATLAB——patch绘制多边形
热门文章
- AI看脸就知道性取向,不服气的我做了一个实验,结果……
- 第十六讲 A5流密码算法
- 公司sns JSSDK组件列表-20131011
- 搭建My Batis(Maven + MySql + log4j)
- 【进阶C语言】静态版通讯录的实现(详细讲解+全部源码)
- python面向对象-老王开枪
- 福禄克DSX-5000、8000网线测试仪如何解决不良线缆问题
- Coinbase入局带火以太坊L2生态,Arbitrum生态大盘点
- 接口推送数据原理_数据同步组件(Canal)在珍爱网的应用与实践
- Python中字符串使用单引号、双引号标识和三引号标识,什么是三引号?什么情况下用哪种标识?