• HDFS 开发中的文件配置优先级


    一、先看集群上的配置,这里设置了文件块副本数为 3

    上传一个文件试试

    public class ConfigPriority {
        private Configuration conf;
        private FileSystem fs;
    
        @Before
        public void init() throws Exception {
            // 设置 HADOOP_HOME 环境变量
            System.setProperty("hadoop.home.dir", "D:/DevelopTools/hadoop-2.9.2/");
            // 日志初始化
            BasicConfigurator.configure();
    
            conf = new Configuration();
            // 获取 hdfs 客户端对象,指定用户名,避免无权限
            fs = FileSystem.get(new URI("hdfs://192.168.8.136:9000"), conf, "root");
        }
    
        @After
        public void close() throws IOException {
            fs.close();
        }
    
        // 文件上传
        @Test
        public void testCopyFromLocalFile() throws Exception{
            fs.copyFromLocalFile(new Path("D://MyFile/Downloads/Writage-1.12.msi"), new Path("/Priority/AAA.msi"));
        }
    }

    二、在资源目录添加 hdfs-site.xml 配置后再上传

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
    </configuration>

    代码中的上传名字做下改变

    三、在代码中指定下配置参数

    public class ConfigPriority {
        private Configuration conf;
        private FileSystem fs;
    
        @Before
        public void init() throws Exception {
            // 设置 HADOOP_HOME 环境变量
            System.setProperty("hadoop.home.dir", "D:/DevelopTools/hadoop-2.9.2/");
            // 日志初始化
            BasicConfigurator.configure();
    
            conf = new Configuration();
            conf.set("dfs.replication","2");
            // 获取 hdfs 客户端对象,指定用户名,避免无权限
            fs = FileSystem.get(new URI("hdfs://192.168.8.136:9000"), conf, "root");
        }
    
        @After
        public void close() throws IOException {
            fs.close();
        }
    
        // 文件上传
        @Test
        public void testCopyFromLocalFile() throws Exception{
            fs.copyFromLocalFile(new Path("D://MyFile/Downloads/Writage-1.12.msi"), new Path("/Priority/CCC.msi"));
        }
    }

    总结:代码设置 > 工程资源目录配置 > 集群配置 > 默认配置

  • 相关阅读:
    flutter填坑之旅(widget原理篇)
    二次封装Element UI Table实现动态列
    vue使用import()提示语法错误
    flutter填坑之旅(配置本地资源文件)
    vue项目提示TypeError: e.call is not a function
    fork树
    从标准输入读取一行数组并保存(用的是字符串分割函数strtok_s() )
    常用算法链接:
    排序算法
    牛客网未通过代码---
  • 原文地址:https://www.cnblogs.com/jhxxb/p/10704806.html
Copyright © 2020-2023  润新知