Hadoop集群的四个配置文件的常用属性解析

在启动hadoop集群的守护线程时,一定会加载并运行相关的class字节码文件。通过common模块和hdfs模块里的源码可以看到,它们读取了相关的配置文件。

hadoop-common-2.7.3-sources.jar下的org.apache.hadoop.conf.Configuration源文件的部分源码:

package org.apache.hadoop.conf;  //类的全路径
public class Configuration implements Iterable<Map.Entry<String,String>>,
                                      Writable {
 static{
    //print deprecation warning if hadoop-site.xml is found in classpath
    ClassLoader cL = Thread.currentThread().getContextClassLoader();
    ........................
    addDefaultResource("core-default.xml");     //加载common模块的默认配置文件
    addDefaultResource("core-site.xml");        //加载个人配置的common配置文件
  }
}

hadoop-hdfs-2.7.3-sources.jar下的org.apache.hadoop.hdfs.HdfsConfiguration源文件的部分源码:

package org.apache.hadoop.hdfs;  //类的全路径
 
import org.apache.hadoop.conf.Configuration;  //引用hadoop-common-2.7.3-sources.jar里的类
 
public class HdfsConfiguration extends Configuration {
  static {
    addDeprecatedKeys();
 
    // adds the default resources
    Configuration.addDefaultResource("hdfs-default.xml");  //#加载hdfs模块的默认配置文件
    Configuration.addDefaultResource("hdfs-site.xml");     //加载个人配置的hdfs配置文件
 
  }
}

那么,今天,我们就来了解一下hadoop的默认配置文件(core-default.xml、hdfs-default.xml、mapred-default.xml、yarn-default.xml)里的内容

一、core-default.xml

1、hadoop.tmp.dir

打开这个文件后,有这样一个属性:hadoop.tmp.dir,默认设置的值为/tmp/hadoop-${user.name}。

<property>
  <name>hadoop.tmp.dir</name>
  <value>/tmp/hadoop-${user.name}</value>
</property>
/tmp/hadoop-hyxy
----dfs #与hdfs有关的文件存储位置
----name
----data
----mapred #与mr有关的文件存储位置

而将路径设置在/tmp下很不安全,Linux在重新启动时,很可能就删除这个路径下的文件。因此在安全分布式集群下,我们都会在etc/hadoop/core-site.xml重新设置这个路径。

2、fs.defaultFS

在来看core-default.xml中的另一个比较重要的属性:fs.defaultFS

<property>
  <name>fs.defaultFS</name>
  <value>file:///</value>
</property>

这个属性的作用就是定义hdfs文件系统的主机和端口号的。不管在是伪分布式下,还是在完全分布式下,我们都会在etc/hadoop/core-site.xml配置文件里重新定义它的值。主机名可以使用ip,也可以使用主机名称。端口号我们可以自定义,不过在hadoop1.x版本默认使用的是9000,而在hadoop2.x中默认使用的是8020。value的值可以这样设置:

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://[ip|hostname]:port</value>  #配置时,请使用真实的ip、hostname、port
</property>
或者
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://[ip|hostname]/</value>      #这种写法就会使用默认端口号
</property>

3、io.file.buffer.size

<!-- i/o properties -->
<property>
  <name>io.file.buffer.size</name>
  <value>4096</value>
</property>
 

这个属性设置的是集群在进行读写操作时,缓冲区的大小。默认是4K。

core-default.xml内的其余的属性,可以自行查看,这里不做讲解了。

二、hdfs-default.xml

1、dfs.namenode.name.dir

<property>
  <name>dfs.namenode.name.dir</name>
  <value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>

我们可以借助有道翻译,将每个属性的描述翻译一下,而这个属性,有道是这样翻译的:确定DFS名称节点应该在本地文件系统的何处存储名称表(fsimage)。如果这是一个以逗号分隔的目录列表,那么name表将复制到所有目录中,以实现冗余。这样的解释应该很清楚了吧,而且用到了core-default.xml/core-site.xml里的属性hadoop.tmp.dir。当然我们可以在etc/hadoop/hdfs-site.xml进行指定设置。

2、dfs.datanode.data.dir

<property>
  <name>dfs.datanode.data.dir</name>
  <value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>

用于定义DFS数据节点应将其块存储在本地文件系统的何处。如果这是一个以逗号分隔的目录列表,那么数据将存储在所有命名的目录中,通常存储在不同的设备上。对于HDFS存储策略,应该用相应的存储类型([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK])标记目录。如果目录没有显式标记存储类型,则默认存储类型为磁盘。如果本地文件系统权限允许,将创建不存在的目录。

可以在etc/hadoop/hdfs-site.xml进行指定设置。

