idea 创建maven工程
略
修改pom.xml
添加如下依赖:
junit
junit
4.13.1
org.apache.hadoop
hadoop-common
3.0.3
org.apache.hadoop
hadoop-client
3.0.3
org.apache.hadoop
hadoop-hdfs
3.0.3
在 pom.xml 点击右键 -> 【maven】 -> 【reimport】 导入依赖
log4j.properties
打印 hadoop debug 信息
在 resources 文件夹下创建 log4j.properties 文件,内容如下:
log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
创建测试类
在 test -> java 下创建类 top.malaoshi.test.Main,内容如下:
package top.malaoshi.test;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.Test;
import java.net.URI;
public class Main {
@Test
public void mkdir() throws Exception {
Configuration config = new Configuration();
// 1 获取文件系统。设置集群url、操作用户
FileSystem fs = FileSystem.get(new URI("hdfs://localhost:9000"), config, "root");
// 2 创建目录
boolean res=fs.mkdirs(new Path("/test"));
System.out.println("result:"+res);
// 3 关闭
fs.close();
}
}
解释:hdfs://localhost:9000
hdfs://localhost:9000 是 etc/hadoop/core-site.xml 中的配置,如下:
fs.defaultFS
hdfs://0.0.0.0:9000
端口号要一直
IP不一致,是因为 物理机上开发java程序,所以是 hdfs://localhost:9000
hadoop在虚拟机上,所以是 hdfs://0.0.0.0:9000
解释:root
在 hadoop-env.sh 最下面配置的用户就是 root,如下:
export HDFS_DATANODE_USER=root
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
hadoop查看
执行下面命令:
hadoop fs -ls /
可以看到已经创建的文件夹