Configuraion类-配置API
Configuration类:配置属性和属性值的集合
属性String类型,值可以是多种类型
值常见类型
1) Java基本数据类型
2) String,Class和java.io.File类型
3) String集合
Configuration conf = new Configuration(); conf.addResource("core-site.xml"); //添加配置文件 conf.get("attribute1"); //返回String类型属性 conf.getInt("attribute2");//返回Int类型 conf.get("attribute3", "value3");//设置属性attribute3的默认值,如果attribute3没有值,则返回value3
配置文件合并
后来添加的配置文件的相同属性会覆盖之前的属性值
被标记为final的属性不会被覆盖
将属性标记为final,客户端的配置文件和作业提交参数都无法覆盖这个属性了吗?
变量扩展
可以将属性设置为系统变量
<property> <name>size-weight</name> <value>${size},${weight}</value> # ${}则表示系统属性 </property>
设置系统变量System.setProperty()
System.setProperty("size", "100"); //ϵͳAPI assertThat(conf.get("size-weight"), is("100","systemweight")); //获取到系统的size属性
环境配置
standalone/伪分布式/分布式
可以使用Maven POM项目对象模型管理MR依赖
管理配置
为方便在本地运行和集群运行之间切换,使用配置文件包含集群的连接设置
使用命令行hadoop fs -conf配置属性
hadoop fs -conf #使用配置命令
辅助类GenericOptionsParser, Tool和ToolRunner
Hadoop自带辅助类解释常用的Hadoop命令行选项
实现Tool接口,使用ToolRunner内部调用GenericOptionsServer
设置用户标识
whoami //确定Hadoop用户标识 HADOOP_USER_NAME //环境变量显式设定Hadoop用户名 hadoop.user.group.static.mapping.overrides //覆盖用户组映射 hadoop.http.staticuser.user //设置Hadoop网络接口的运行时的用户标识
可以设置那些属性?
core-default.xml hdfs-default.xml yarn-default.xml mapred-site.xml