3、dfs.replication

<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>

DFS上的数据库的副本数,缺省值是3。可以在创建文件时进行指定,如果没有指定,就使用缺省值。

4、dfs.blocksize

<property>
  <name>dfs.blocksize</name>
  <value>134217728</value>
</property>

文件系统中的块大小,以字节为单位,如134217728表示128 MB。你也可以使用以下后缀(不区分大小写):k,m,g,t,p,e以指定大小(例如128k, 512m, 1g等)。

5、dfs.namenode.http-address

<property>
  <name>dfs.namenode.http-address</name>
  <value>0.0.0.0:50070</value>
</property>

dfs namenode web ui使用的监听地址和基本端口。可以在etc/hadoop/hdfs-site.xml进行指定设置。

6、dfs.webhdfs.enabled

<property>
   <name>dfs.webhdfs.enabled</name> 
   <value>true</value>      
</property>

在namenode和datanode中启用WebHDFS (REST API)。false表示不启用。

hdfs-default.xml配置文件内的其他属性,可以自行查看,这里就不一一介绍了。

三、mapred-default.xml

当我们使用mapreduce程序时,hadoop集群就会读取该配置文件里的配置信息,我们来看几个比较重要的属性

1、mapreduce.framework.name

<property>
  <name>mapreduce.framework.name</name>
  <value>local</value>
</property>

这个属性用于指定执行MapReduce作业的运行时框架。属性值可以是local,classic或yarn。我们可以在etc/hadoop/mapred-site.xml里来重新指定值。不过呢,在etc/hadoop/目录下没有mapred-site.xml文件,倒是有一个mapred-site.xml.template样板。我们可以复制一份,将名称改为mapred-site.xml。

2、mapreduce.jobhistory.address

<property>
  <name>mapreduce.jobhistory.address</name>
  <value>0.0.0.0:10020</value>
</property>

指定了查看运行完mapreduce程序的服务器的IPC协议的主机名和端口号。可以通过mapred-site.xml进行设置

3、mapreduce.jobhistory.webapp.address

<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>0.0.0.0:19888</value>
  <description>MapReduce JobHistory Server Web UI host:port</description>
</property>

指定了使用webui查看mapreduce程序的主机名和端口号。可以通过mapred-site.xml进行设置。

mapred-default.xml配置文件内的其他属性,可以自行查看,这里就不一一介绍了。

四、yarn-default.xml

如果在hadoop下指定使用了yarn,那么一定会读取yarn-default.xml这个配置文件。一起来看看里面的属性吧

1、yarn.nodemanager.aux-services

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value></value>
    <!--<value>mapreduce_shuffle</value>-->
</property>

这个属性用于指定在进行mapreduce作业时,yarn使用mapreduce_shuffle混洗技术。这个混洗技术是hadoop的一个核心技术,非常重要。可以在yarn-site.xml里进行设置。

2、yarn.nodemanager.aux-services.mapreduce_shuffle.class

用于指定混洗技术对应的字节码文件。

 <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
 </property>

3、yarn.resourcemanager.hostname

用于指定resourcemanager的主机名

<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>0.0.0.0</value>
</property> 

4、yarn.resourcemanager.address

用于指定在RM中的应用程序管理器接口的地址

<property>
    <name>yarn.resourcemanager.address</name>
    <value>${yarn.resourcemanager.hostname}:8032</value>
</property>

5、yarn.resourcemanager.scheduler.address

用于指定调度程序接口的地址。

<property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>${yarn.resourcemanager.hostname}:8030</value>
</property>

6、yarn.resourcemanager.resource-tracker.address

用于指定rm下的resource-tracker的地址

 <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>${yarn.resourcemanager.hostname}:8031</value>
  </property>

7、yarn.resourcemanager.admin.address

用于指定RM管理界面的地址。

 <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>${yarn.resourcemanager.hostname}:8033</value>
 </property>

8、yarn.resourcemanager.webapp.address

用于指定RM的web访问的地址

<property>
    <description>The http address of the RM web application.</description>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>${yarn.resourcemanager.hostname}:8088</value>
  </property>

这些属性我们都可以在etc/hadoop/yarn-site.xml里进行重新设置。yarn-default.xml默认配置文件里其他的属性,就不一一介绍了,可以自己查看哦。

热门文章

暂无图片
编程学习 ·

RPM软件包手工编译安装apache

RPM软件包手工编译安装apache1.apache概述2. Apacheweb服务器软件拥有以下特性3. 实验3.1 实验环境3.2在centos7.6的Linux系统下用RPM源码编译安装apache3.2.1 实验步骤 1.apache概述 Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大…
暂无图片
编程学习 ·

中断、异常、系统调用的概念

