Hadoop之HDFS的使用
- 开源代码
- 2025-09-07 03:54:02

HDFS是什么:HDFS是一个分布式的文件系统,是个网盘,HDFS是一种适合大文件存储的分布式文件系统
HDFS的Shell操作
1、查看hdfs根目录下的内容 - ls
hdfs dfs -ls hdfs://hadoop01:9000/
url 在 使 用 时 默 认 是 可 以 省 略 的 , 因 为 hdfs 在 执 行 的 时 候 会 根 据HDOOP_HOME自动识别配置文件中的fs.defaultFS属性
可以写成:hdfs dfs -ls /
还有一版旧版写法
hadoop fs -ls /
想要递归显示所有目录的信息,可以在ls后面添加-R参数
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -ls -R /
2、从本地上传文件 - put
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -put README.txt /
3、查看HDFS文件内容 - cat
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -cat /README.txt
4、下载文件到本地 - get
// 防止当前目录中已经有这个文件了,要么换到其它目录,要么给文件重命名
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -get /README.txt README.txt.bak
5、[创建文件夹 - mkdir
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -mkdir /test
// 如果要递归创建多级目录,还需要再指定-p参数
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -mkdir -p /abc/xyz
6、 删除文件/文件夹 - rm
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -rm /README.txt
// 删除目录需要指定-r参数
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -rm -r /test
7、统计根目录下文件的个数
[root@bigdata01 hadoop-3.2.0]# hdfs dfs -ls / |grep /| wc -l
8、hdfs dfs 可以配置简写
// 临时配置
alias hls="hdfs dfs -ls"
// 永久配置
nano ~/.bashrc
alias hls="hdfs dfs -ls"
source ~/.bashrc
// 验证
hls /
9、Java 操作 HDFS
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FSDataOutputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import java.io.FileInputStream; import java.io.IOException; import java.net.URI; /** * Java代码操作HDFS * 文件操作:上传文件、下载文件、删除文件 * Created by xuwei */ public class HdfsOp { public static void main(String[] args) throws Exception{ //创建一个配置对象 Configuration conf = new Configuration(); //指定HDFS的地址 conf.set("fs.defaultFS","hdfs://bigdata01:9000"); //获取操作HDFS的对象 FileSystem fileSystem = FileSystem.get(conf); put(fileSystem); } /** * 文件上传 * @param fileSystem * @throws IOException */ private static void put(FileSystem fileSystem) throws IOException { //获取HDFS文件系统的输出流 FSDataOutputStream fos = fileSystem.create(new Path("/user.txt")); //获取本地文件的输入流 FileInputStream fis = new FileInputStream("D:\\user.txt"); //上传文件:通过工具类把输入流拷贝到输出流里面,实现本地文件上传到HDFS IOUtils.copyBytes(fis,fos,1024,true); } } /** * 下载文件 * @param fileSystem * @throws IOException */ private static void get(FileSystem fileSystem) throws IOException{ //获取HDFS文件系统的输入流 FSDataInputStream fis = fileSystem.open(new Path("/README.txt")); //获取本地文件的输出流 FileOutputStream fos = new FileOutputStream("D:\\README.txt"); //下载文件 IOUtils.copyBytes(fis,fos,1024,true); } /** * 删除文件 * @param fileSystem * @throws IOException */ private static void delete(FileSystem fileSystem) throws IOException{ //删除文件,目录也可以删除 //如果要递归删除目录,则第二个参数需要设置为true //如果是删除文件或者空目录,第二个参数会被忽略 boolean flag = fileSystem.delete(new Path("/LICENSE.txt"),true); if(flag){ System.out.println("删除成功!"); }else{ System.out.println("删除失败!"); } }Hadoop之HDFS的使用由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Hadoop之HDFS的使用”