一.IDEA 中创建 Maven 项目
步骤一:打开 IDEA,点击 File -> Settings(Windows/Linux)或者 IntelliJ IDEA -> Preferences(Mac),进入设置界面,然后找到 Build, Execution, Deployment -> Build Tools -> Maven。
步骤二:在 Maven home directory 处,点击右侧的按钮,选择你本地安装的 Maven 目录,例如:
步骤三:可以在 User settings file 中指定 settings.xml 文件的路径(一般使用默认路径即可),Local repository 中指定本地仓库的路径,配置完成后点击 OK 保存设置。
二.编写代码测试HDFS连接
1.请在上一步创建的项目中修改pom.xml文件,添加如下的代码
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
2.配置日志信息。在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入如下配置信息:
log4j.rootLogger=INFO, 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
log4j.appender.logfile=org.apache.log4j.FileAppender
log4j.appender.logfile.File=target/spring.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n
3.创建包及对应的类。我们创建一个包为org.example,并在下面创建Main类。
4.编写代码如下:
package org.example;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import java.io.IOException;
import java.net.URISyntaxException;
public class Main {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
Configuration conf = new Configuration();
conf.set("fs.defaultFS", "hdfs://hadoop100:8020"); // hadoop100是namenode所在的节点
conf.set("hadoop.job.ugi", "root");
FileSystem fs = FileSystem.get(conf);
FileStatus[] fileStatuses = fs.listStatus(new Path("/"));
// 打印文件信息
System.out.println("根目录下的文件和目录信息:");
for (FileStatus fileStatus : fileStatuses) {
System.out.println("路径: " + fileStatus.getPath());
}
fs.close();
}
}
5.执行程序
如果程序执行没有错误,就会打印出当前HDFS中的文件目录。