hadoop04-hdfs-shell操作和代码操作
基本语法:hadoop fs 具体命令 / hdfs dfs 具体命令 (两种方式完全相同)
启动hadoop集群,单启 sbin/start-dfs.sh 也可以
命令语法帮助 hadoop fs -help rm -> 查看rm 命令如何使用
创建一个名为sanguo的文件夹
三大类命令:
上传
创建文本文件, vim shuguo.txt ,vim weiguo.txt , vim wuguo.txt , vim liubei.txt 里面随便写点内容,用于后续使用
hadoop fs -moveFromLocal ./shuguo.txt /sanguo 将shuguo.txt移动到sanguo文件夹下(move移动,原文件会被删除)
hadoop fs -copyFromLocal ./weiguo.txt /sanguo 将weiguo.txt复制到sanguo文件夹下(copy复制,原文件保留)
hadoop fs -put ./wuguo.txt /sanguo -> 同copyFromLocal一样
hadoop fs -appendToFile ./liubei.txt /sanguo/shuguo.txt 将liubei.txt追加到shuguo.txt文件的末尾
下载
hadoop fs -copyToLocal /sanguo/shuguo.txt /opt 将shuguo.txt文件从HDFS上拷贝到opt下
hadoop fs -get /sanguo/shuguo.txt /opt/shuguo2.txt 将shuguo.txt文件从hadoop上拷贝到opt下,并改名为shuguo2.txt,和copyToLocal用法一样
操作HDFS
hadoop fs -ls / 查看hadoop根目录下的目录信息
hadoop fs -cat /sanguo/shuguo.txt 显示文件内容
-chgrp / -chmod / -chown 和linux用法一样,用于修改文件所属权限
hadoop fs -chomd 666 /sanguo/shuguo.txt
hadoop fs -chown root:root /sanguo/shuguo.txt
hadoop fs -mkdir /jinguo 创建一个名为jinguo 的文件夹
hadoop fs -cp /sanguo/shuguo.txt /jinguo 将HDFS上的shuguo.txt 拷贝到 jinguo文件夹下
hadoop fs -cp /sanguo/weiguo.txt /jinguo 将HDFS上的weiguo.txt 拷贝移动**到 jinguo文件夹下
hadoop fs -tail /jinguo/shuguo.txt 显示一个文件的末尾1kb的数据
hadoop fs -rm /sanguo/shuguo.txt 将shuguo.txt 删除 (-rm -r 递归删除)
hadoop fs -du -s -h /jinguo 统计文件夹的总大小信息 (第一个数表示文件大小,第二个数表示副本总大小)
hadoop fs -du -h /jinguo 统计文件夹下所有文件的大小信息
hadoop fs -setrep 5 /jinguo/shuguo.txt 设置文件的副本数
这里设置的副本数只是会记录在NameNode的元数据中,具体存几份副本,需要看有几台服务器(DataNode),比如当前我们只有三台服务器,每台服务器存一个副本是有意义的,但一台服务器上存多个相同的副本是没有意义的,因为一台服务器宕机,你里面存多少个都是无意义的,所以即使我们设置副本数为5,也只会暂时存3份,等增加服务器后,再相应的增加副本数
Hadoop 代码操作:
创建maven项目,配置依赖
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.3.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
命令
// 准备环境--------------------------------------------------
FileSystem fs = null;

浙公网安备 33010602011771号