hadoop(四)hadoop组件之HDFS-HDFS客户端操作
HDFS客户端操作
Shell 操作
官网命令参考 https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html
hdfs 基本shell
1 | hadoop fs |
hadoop fs 等价于 hdfs dfs

可以看到目录主要分为
对目录的操作
对文件的操作
权限的操作
目录的操作
创建 mkdir
ls 查看目录下的文件
du 统计文件夹的大小
文件的操作
- cat 查看文件
- appendToFile 追加文件 hadoop fs -appendToFile test /folder1/test
- put 上传 hadoop fs -put test /folder1
- cp 拷贝
权限的操作
- chmod 设置权限
- chown 设置归属
其他操作
- setrep 设置副本数量
客户端操作
配置hadoop环境变量
为什么要配置环境变量呢,是因为hadoop的Api中,是部分Api调用到了本地方法库。所以需要配置hadoop的环境变量信息。
wiki 链接 https://cwiki.apache.org/confluence/display/HADOOP2/WindowsProblems
- 配置HADOOP_HOME
- 配置Path环境变量,并且需要包含 WINUTILS.EXE
下载相关的本地执行文件
https://github.com/steveloughran/winutils

下载后有多个版本的,这里直接选用3.x版本的

配置环境变量
配置 HADOOP_HOME 和 PATH = %HADOOP_HOME%/bin

配置完毕后,重启电脑;
必须要重启,不然系统无法加载hadoop相关类库函数
引入相关依赖
引入核心包和日志实现
1 |
|
配置log4j.xml
1 |
|
配置运行的jvm参数。
1 | -DHADOOP_USER_NAME=hadoop |
这样请求的时候会默认使用此用户的信息;
核心API对象
Configuration
配置对象,可以设置相关的配置信息
1 | Configuration configuration = new Configuration(); |
FileSystem
几乎所有的操作就是由此对象操作
1 | Configuration configuration = new Configuration(); |
使用完毕后将此对象进行关闭
1 | fs.close(); |
API 操作
创建目录
1 | fs.create(new Path("/newFolder")); |

删除目录
1 | fs.delete(new Path("/newFolder"),true); |
参数说明: 第二个参数是否能递归删除
上传文件
1 | fs.copyFromLocalFile(false,true,new Path("E:\\note\\新建文本文档.txt"),new Path("/test33")); |
参数说明:
是否删除本地文件
是否覆盖目录文件,如果为false,那么已存在就不能上传了
本地目录
远程目录
获取文件状态
FsStatus status = fs.getStatus(new Path("/test33/新建文本文档.txt"));
long capacity = status.getCapacity();
long remaining = status.getRemaining();
long used = status.getUsed();
System.out.println(capacity);
System.out.println(remaining);
System.out.println(used);
下载到本地
1 | fs.copyToLocalFile(false,new Path("/test33/新建文本文档.txt"),new Path("E:\\note\\新建文本文档.txt")); |
遍历文件
//最后一个参数表示是否递归遍历
1 | RemoteIterator<LocatedFileStatus> locatedFileStatusRemoteIterator = fs.listFiles(new Path("/"), true); |
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment


