创建Maven项目
-
创建Maven项目 - HDFSDemo
-
单击【Finish】按钮
-
添加相关依赖
- 在
pom.xml
文件里添加hadoop
和junit
依赖 -
Maven Repository(Maven仓库)- https://mvnrepository.com/
- 单击
hadoop-client
超链接 -
单击
3.3.4
超链接 -
创建日志属性文件
-
在
resources
目录里创建log4j.properties
文件 -
启动集群HDFS服务
-
在主节点上执行命令:
start-dfs.sh
-
在Hadoop WebUI界面查看
-
在HDFS上创建文件
- 在HDFS Shell里利用
hdfs dfs -touchz
命令可以创建时间戳文件 - 任务:在
/ied01
目录创建hadoop.txt
文件 - 创建
net.hw.hdfs
包,在包里创建CreateFileOnHDFS
类
运行程序,查看结果
如果报以下错误
解决办法
最后的结果:
利用Hadoop WebUI查看
在/ied01目录里确实创建了一个0字节的hadoop.txt文件,有点类似于Hadoop Shell里执行hdfs dfs -touchz /ied01/hadoop.txt命令的效果,但是有一点不同,hdfs dfs -touchz命令重复执行,不会失败,只是不断改变该文件的时间戳。
再次运行程序,由于hadoop.txt已经存在,此时会提示用户创建失败
能否事先判断文件是否存在呢?我们去查看Hadoop FileSystem API文档
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/filesystem/filesystem.html
查看exists(Path path)
方法
编写create2()
方法,事先判断文件是否存在
@Test
public void create2() throws Exception {
// 创建配置对象
Configuration conf = new Configuration();
// 定义统一资源标识符(uri:uniform resource identifier)
String uri = "hdfs://master:9000";
// 创建文件系统对象(基于HDFS的文件系统)
FileSystem fs = FileSystem.get(new URI(uri), conf);