系统调用是由应用程序发起的,意思是应用程序主动向操作系统发出服务请求。 异常是由不良的应用程序发起的,意思是非法指令或者其他坏的处理状态,比如内存出错。 中断是由外设发起的,它来自于不同硬件设备的计时器或者网络的中断。
暂无图片
编程学习 ·

深入浅出计算机组成原理 函数调用(自我提升第二十二天)

昨天6月30号,菜鸟去搞了半天的手机套餐什么的,然后我妈换了个华为的手机,忍不住想玩玩,所以鸽了/(ㄒoㄒ)/~~ 今天就补昨天的咯,然后再写一篇或者两篇,具体看看有没有什么事,话不多说,冲冲冲 这里我一篇是菜鸟提取的,不然就是讲单片机了,不是菜鸟自己总结的/(ㄒoㄒ)/~…
暂无图片
编程学习 ·

最长重复子数组(java)

问题描述: 给两个整数数组 A 和 B ,返回两个数组中公共的、长度最长的子数组的长度。 样例: 代码见下: package Leetcode; import java.util.Scanner; public class FindLength {public static int findLength(int[] A, int[] B) {//暴力破解int len1=A.length;int len2=B.…
暂无图片
编程学习 ·

VS不能使用scanf函数的解决方法

在VS创建一个c++项目之后,即使已经#include<stdio.h>仍然不能scanf,会出现下面的情况解决方法:1、点击项目->项目属性,点开属性页面2、点击C/C++ -> 预处理器 -> 预处理器定义 -> 点击右侧的下拉列表 -> 点击下拉列表里的<编辑>3、在预处理器定…
暂无图片
中恒嘉业 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
中恒嘉业 ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络&#xff1a;信息往一个方向流动。包括MLP和CNN 循环神经网络&#xff1a;信息循环流动&#xff0c;网络隐含层输出又作为自身输入&#xff0c;包括RNN、LSTM、GAN等。 RNN模型结构如下图所示&#xff1a; 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
郑州普通话 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
郑州普通话 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别&#xff1f; 1&#xff1a;vuex的异步数据不需要使用到中件间&#xff0c;redux需要 2&#xff1a;vuex可以直接commit&#xff0c;action不是必须的&#xff0c;redux是必须的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…
暂无图片
代理记账 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
代理记账 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别&#xff1f; 1&#xff1a;vuex的异步数据不需要使用到中件间&#xff0c;redux需要 2&#xff1a;vuex可以直接commit&#xff0c;action不是必须的&#xff0c;redux是必须的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…
暂无图片
cgfy ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
cgfy ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络&#xff1a;信息往一个方向流动。包括MLP和CNN 循环神经网络&#xff1a;信息循环流动&#xff0c;网络隐含层输出又作为自身输入&#xff0c;包括RNN、LSTM、GAN等。 RNN模型结构如下图所示&#xff1a; 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
coreui ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别&#xff1f; 1&#xff1a;vuex的异步数据不需要使用到中件间&#xff0c;redux需要 2&#xff1a;vuex可以直接commit&#xff0c;action不是必须的&#xff0c;redux是必须的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…
暂无图片
未来博客 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别&#xff1f; 1&#xff1a;vuex的异步数据不需要使用到中件间&#xff0c;redux需要 2&#xff1a;vuex可以直接commit&#xff0c;action不是必须的&#xff0c;redux是必须的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…
暂无图片
建站日记 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别&#xff1f; 1&#xff1a;vuex的异步数据不需要使用到中件间&#xff0c;redux需要 2&#xff1a;vuex可以直接commit&#xff0c;action不是必须的&#xff0c;redux是必须的 个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知…
暂无图片
mfbz ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
mfbz ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络&#xff1a;信息往一个方向流动。包括MLP和CNN 循环神经网络&#xff1a;信息循环流动&#xff0c;网络隐含层输出又作为自身输入&#xff0c;包括RNN、LSTM、GAN等。 RNN模型结构如下图所示&#xff1a; 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
珊珊日记 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求&#xff1f; 如果单纯的使用Redux&#xff0c;因为redux的actionCreator返回一个plain object&#xff0c;所以不能在actionCreator中发起网络请求&#xff1b;reducer是一个纯函数&#xff0c;不能有副作用&#xff0c;所以也不能有异…
暂无图片
珊珊日记 ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络&#xff1a;信息往一个方向流动。包括MLP和CNN 循环神经网络&#xff1a;信息循环流动&#xff0c;网络隐含层输出又作为自身输入&#xff0c;包括RNN、LSTM、GAN等。 RNN模型结构如下图所示&#xff1a; 展开之后相当于堆叠多个共享隐含层参数的前馈…