Hadoop的配置文件

Hadoop集群中的每台计算节点都有自己的一组配置文件。Hadoop系统的早期版本只有一个配置文件:hadoop-site.xml。Hadoop系统的后续版本中按照不同的功能将其划分为多个配置文件。 此外,有两种类型的配置文件:*-default.xml 和 *-site.xml。 *-site.xml 中的配置项覆盖 *-default.xml的相同配置项。

Hadoop系统默认配置文件

配置文件作用core-default.xml默认的核心Hadoop属性配置文件。该配置文件位于下面的JAR文件中:hadoop-common-x.x.x.jarhdfs-default.xml默认的HDFS属性配置文件。该配置文件位于下面的JAR文件中:hadoop-hdfs-x.x.x.jarmapred-default.xml默认的MapReduce属性配置文件。该配置文件位于下面的JAR文件中:hadoop-mapreduce-client-core-x.x.x.jaryarn-default.xml默认的YARN属性配置文件。该配置文件位于下面的JAR文件中:hadoop-yarn-common-x.x.x.jar

针对集群特定的配置文件一般都放在$HADOOP_CONF_DIR文件夹中。这些配置文件中的配置项可以覆盖上述提到的默认配置文件中的相同配置项,它们是集群的最终配置值。

Hadoop集群特定配置文件

配置文件作用core-site.xml特定的通用Hadoop属性配置文件。该配置文件中的配置项会覆盖core-default.xml中相同的配置项hdfs-site.xml特定的HDFS属性配置文件。该配置文件中的配置项会覆盖hdfs-default.cml中的相同配置项mapred-site.xml特定的MapReduce属性配置文件。该配置文件中的配置项会覆盖mapred-default.cml中的相同配置项yarn.xml特定的YARN属性配置文件。该配置文件中的配置项会覆盖yarn-default.xml中的相同配置项

Hadoop守护进程

除了上面提到的配置文件,Hadoop管理员还可以使用下面的脚本文件来配置Hadoop集群:

hadoop-env.shyarn-env.shmapred-env.sh

这些脚本文件主要负责设置如下属性:

Java主目录不同的日志文件位置用于各种守护进程的JVM选项

守护进程配置变量

守护进程环境变量名称节点HADOOP_NAMENODE_OPTS数据节点HADOOP_DATANODE_OPTS辅助名称节点HADOOP_SECONDARYNAMENODE_OPTS资源管理器YARN_RESOURCEMANAGER_OPTS节点管理器YARN_NODEMANAGER_OPTS

其他可配置的一些有用配置项:

变量名作用YARN_LOG_DIR计算节点上存放日志文件的目录位置。如果这些目录不存在,那么集群启动的时候会被自动创建YARN_HEAPSIZE指定堆饿大小,单位为MB。其默认值为1000,意味着Hadoop集群默认为每个守护进程分配1GB大小的堆空间。虽然只有1GB大小堆空间,YARN运行着几个服务器服务:资源管理器和节点管理器。如果想为每个服务配置不同的堆大小,需要给以下两个变量分别赋值:YARN_RESOURCEMANAGER_HEAPSIZE、YARN_NODEMANAGER_HEAPSIZE

Hadoop配置文件的优先级

Hadoop集群中的每个节点必须要有配置文件的一个拷贝,包括集群的客户端节点。这些配置文件以如下次序应用到系统中(优先级由高到低): 1)MapRduce任务初始化的时候,由JobConf或者Job对象指定的值 2)客户端节点的 *-site.xml 3)从节点的 *-site.xml 4) *-default.xml 文件中的默认值,这个文件是集群中的所有节点都相同

如果有些属性的设置是不想被客户端或程序修改的,需要把这些属性标记为final:

{PROPERTY_NAME}

{PROPERTY_VALUE}

true

配置文件的默认值及其解释详见: core-default.xml

hdfs-default.xml

mapred-default.xm

yarn-default-default.xml

当然参数在版本迭代中也会有被废弃或新增的情况。

core-site.xml一些通用属性

