hadoop的config类虽然不多,但是功能强大,使用灵活,扩展方便。
主要以下几个类
Configurable
Something that may be configured with a Configuration.
void setConf(Configuration conf);
Configuration getConf();
Configured
Base class for things that may be configured with a Configuration.
Configuration
Provides access to configuration parameters.
这个类值得好好读一下,一个简单的配置类,就完成了这么多功能,而且代码也不乱。
配置文件的加载顺序。
默认配置文件,用户配置文件,调用方法set的属性等等,overlay的使用。
final的定义。
支持${var}参数配置。
还可以设置枚举,int范围,string集合或数组。
在getLocalPath方法中,
for (int i = 0; i < dirs.length; i++) { // try each local dir
int index = (hashCode+i & Integer.MAX_VALUE) % dirs.length;
...
}
这行代码有疑问,代码功能是随机从数组一个位置遍历整个数组,但是& Integer.MAX_VALUE貌似没有意义。
这个想通了,是为了取正整数。
debug method. 这个貌似调整为UT会更好一些。
兼容性的考虑。
WeakHashMap保持加载的Configuration对象.
CopyOnWriteArrayList的使用。
Tool
A tool interface that supports handling of generic command-line options.
ToolRunner
A utility to help run Tools.
附一些简单的使用例子。
public class TestConfig {
private Configuration config;
private String key;
@Before
public void setUp() {
config = new Configuration();
key = "allen_key";
}
/**
* 可以配置10进制或16进制的int。
* */
@Test
public void testSimpleConfig() {
config.set(key, "123");
int value = config.getInt(key, -1);
Assert.assertEquals(123, value);
config.set(key, "0X11");
value = config.getInt(key, -1);
Assert.assertEquals(17, value);
}
private static enum MyEnum {
A, B;
};
/**
* 可以配置枚举。
* */
@Test
public void testEnum() {
config.setEnum(key, MyEnum.A);
MyEnum value = config.getEnum(key, MyEnum.B);
Assert.assertSame(MyEnum.A, value);
}
/**
* 可以配置int范围。
* */
@Test
public void testIntRange() {
config.setStrings(key, "-5,10-12,15,20-");
IntegerRanges range = config.getRange(key, null);
// -5
Assert.assertFalse(range.isIncluded(-1));
Assert.assertTrue(range.isIncluded(0));
Assert.assertTrue(range.isIncluded(5));
Assert.assertFalse(range.isIncluded(6));
// 10-12
Assert.assertFalse(range.isIncluded(9));
Assert.assertTrue(range.isIncluded(10));
Assert.assertTrue(range.isIncluded(12));
Assert.assertFalse(range.isIncluded(13));
// 15
Assert.assertFalse(range.isIncluded(14));
Assert.assertTrue(range.isIncluded(15));
Assert.assertFalse(range.isIncluded(16));
// 20-
Assert.assertFalse(range.isIncluded(19));
Assert.assertTrue(range.isIncluded(20));
Assert.assertTrue(range.isIncluded(60));
}
/**
* 可以配置String集合。
* */
@Test
public void testStringCollection() {
config.setStrings(key, "a,b");
Collection<String> c = config.getStringCollection(key);
Assert.assertTrue(c.contains("a"));
Assert.assertTrue(c.contains("b"));
}
/**
* 可以配置String数组。
* */
@Test
public void testStringArray() {
config.setStrings(key, "a,b");
String[] strs = config.getStrings(key);
Assert.assertEquals("a", strs[0]);
Assert.assertEquals("b", strs[1]);
}
/**
* 可以定义变量。
* */
@Test
public void testVar() {
config.set("basekey", "allen");
config.set("subkey", "hi,${basekey}");
String value = config.get("subkey");
Assert.assertEquals("hi,allen", value);
}
}
- 大小: 15.7 KB
分享到:
相关推荐
- 永久关闭SELinux:修改`/etc/selinux/config`文件,将`SELINUX=enforcing`改为`SELINUX=disabled` ### 3. 安装与配置Hadoop集群 #### 3.1 配置IP和主机名映射 编辑`/etc/hosts`文件,添加所有集群节点的IP和...
- **配置文件准备**:创建配置目录`hadoop-config`,并将必要的配置文件复制到该目录。 - **环境变量设置**:通过`.bash_profile`文件设置`HADOOP_CONF_DIR`环境变量,指向配置目录。 - **JDK安装**:下载并安装Java...
在分布式计算领域,Hadoop是一个不可或缺的关键框架,它主要用于处理和存储海量数据。Hadoop配置文件是这个系统的核心组成部分,它们定义了Hadoop集群的行为、性能和稳定性。在这个主题中,我们将深入探讨Hadoop配置...
2. 确保所有节点的SSH服务都在运行,并且配置允许root用户通过SSH登录,通常这可以通过编辑`/etc/ssh/sshd_config`并取消`PermitRootLogin prohibit-password`的注释来实现。 3. 重启SSH服务,如`service sshd ...
update-alternatives --config java ``` 添加以下内容到`~/.bashrc`,并保存: ```bash export JAVA_HOME=安装路径> export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin ...
- 可以通过命令行参数`-e`执行HiveQL语句,`-config`指定新配置文件,`-service hiveserver`启动Hiveserver服务。 这份资料适合想要深入理解Hadoop集群中Hive应用开发的学习者,通过它,可以了解到Hive如何作为...
在构建Hadoop集群的过程中,Java Development Kit (JDK)的正确配置至关重要,因为它提供了Hadoop运行所需的基础环境。本文档详细介绍了在Linux环境下进行JDK配置的具体步骤和注意事项。 ##### 解压安装JDK 首先,...
export HADOOP_CONF_HOME=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_HOME=$HADOOP_HOME ``` 在Hadoop的配置阶段,我们需要修改`hadoop-env.sh`、`core-site.xml`、`hdfs-...
修改 src/main/resources/config/hadoop.properties 中的 HDFS 和 namenode 配置 修改 CommentServiceImpl 类 analyzeComment 方法下的日志输出路径、Hadoop Example 路径 访问 http://localhost:8080 主要功能 员工...
"fs-config.rar_fs config_fs_config_zookeeper"这个标题暗示了我们讨论的是一个使用Zookeeper进行配置管理的解决方案,具体来说,可能是名为"fs-config"的系统或框架。Zookeeper是一个广泛使用的开源项目,由Apache...
1. **`hadoop-config.sh`**: - 该脚本用于对环境变量进行初始化设置。 - 其中最关键的是定义了`HADOOP_HOME`、`HADOOP_CONF_DIR`和`HADOOP_SLAVES`等环境变量。 - `HADOOP_HOME`指向Hadoop的安装目录。 - `...
spark-2.4.5-bin-without-hadoop.tgz spark最新已编译好的包,...export SPARK_DIST_CLASSPATH=$(hadoop --config /opt/bigdata/hadoop-2.9.2/etc/hadoop classpath) export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
在IT行业中,尤其是在分布式计算领域,Hadoop是一个广泛使用的开源框架,它允许处理和存储大量数据。SSH(Secure Shell)是远程登录和执行命令的安全协议,对于管理分布式系统如Hadoop集群至关重要。免密登陆是SSH的...
- 启动Cygwin终端,使用`ssh-host-config`命令进行配置,按照提示进行操作。 - 生成SSH密钥对,使用`ssh-keygen`命令,这将生成id_rsa和id_rsa.pub文件,用于无密码SSH登录。 - 将公钥(id_rsa.pub)的内容复制到...
- 查看Hadoop的状态:`$HADOOP_HOME/sbin/hadoop-daemon.sh --config $HADOOP_HOME/etc/hadoop status datanode` - 检查Web界面:访问`http://localhost:50070`查看HDFS状态。 通过以上步骤,我们可以在CentOS...
Hadoop环境配置在Ubuntu 16.04中的安装和配置 Hadoop是一个大数据处理和分析的开源框架,广泛应用于数据挖掘、数据分析、机器学习等领域。为在Ubuntu 16.04中安装和配置Hadoop环境,需要经过多个步骤,以下是详细的...
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` ##### 3.5 配置hosts文件 为了简化节点之间的通信,需要在每个节点的`/etc/hosts`文件中添加其他节点的信息。 ```bash sudo vi /etc/...
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. Exception in thread "main" java.lang.NullPointerException at java.lang.ProcessBuilder.start(ProcessBuilder.java:...