一、HDFS-API-mkdir创建目录文件
使用HDFS API的方式来操作HDFS文件系统
- 创建maven骨架项目工程
- 在pom.xml文件中添加依赖
# properties节点中添加版本控制
<!--定义Hadoop版本-->
<hadoop.version>2.6.0-cdh5.15.1</hadoop.version>
# 在dependencies节点下添加
<!--添加Hadoop依赖包-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
# repositories节点下添加
<!--引入cdh仓库-->
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
</repository>
- java简单代码
public static void main(String[] args) throws Exception {
// 获取配置对象
Configuration configuration = new Configuration();
// 通过final URI uri, final Configuration conf, final String user)构造fileSystem
FileSystem fileSystem = FileSystem.get(new URI("hdfs://139.129.240.xxx:8020"), configuration, "root");
// 需要创建的文件路径
Path path = new Path("/hdfsapi/test");
// 创建文件路径
boolean result = fileSystem.mkdirs(path);
System.out.println("result--->" + result);
}
- 运行结果
- 查看服务器结果,命令:
hadoop fs -ls /
- 出现的问题:
- 因为我用阿里云搭建的,启动hadoop服务的端口是8020,安全添加了该规则但是依旧拒绝访问。
- 需要将core-site.xml配置改成hdfs://0.0.0.0:8020任意主机可访问,或者是自己的主机ip
- 代码调试出现Permission denied: user=localhost, access=WRITE, inode="/":root:supergroup:drwxr-xr-x
- 将FileSystem.get里的user参数改成提示的用户root。
- 因为我用阿里云搭建的,启动hadoop服务的端口是8020,安全添加了该规则但是依旧拒绝访问。