热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

发生_Hadoop中Configuration类与参数设置规则

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop中Configuration类与参数设置规则相关的知识,希望对你有一定的参考价值。一、介绍我

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Hadoop中Configuration类与参数设置规则相关的知识,希望对你有一定的参考价值。


一、介绍

我们在使用MapReduce框架进行开发时,总会使用到Configuration类的一个实例对象去初始化一个人任务,然后进行任务提交,而在整个任务执行过程中,客户点实例化的Configuration的对象,将作为整个任务过程中参数版本,任务执行过程中所需要的所有参数都是从客户端实例化的Configuration对象中进行获取。下面详细介绍一下Configuration的参数过程。

二、初始化过程

Configuration初始化时主要两步:读取默认文件和读取site级别的文件。

1、读取默认文件

Configuration初始化过程中,首先会读取整个CLASSPATH中的CORE-DEFAULT.XML、HDFS-DEFAULT.XML、YARN-DEFAULT.XML以及想起默认配置文件,这些文件需要用需要进行添加就已经存在项目的CLASSPATH中,因为这些文件存储在MR开发的依赖Jar文件中,用户不需要操心这一部分默认配置文件。

(1)yarn-default.xml文件在hadoop-yarn-common-version.jar文件的根目录下


(2)mapred-default.xml文件在hadoop-mapreduce-client-core-version.jar 文件的根目录下


(3)core-default.xml文件在Hadoop-common-version.jar 文件根目录下


(4)hdfs-default.xml文件在 hadop-hdfs-version.jar文件根目录下

这几个default级别的文件中包含了Hadoop集群最基本也是默认的配置,下面借去了core-default.xml文件的一部分:


我截取的部分中包括了fs.defaultFS属性,该属性也是我们在搭建HDFS集群时的重要参数,相信有过搭建经理的人对这个参数应该很熟悉。

当Configuration对象对所有的default.xml文件读取完成后,整个Hadoop的参数配置基本航都已经加载完成,但是这些参数的值都是默认值。

2、读取site级别的文件

我们在搭建Hadoop集群时,会通过配置HADOOP_HOME/etc/hadoop/*-site.xml 文件去设置集群参数想,这里的site级别的文件就是指HADOOP_HOME/etc/hadoop文件夹下的带有site的文件。


这些site级别的文件也会被加载到CLASSPATH中,然后Configuration对象才能够进行加载。


# Allow alternate conf dir location.
if [ -e "$HADOOP_PREFIX/conf/hadoop-env.sh" ]; then
DEFAULT_CONF_DIR="conf"
else
DEFAULT_CONF_DIR="etc/hadoop"
fi
export HADOOP_CONF_DIR="$HADOOP_CONF_DIR:-$HADOOP_PREFIX/$DEFAULT_CONF_DIR"# CLASSPATH initially contains $HADOOP_CONF_DIR
CLASSPATH="$HADOOP_CONF_DIR"

# CLASSPATH initially contains $HADOOP_CONF_DIR
CLASSPATH="$HADOOP_CONF_DIR"
Hadoop在启动时,会通过这两段代码,讲HADOOP_HOME/etc/hadoop文件夹指定到classpath变量中,然后加载到JVM中,这样etc/hadoop下的所有文件都加载到了classpath下。所以当我们在进行MapReduce开发过程时,可以将集群的site级别的配置文件加载到 项目的src根目录下,这样就可以实现远程提交了。如果如果根目录下没有site级别的文件,不会进行报错,当然也无法 加载相应的值。

三、设置参数与加载顺序

1、参数设置

当Configuration初始化时,讲defalut级别的配置和site级别的配合加载到了Configuration对象中,这时如果我们还想要修改Configuration对象的值时,可以使用Configration对象的set(key,value)方法进行设置。但是Configuration对象的参数分为可设置参数和不可设置参数两种:

(1)不可设置参数

不可设置参数不是代表这种参数不可以被设置,只是设置了以后不会有作用。这类参数一般都是集群的设置参数,例如集群的可利用内存与CPU核数的两个参数:

yarn.nodemanager.resource.memory-mb
yarn.nodemanager.resource.cpu-vcores

上述两个参数指的是datanode节点,yarn占用节点的内存数量与CPU的核数,因为这个参数是集群参数,如果设置了只有在集群重启后才会生效,因此用户在MR任务中设置该数据是无效的。

(2)可设置参数

mapreduce.map.memory.mb
mapreduce.map.cpu.vcores

这类参数主要是涉及到HDFS的文件参数,MR任务的单个任务的内存大小或者是CPU核数。这类参数能够在MR开发过程中进行设置,MR在运行过程中会读取并发生相应的表换。

2、加载顺序


Configuration 设置的参数是具有一定顺序并进行加载的: default.xml

Configuration 在进行参数加载时,首先会加载 default.xml 文件内容,设置好所有的默认值,然后加载site.xml文件,然后site.xml 文件中的参数值将覆盖default.xml 文件中的值,最后Configuration.set() 方法会对已经加载site.xml和default.xml文件的configutaion对象进行修改。

(1)default.xml 类文件是第一次设置

(2)site.xml 类文件是第二次设置

(3)Configuration.set 方法会进行第三次设置

四、任务的Configuration对象信息的存储

当用户提交任务后,Configuration对象的值被序列化以后存储在HDFS上,我们可以在hdfs文件系统的 /tmp 文件夹下找到相应的Configuration对象。这里简单的介绍是Configuration对象存储在hdfs上也是任务提交的一部分,以后会详细介绍MR任务进行远程提交的过程。


推荐阅读
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • React项目中运用React技巧解决实际问题的总结
    本文总结了在React项目中如何运用React技巧解决一些实际问题,包括取消请求和页面卸载的关联,利用useEffect和AbortController等技术实现请求的取消。文章中的代码是简化后的例子,但思想是相通的。 ... [详细]
  • 本文讨论了如何使用Web.Config进行自定义配置节的配置转换。作者提到,他将msbuild设置为详细模式,但转换却忽略了带有替换转换的自定义部分的存在。 ... [详细]
  • Java 11相对于Java 8,OptaPlanner性能提升有多大?
    本文通过基准测试比较了Java 11和Java 8对OptaPlanner的性能提升。测试结果表明,在相同的硬件环境下,Java 11相对于Java 8在垃圾回收方面表现更好,从而提升了OptaPlanner的性能。 ... [详细]
  • 本文整理了Java面试中常见的问题及相关概念的解析,包括HashMap中为什么重写equals还要重写hashcode、map的分类和常见情况、final关键字的用法、Synchronized和lock的区别、volatile的介绍、Syncronized锁的作用、构造函数和构造函数重载的概念、方法覆盖和方法重载的区别、反射获取和设置对象私有字段的值的方法、通过反射创建对象的方式以及内部类的详解。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • PatchODAX8: ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
author-avatar
gql199111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有