<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>2.7.4</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>2.7.4</version>
</dependency>
</dependencies>
import org.apache.poi.ss.formula.functions.T;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
/**
* @Author: gh
* @Description: 查询文件列表,删除文件,下载文件,新增文件,某个路径下的文件数量;
* hdfs利用率,hdfs存储大小,获取文件的字节数组
*/
public interface HdfsDao {
///opt/cloudera/parcels/CDH-5.14.2-1.cdh5.14.2.p0.3/lib/hadoop/etc/hadoop
//查询文件列表
public String listPath(String path);
/**
* 下载文件到本地
* @param src fs上的文件路径地址
* @param dst 本地存放的地址
* @return 1表示下载成功 ,-1表示下载失败
*/
public int copyFileToLocal(String src,String dst);
/**
* 下载文件到客户端
* @param resp 对客户端请求的响应
* @param src fs上的文件路径地址
* @return 1表示下载成功 ,-1表示下载失败
*/
public int copyFileToClient(HttpServletResponse resp,String src);
/**
* 上传客户端文件到远程Hadoop文件系统。
* @param req 客户端请求
* @param hdfsPath HDFS文件路径
* @return 1表示上传成功 ,-1表示上传失败
*/
public int uploadToHDFS(HttpServletRequest req,String hdfsPath);
/**
* 删除HDFS上的文件OR文件夹(删除文件夹下的所有内容)
* @param hdfsPath HDFS路径
* @return 1表示删除成功 ,-1表示删除失败
*/
public int deleteHDFSFile(String hdfsPath);
/**
* 统计某个路径下(次级目录)的文件总数。
* @param pathName 路径的名称
* @return
*/
public long totalCount(String pathName);
/**
* 统计某个路径(相当于数据库)次级目录下所有的文件(相当于表)的数量
* @param dirPath 文件夹路径
* @return 文件的数量
*/
public int countTables(String dirPath);
/**
* 获取某个文件夹路径(相当于数据库)下所有文件(相当于表)的名称列表。
* @return
*/
public List<String> getTablenamesOfDB(String dirPath);
/**
* Non DFS used = ( Total Disk Space - Reserved Space) - Remaining Space - DFS Used
* hdfs使用率 = DFS used / DFS space
* = DFS used / ( Total Disk Space - Reserved Space - Remaining Space)
* DFS used = bpUsed(block pool)
* Reserved Space = dfs.datanode.du.reserved
* @return
*/
public double usedRate();
/**
* @param path 需要查询的路径
* @return (某个路径下)已使用存储空间的大小
*/
public double storeSizeOfMB(String path);
/**
* @return 全部已使用存储空间的大小
*/
public double storeSizeOfMB();
/**
* 获取文件的字节数组
* @param filePath 文件路径
* @return
*/
public InputStream getFileBytes(String filePath);
}
import com.alibaba.fastjson.JSONObject;
import com.genius.pojo.pg.dto.DataBaseDTO;
import com.google.common.base.Charsets;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.*;
import org.apache.hadoop.hdfs.HAUtil;
import org.springframework.util.StringUtils;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.*;
/**
* @Author: gh
* @Description: 连接访问HDFS,增删查下载文件。
*/
public class HdfsDaoImpl implements HdfsDao{
FileSystem fs = null;
DataBaseDTO dataBaseDTO = null;