• 上传--下载HDFS文件并指定文件物理块的大小


    使用hdfs的api接口分别实现从本地上传文件到集群和从集群下载文件到本地。

    1)上传文件主要是使用FileSystem类的copyFromLocalFile()方法来实现,另外我们上传文件时可以指定以多大的物理块来存储此文件,使用conf.set("dfs.block.size","8388608")设置物理块大小是8M,此方法第二个参数的单位是字节。另外编译此代码除了需要使用hadoop-core-1.2.1.jar,还需要使用

    commons-configuration-1.6.jar包。完整代码如下:

    /**
     * Created with IntelliJ IDEA.
     * User: hadoop
     * Date: 16-3-13
     * Time: 下午6:31
     * To change this template use File | Settings | File Templates.
     */
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.fs.FileSystem;
    import org.apache.hadoop.fs.Path;
    
    import java.io.IOException;
    
    public class uploadFile {
        public static void main(String[] args) throws IOException {
            Configuration conf=new Configuration();//只读取了core.xml文件
            //conf.addResource("hdfs-default.xml");
            //Long x=conf.get("dfs.block.size") ;
            conf.set("dfs.block.size", args[0]);//第二个参数的单位是字节,并且是字符串形式
             FileSystem fs=FileSystem.get(conf);
            Path src=new Path(args[1]);//参数是本地文件的绝对路径的字符串形式
            Path dst=new Path(args[2]);
            fs.copyFromLocalFile(src,dst);
            System.out.println("upload to:"+conf.get("fs.default.name"));
        }
    }

    例如将本地test目录下的F1k1k文件上传到集群,所使用的命令就是:

    hadoop jar uploadFile.jar uploadFile 8388608 /home/hadoop/test/F1k1k /data0313

    2)从集群下载文件类似,只需要将copyFromLocalFile()方法改为copyToLocalFile(),只不过代码中src变成了集群路径,dst是本地路径

    如下所示:

     1 /**
     2  * Created with IntelliJ IDEA.
     3  * User: hadoop
     4  * Date: 16-3-13
     5  * Time: 下午6:31
     6  * To change this template use File | Settings | File Templates.
     7  */
     8 
     9 import org.apache.hadoop.conf.Configuration;
    10 import org.apache.hadoop.fs.FileSystem;
    11 import org.apache.hadoop.fs.Path;
    12 
    13 import java.io.IOException;
    14 
    15 public class uploadFile {
    16 
    17     public static void main(String[] args) throws IOException {
    18         Configuration conf=new Configuration();
    19         //conf.addResource("hdfs-default.xml");
    20         //Long x=conf.get("dfs.block.size") ;
    21         conf.set("dfs.block.size", args[0]);
    22          FileSystem fs=FileSystem.get(conf);
    23         Path src=new Path(args[1]);//src是集群路径
    24         Path dst=new Path(args[2]);//dst是本地路径
    25         fs.copyToLocalFile(src,dst);
    26         System.out.println("upload to:"+conf.get("fs.default.name"));
    27     }
    28 }
  • 相关阅读:
    2.1 Python介绍
    2.2 Python基础知识
    内网渗透的一些工具和平台汇总
    ABC技术落地_成功带动lot物联网行业、金融科技行业、智能人才教育。
    舆情、网络舆情、舆情分析
    XSSer:自动化XSS漏洞检测及利用工具
    10款开源安全工具
    系统管理员资源大全,学习学习学习(转载)
    如何搭建邮件服务器
    域名常见名词解释
  • 原文地址:https://www.cnblogs.com/lz3018/p/5272948.html
Copyright © 2020-2023  润新知