参数作用hadoop-tmp-dir其他所有临时目录的根目录。其默认值是/tmp/hadoop-${usern.name}。在hdfs-site.xml文件中有几个属性,其配置值都是路径名,它们的根目录就是在hadoop-tmp-dir中配置的fs.defaultFs在没有特殊配置的情况下,HDFS客户端使用的默认路径前缀由该属性配置。io.file.buffer-size该属性指定了文件流的缓冲大小。这个缓冲的大小应该是硬件页面大小的整数倍(Intel x86中是4096),它决定了数据读取和写入操作过程中缓冲了多少数据,其默认值为4096io.bytes.per.checksumHadoop系统在数据写入时会计算校验和(checksums),并在读取数据的时候进行校验,这个过程对用户是透明的。该参数定义了对多大的数据量进行一次校验和计算。其默认值是512字节,其CRC-32校验和结果为4字节。因此,在默认情况下,每存储512字节的数据就会占用大约1%的开销来存储其校验和结果。该参数的值一定要比io.file.buffer-size设置的值大,因为在HDFS读写数据过程中,数据流在内存中的时候就会计算其校验和。当读取HDFS上的数据时,会计算该数据的校验和,并将其与写入数据时计算并保存下来的校验和进行比对验证。io.compression.codecs这个参数值是一个由逗号分割的可用压缩编码类的列表,这些类会被用来压缩/解压数据

hdfs-site.xml一些重要属性

参数作用dfs.namenode.name.dir名称节点本地文件系统中存放元数据文件表(fsimage文件)的目录。这个文件中存储的是HDFS元数据的最近快照。如果该属性值是一个逗号分隔的目录列表,文件会被复制到所有的目录中,用作数据冗余。该属性默认值为:file://${hadoop.tmp.dir}/dfs/name。dfs.namenode.edits.dir名称节点本地文件系统中存储元数据事务处理文件(edits文件)的目录。如果该属性值是一个逗号分隔的目录列表,该事务处理文件会被复制到所有的目录中,用作数据冗余。其默认值与dfs.namenode.name.dir相同dfs.namenode.checkpoint.dir该属性决定了辅助名称节点中存放临时fsimage文件的目录,该临时fsimage文件用来在名称节点可访问的本地/网络文件系统中进行合并,该文件用来与从名称节点拷贝过来的edits文件合并。如果这是一个以逗号分隔的目录列表,镜像文件会复制到所有目录中,用作数据冗余。该属性的默认值为file://${hadoop.tmp.dir}/dfs/namesecondarydfs.namenode.checkpoint.edits.dir该属性决定了辅助名称节点中存放从名称节点拷贝过来的edits文件的目录,该文件用来与已经拷贝到由dfs.namenode.checkpoint.dir属性决定的目录中的fsimage文件合并,该合并在辅助名称节点可访问的本地/网络文件系统中进行。如果这是一个以逗号分隔的目录列表,edits文件会复制到所有目录中,用作数据冗余。该属性的默认值与dfs.namenode.checkpoint.dir相同dfs.namenode.checkpoint.period两个检查点之间的间隔秒数。经过该属性配置的时间之后,检查点操作就开始执行,该操作会合并从名称节点拷贝过来的edits文件和fsimage文件dfs.blocksize指定新文件的默认数据块大小,单位是字节,其默认值是128MB.需要注意的是数据块的大小不是一个系统全局参数,这个参数可以针对单个文件指定dfs.replication默认的数据块备份数量。该参数也可以针对单个文件纪念性指定,如果没有特殊指定,就会以参数值作为文件的备份数量。其默认值为3dfs.namenode.handler.count该参数决定了名称节点与数据节点通信的服务器线程数。其默认值为10,但是推荐其值为集群节点数量的10%。最小值为10.如果该值设置过低,会在数据节点的日志中发现很多告警信息,这些告警信息显示了当数据节点与名称节点进行心跳信息通信的时候被拒绝了dfs.datanode.du.reserved该参数为每卷磁盘中的保留存储空间(单位为字节),该存储空间保留供非HDFS使用。其默认值为0,但是建议其值为10GB和整个磁盘空间大小的25%两者之间的较小值dfs.hosts该属性指定了指向一个文件的完整路径名,指向的文件包含了一个允许与名称节点通信的主机列表。如果没有设置该属性,集群中的所有节点都允许与名称节点通信

mapred-site.xml一些关键属性

