1.core-site.xml
fs.defaultFS
hdfs://192.168.3.61:9820
hadoop.tmp.dir
/opt/hadoopdata
2.pom.xml
4.0.0
com.qmkj
hdfsclienttest
0.1
hdfsclienttest
http://www.example.com
UTF-8
1.7
1.7
junit
junit
4.11
test
org.apache.hadoop
hadoop-hdfs-client
3.2.1
provided
org.apache.hadoop
hadoop-common
3.2.1
org.apache.hadoop
hadoop-hdfs
3.2.1
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-jar-plugin
3.0.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
maven-site-plugin
3.7.1
maven-project-info-reports-plugin
3.0.0
3.测试代码
package com.qmkj;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.junit.Before;
import org.junit.Test;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.URI;
public class AppTest {
FileSystem fs = null;
@Before
public void init() throws Exception {
Configuration conf = new Configuration();
//设立的设置url请注意,设置core-site.xml中配置fs.defaultFS的地址
fs = FileSystem.get(new URI("hdfs://192.168.3.61:9820"), conf, "root");
}
@Test
public void testAdd() throws Exception {
fs.copyFromLocalFile(new Path("D:\KK_Movies\kk 2020-02-20 20-45-55.mp4"), new Path("/zhanglei"));
fs.close();
}
@Test
public void testDownloadFileToLocal() throws IllegalArgumentException, IOException {
// fs.copyToLocalFile(new Path("/mysql-connector-java-5.1.28.jar"), new
// Path("d:/"));
fs.copyToLocalFile(false, new Path("test.txt"), new Path("e:/"), true);
fs.close();
}
@Test
public void testMkdirAndDeleteAndRename() throws IllegalArgumentException, IOException {
// 创建目录
fs.mkdirs(new Path("/zhanglei/b1/c1"));
// 删除文件夹 ,如果是非空文件夹,参数2必须给值true ,删除所有子文件夹
fs.delete(new Path("/b1"), true);
// 重命名文件或文件夹
fs.rename(new Path("/zhanglei"), new Path("/qmkj"));
}
@Test
public void testListFiles() throws FileNotFoundException, IllegalArgumentException, IOException {
RemoteIterator listFiles = fs.listFiles(new Path("/"), true);
while (listFiles.hasNext()) {
LocatedFileStatus fileStatus = listFiles.next();
System.out.println(fileStatus.getPath().getName());
System.out.println(fileStatus.getBlockSize());
System.out.println(fileStatus.getPermission());
System.out.println(fileStatus.getLen());
BlockLocation[] blockLocations = fileStatus.getBlockLocations();
for (BlockLocation bl : blockLocations) {
System.out.println("block-length:" + bl.getLength() + "--" + "block-offset:" + bl.getOffset());
String[] hosts = bl.getHosts();
for (String host : hosts) {
System.out.println(host);
}
}
System.out.println("--------------打印的分割线--------------");
}
}
@Test
public void testListAll() throws FileNotFoundException, IllegalArgumentException, IOException {
//可以右击方法名,Run 测试一下。
FileStatus[] listStatus = fs.listStatus(new Path("/"));
String flag = "";
for (FileStatus fstatus : listStatus) {
if (fstatus.isFile()) {
flag = "f-- ";
} else {
flag = "d-- ";
}
System.out.println(flag + fstatus.getPath().getName());
System.out.println(fstatus.getPermission());
}
}
}
testDownloadFileToLocal 这里测试请注意,本地也要装hdfs才可以
更多精彩请关注公众号【lovepythoncn】