从零开始学Hadoop大数据分析之HDFS 实战

导言

通过上两节学习了hadoop基础理论知识以及hdfs相关知识,同时也搭建了相关运行环境,今天开始hdfs实践操作。

开发环境

1.java环境:jdk1.8
2.IDEA编辑器
3.maven集成环境清单
开发hadoop相关项目基础集成包主要为:
hadoop-common,
hadoop-hdfs,
hadoop-mapreduce-client-core,
hadoop-client,
hadoop-yarn-api.
详细清单文件pom.xml如下:



    4.0.0

    com.sunql.hdfs
    com.sunql.hdfs
    1.0-SNAPSHOT
    
    
        org.apache.hadoop
        hadoop-common
        2.8.5
    
    
    
        org.apache.hadoop
        hadoop-hdfs
        2.8.5
    
    
    
        org.apache.hadoop
        hadoop-mapreduce-client-core
        2.8.5
    
    
    
        org.apache.hadoop
        hadoop-client
        2.8.5
    
    
    
        org.apache.hadoop
        hadoop-yarn-api
        2.8.5
    

    

开始实践

HDFS API中对文件的操作主要为Configuration 和FileSystem两个类,其中Configuration为核心配置类,FileSystem为系统对象。

 public static final String basePath="hadoopfiles";
    private  static final String line="/";
    static FileSystem fileSystem=null;
    public static FileSystem getFileSystem() {
        if (fileSystem==null){
            Configuration configuration=new Configuration();
            try {
                fileSystem=FileSystem.get(configuration);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return fileSystem;
    }
创建文件

shell命令:

hdfs dfs -mkdir /opt/hadoopfiles

对应代码:

 /**
     * 创建文件
     */
    private static void createFolder(){
        try {
            Path path=new Path(basePath);
            getFileSystem().mkdirs(path);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
显示文件

shell命令:

hdfs dfs -ls /opt/hadoopfiles

对应代码:

 /**
     * 递归显示文件
     * @param paths  递归目录
     * @param path  递归路径
     * @return
     */
    private static List showFiles(List paths,Path path){
        try {
            FileStatus[] fileStatuses=getFileSystem().listStatus(path);
            for (int i=0,len=fileStatuses.length;i
文件上传

shell命令:

hdfs dfs -put file1 file2

对应代码:

 /**
     * 文件上传
     */
    private static void uploadFile(String srcUrl){
        try {
            String[] urls= srcUrl.split("/");
            Path srcPath=new Path(srcUrl);
            Path dstPath=new Path(basePath+line+urls[urls.length-1]);
            getFileSystem().copyFromLocalFile(srcPath,dstPath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
文件下载

shell命令:

hdfs dfs -get /opt/hadoopfiles/file2

对应代码:

 /**
     * 文件下载
     */
    private static void downloadFile(String dstUrl){
        try {
            String[] urls= dstUrl.split("/");
            Path srcPath=new Path(basePath+line+urls[urls.length-1]);
            Path dstPath=new Path(dstUrl);
            getFileSystem().copyToLocalFile(srcPath,dstPath);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

你可能感兴趣的:(从零开始学Hadoop大数据分析之HDFS 实战)