步骤一:在虚拟机上安装好hadoop并启动,在本地Windows配置好本地hadoop插件。(篇幅过长略可自行查询有关操作)。
步骤二:启动IDEA新建Maven工程。配置pom.xml文件(导入相关依赖)具体如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.qiang.hdfs</groupId>
<artifactId>HdfsClient</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.0</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>
</project>步骤三:编写java代码如下:
package com.qiang.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.IOException;
import java.net.URI;
public class HdfsClientTest {
private FileSystem fs;
@Before
public void init() throws IOException, InterruptedException {
//HDFS访问路径
URI uri = URI.create("hdfs://hadoop1:9000");
//conf配置对象
Configuration conf = new Configuration();
//conf.set("dfs.replication","1");
//操作用户
String user="root";
//获取HDFS的客户端连接对象(文件系统对象)
fs= FileSystem.get(uri, conf, user);
}
@After
public void close() throws IOException {
fs.close();
}
//上传文件
@Test
public void testCopyFromLocal() throws IOException {
fs.copyFromLocalFile(false,true,
new Path("D:\\a.txt"),
new Path("/wen"));
}
//下载文件
@Test
public void testCopyToLocal() throws IOException {
fs.copyToLocalFile(false,
new Path("/wen/a.txt"),
new Path("C:\\Users\\23996\\Desktop\\新建文件夹 (2)"),
true);
}
//删除文件和目录
@Test
public void testDelete() throws IOException {
fs.delete(new Path("/wen/a.txt"),
true);
}
//移动文件或更名
@Test
public void testRename() throws IOException {
fs.rename(new Path("/user/wen/wordcount.txt"),
new Path("/user/"));
}
//查看文件
@Test
public void testListFiles() throws IOException {
RemoteIterator<LocatedFileStatus> locatedFile =
fs.listFiles(new Path("/"), true);
while (locatedFile.hasNext()){
LocatedFileStatus fileStatus = locatedFile.next();
System.out.println("文件名:" + fileStatus.getPath().getName());
System.out.println("块大小:" + fileStatus.getBlockSize());
System.out.println("副本数:" + fileStatus.getReplication());
System.out.println("权限信息:" + fileStatus.getPermission());
}
}
//判断是文件还是文件夹
@Test
public void testListStatus() throws IOException {
FileStatus[] fileStatuses = fs.listStatus(new Path("/user"));
for (FileStatus status : fileStatuses){
if (status.isDirectory()){
System.out.println("文件夹:" + status);
}
else {
System.out.println("文件:" + status);
}
}
}
}
以上仅供初学者参考:不喜勿喷!!!
版权声明:本文为m0_62642719原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。