新建class(右键src,新建class)
package hadoop_class1;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;
public class HDFSTest {
//初始化全局静态的fs对象
private static FileSystem fs;
static {
Configuration conf = new Configuration();
conf.set("dfs.client.block.write.replace-datanode-on-failure.policy",
"NEVER");
conf.set("dfs.client.block.write.replace-datanode-on-failure.enable",
"true");
try {
//URI("hdfs://192.168.84.137:9000")为集群ip和HDFS端口号
fs = FileSystem.get(new URI("hdfs://192.168.84.137:9000"),conf);
}catch(Exception e) {
e.printStackTrace();
}
}
//显示指定目录下面所有的HDFS数据文件
public static void ListDirAll(String DirFile) throws IOException{
Path path = new Path(DirFile);
FileStatus[] status = fs.listStatus(path);
//遍历
for(FileStatus f : status) {
System.out.println(f.getPath().toString());
}
}
//在指定位置新建一个文件,并写入字符
public static void WriteToHDFS(String file,String words)
throws IOException, URISyntaxException{
Path path = new Path(file);
FSDataOutputStream out = fs.create(path);//创建文件
out.write(words.getBytes("UTF-8"));
out.close();
}
//读取指定HDFS的文件内容,并在窗口打印出结果
public static void ReadFromHDFS(String file) throws IOException,
URISyntaxException{
//System.out.println("aaa");
Path path = new Path(file);
//System.out.println("bbb");
FSDataInputStream in = fs.open(path);
//System.out.println("ccc");
IOUtils.copyBytes(in, System.out, 4096,true);
//System.out.println("ddd");
in.close();
}
//删除指定的HDFS文件
public static void DeleteHDFSFile(String file) throws IOException{
Path path = new Path(file);
fs.delete(path,true);
}
//上传指定目录下的数据文件到指定的目录下面
public static void UploadLocalFileHDFS(String src,String dst)
throws IOException{
Path pathDst = new Path(dst);
Path pathSrc = new Path(src);
fs.copyFromLocalFile(pathSrc, pathDst);
}
public static void main(String[] args) throws IOException,URISyntaxException{
// TODO Auto-generated method stub
//[hadoop@HBase ~]$ hdfs dfs -mkdir /test
//[hadoop@HBase ~]$ hdfs dfs -put text.txt /test
String filewrite = "/test/text.txt";
String ListPath = "/test";
//显示指定目录下面所有的HDFS数据文件
System.out.println("显示指定目录下面所有的HDFS数据文件");
ListDirAll(ListPath);
//读取文件内容
System.out.println("读取文件内容");
ReadFromHDFS(filewrite);
//删除指定的HDFS文件
System.out.print("删除指定的HDFS文件");
DeleteHDFSFile(filewrite);
}
}