参数作用mapreduce.framework.name决定MapReduce作业时提交到YARN集群还是使用本地作业执行器来本地运行。该属性的合法值为yarn或者localmapred.child.java.opts运行Map或者Reduce任务的JVM堆大小。其默认值是-Xmx200m(堆空间大小为200M)设置的值应该小于或者等于在mapreduce.map.memory.mb和mapreduce.reduce.memory.mb属性中设置的值,这些属性值是在应用程序管理器与资源管理器协商资源时使用的。节点管理器负责按照这些属性中设定的JVM堆大小来启动容器。Map和Reduce任务按照mapred.child.opts属性设定的JVM堆大小在容器中执行。如果mapred.child.opts属性值大于mapreduce.*.memory.mb属性值,任务会失败mapreduce.map.memory.mb设定分配给Map人物的容器内存大小,默认值是1024MBmapreduce.reduce.memory.mb设定分配给Reduce任务的容器的内存大小,默认值是1024MBmapreduce.cluster.local.dirMapReduce存储中间数据文件的本地目录。它可以是逗号分隔的存在于不同设备的目录的列表,这样可以提高磁盘I/O。比如存放Mapper过程的数据输出的文件和存放shuffle-sort过程中排序的中间数据结果的文件。其默认值是${hadoop.tmp.dir}/mapred/local,这与value dfs.du.reserved属性值(core-site.xml中指定)相关。一般来说,建议设置不超过75%的硬盘空间来存放HDFS数据,25%的硬盘空间用于存放中间数据文件mapreduce.jobtracker.handler.count作业跟踪器(相当于YARN)的服务器进程数量。该属性值应大约为集群中从节点数量的4%,其最小值为10,该属性默认值为10mapreduce.job.reduce.slowstart.completedmaps在作业中调度Reducer之前,作业中Map完成百分比。默认值是0.05,但是建议值是0.5到0.8之间mapreduce.jobtracker.taskscheduler该类负责人物的调度。其默认值为FIFO的调度策略,其属性值为org.apache.hadoop.mapredJobQueueTaskScheduler。但是推荐设置公平调度器或者计算能力调度器mapreduce.map.maxattempts每个Map任务重试的最大次数。框架在放弃执行Map任务并使作业失败之前,重复尝试执行一个Map任务的次数。其默认值为4mapreduce.reduce.maxattempts每个Reduce任务重试最大次数。框架在放弃执行Reduce任务并使作业失败之前,重复尝试执行一个Reduce任务的次数。其默认值为4

yarn-*.xml文件中的一些关键属性

参数作用yarn.resourcemanager.hostname资源管理器所在节点的主机名yarn.resourcemanager.address运行资源管理器服务的主机名及其端口号。其默认值为http://{yarn.resourcemanager.hostname}:8032yarn.nodemanager.local-dirs一个逗号分隔的本地文件目录列表。节点管理器初始化而成的容器,在容器运行过程中存储文件的目录。此类文件通常是附加配置文件,通过分布式缓存分发每个计算节点的作业运行需要的数据文件函数库。当程序结束时,这些文件都会被删除yarn.nodemanager.aux-services一个逗号分隔的辅助服务列表,这些服务由节点管理执行。该属性默认为空。yarn.nodemanager.resource.memory-mb可分配给容器的物理内存总和,这些容器是由在节点上运行的节点管理器来初始化的。其默认值是8192.大多数节点的内存远大于8GB,在为运行操作系统和其他Hadoop守护进程预留足够的内存之后,可以适当的增大该属性值yarn.nodemanager.vmem-pmem-ratio在配置容器的内存限制时,虚拟内存与物理内存的比值。分配给容器的内存用物理内存来表示,其虚拟内存使用量允许按这个比值超出其所分配的物理内存大小。如果yarn.scheduler.maximum属性设置为其默认值8192,比值设定为2.1,那么每个容器允许使用的虚拟内存上限为8GB*2.1=16.2GB如果超过这一比例,YARN框架会启动容器失败yarn.scheduler.minimum-allocation-mb启动每个容器,需要向资源管理器申请的最小内存量,单位是MB。低于该配置值得内存请求会被忽略,并且按照该设定值来请求内存使用量。其默认值为1024,即1GByarn.scheduler.maximum-allocation-vcores启动每个容器,需要向资源管理器申请得最小虚拟CPU内核数。低于该配置值得请求不会生效,并且会按照该设定值来分配。其默认值为1yarn.scheduler.maximum-allocation-vcores启动每个容器,需要向资源管理器申请的最大虚拟CPU内核数。高于该配置值得请求不会生效,并且会按照该设定来分配,其默认值为32

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: