/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.fs; import java.net.URI; import org.apache.hadoop.conf.Configuration; /** * This class is thin layer to manage the FS related keys in * a configuration object. * It provides convenience static method to set and get the keys from a * a configuration. * */ final class FsConfig { private FsConfig() {} // Configuration keys and default values in the config file // TBD note we should deprecate the keys constants elsewhere // The Keys static final String FS_DEFAULT_NAME_KEY = "fs.default.name"; static final String FS_HOME_DIR_ROOT_KEY = "fs.homeDir"; static final String FS_REPLICATION_FACTOR_KEY = "dfs.replication"; static final String FS_BLOCK_SIZE_KEY = "dfs.block.size"; static final String IO_BUFFER_SIZE_KEY ="io.file.buffer.size"; // The default values // Default values of SERVER_DEFAULT(-1) implies use the ones from // the target file system where files are created. static final String FS_DEFAULT_NAME = "file:///"; static final String FS_HOME_DIR_ROOT = "/user"; // relative to FS_DEFAULT static final short FS_DEFAULT_REPLICATION_FACTOR = 3; static final long FS_DEFAULT_BLOCK_SIZE = 32 * 1024 * 1024; static final int IO_BUFFER_SIZE =4096; public static String getDefaultFsURI(final Configuration conf) { return conf.get(FS_DEFAULT_NAME_KEY, FS_DEFAULT_NAME); } public static String getHomeDir(final Configuration conf) { return conf.get(FS_HOME_DIR_ROOT_KEY, FS_HOME_DIR_ROOT); } public static short getDefaultReplicationFactor(final Configuration conf) { return (short) conf.getInt(FS_REPLICATION_FACTOR_KEY, FS_DEFAULT_REPLICATION_FACTOR); } public static long getDefaultBlockSize(final Configuration conf) { return conf.getLong(FS_BLOCK_SIZE_KEY, FS_DEFAULT_BLOCK_SIZE); } public static int getDefaultIOBuffersize(final Configuration conf) { return conf.getInt(IO_BUFFER_SIZE_KEY, IO_BUFFER_SIZE); } public static Class<?> getImplClass(URI uri, Configuration conf) { String scheme = uri.getScheme(); if (scheme == null) { throw new IllegalArgumentException("No scheme"); } return conf.getClass("fs." + uri.getScheme() + ".impl", null); } /** * The Setters: see the note on the javdoc for the class above. */ public static void setDefaultFS(final Configuration conf, String uri) { conf.set(FS_DEFAULT_NAME_KEY, uri); } public static void setHomeDir(final Configuration conf, String path) { conf.set(FS_HOME_DIR_ROOT_KEY, path); } public static void setDefaultReplicationFactor(final Configuration conf, short rf) { conf.setInt(FS_REPLICATION_FACTOR_KEY, rf); } public static void setDefaultBlockSize(final Configuration conf, long bs) { conf.setLong(FS_BLOCK_SIZE_KEY, bs); } public static void setDefaultIOBuffersize(final Configuration conf, int bs) { conf.setInt(IO_BUFFER_SIZE_KEY, bs); } }