彷徨 | Hadoop各配置文件的配置及其作用

版权声明:版权所有,转载请注明出处.谢谢 https://blog.csdn.net/weixin_35353187/article/details/81780439

目录

1 . slaves

2 . core-site.xml

3 . hdfs-site.xml

4 . mapred-site.xml:(注意要将mapred-site.xml.template重命名为 .xml的文件)

5.Yarn-Site.xml

6 . hadoop-env.sh


1 . slaves

把所有从节点的主机名写到这儿就可以,这是告诉hadoop进程哪些机器是从节点。每行写一个,例如:

hadoop02
hadoop03
hadoop04

注:前提是你已经为每个节点进行了hostname的命名。而且每个节点的hosts文件你修改了本地dns的指向,让这些主机指向约定好的IP。然后每个节点的hosts文件保持同步。


2 . core-site.xml

<configuration>
        <!-- 这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现ha的namenode服务) -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://hadoop01:9000</value>
        </property>

        <!-- 指定hadoop临时目录,前面用file:表示是本地目录。有的教程上直接使用/usr/local,我估计不加file:应该也可以。hadoop在运行过程中肯定会有临时文件或缓冲之类的,必然需要一个临时目录来存放,这里就是指定这个的。当然这个目录前面我们已经创建好了。 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/local/hadoop-2.8.3/tmp</value>
        </property>
</configuration>

额外的,有的人在core-site.xml中加了如下属性:

<configuration>
	<!-- 这个属性用来执行文件IO缓冲区的大小-->
	<property>
		<name>io.file.buffer.size</name>
		<value>131072</value>
	</property>
	<property>
		<name>hadoop.proxyuser.myusrname.hosts</name>
		<value>*</value>
	</property>
	<property>
		<name>hadoop.proxyuser.myusrname.groups</name>
		<value>*</value>
	</property>
	<!-- 也有人使用zookeeper,因此,需要在hadoop核心配置文件core-site.xml中加入zookeeper的配置:指定zookeeper地址 。zookeeper可以感知datanode工作状态,并且提供一些高可用性的特性。-->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>hadoop01:2181,hadoop02:2181,hadoop03:2181,hadoop04:2181</value>
	</property>
</configuration>

暂时不了解zookeeper,后续再说。先不加入这个配置了暂时。


3 . hdfs-site.xml

<configuration>
        <!-- namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据-->
        <property>
                <name>dfs.namenode.name.dir</name>
                <value>/usr/local/hadoop-2.8.3/data/name</value>
        </property>

        <!-- datanode数据的存放地点。也就是block块存放的目录了-->
        <property>
                <name>dfs.datanode.data.dir</name>
                <value>/usr/local/hadoop-2.8.3/data/data</value>
        </property>
    
        <!-- hdfs的副本数设置。也就是上传一个文件,其分割为block块后,每个block的冗余副本个数-->
        <property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>
        
        <!-- secondary namenode的http通讯地址-->
        <property>
                <name>dfs.secondary.http.address</name>
                <value>hadoop01:50090</value>
        </property>
</configuration>
<configuration>
	<property>
		<!-- 开启hdfs的web访问接口。默认端口是50070 , 一般不配 , 使用默认值-->
		<name>dfs.webhdfs.enabled</name>
		<value>true</value>
	</property>
</configuration>

4 . mapred-site.xml:(注意要将mapred-site.xml.template重命名为 .xml的文件)

<configuration>
    <!---- 指定mr框架为yarn方式,Hadoop二代MP也基于资源管理系统Yarn来运行 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
<configuration>
	<property>	
	<!---- 指定mr框架jobhistory的内部通讯地址。目前还不知道是做什么的 -->	
		<name>mapreduce.jobhistory.address</name>
		<value>singlehost:10020</value>	
	</property>	
	<property>	
	<!---- 指定mr框架web查看的地址 -->	
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>singleshost:19888</value>	
	</property>
</configuration>

通过,mapred-site.xml,我们又出现了2个访问地址:

MapReduce内部的一个通讯地址:hadoop01:10020

MapReduce外部web访问的地址:hadoop02:19888


5.Yarn-Site.xml

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop01</value>
    </property>

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

这个文件就是配置资源管理系统yarn了,其中主要指定了一些节点资源管理器nodemanager,以及总资源管理器resourcemanager的配置。 可以看到这个配置中,跟mapreduce框架是相关的。

可见yarn首先是为了支持mapreduce这个模型,之后很多其他的框架都是基于mapreduce以及yarn的功能基础上开发出来的。

<property>                                                                
	<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
	<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
	<!--yarn总管理器的IPC通讯地址-->
	<name>yarn.resourcemanager.address</name>
	<value>hadoop01:8032</value>
</property>
<property>
	<!--yarn总管理器调度程序的IPC通讯地址-->
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>hadoop01:8030</value>
</property>
<property>
	<!--yarn总管理器的IPC通讯地址-->
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>hadoop01:8031</value>
</property>
<property>
	<!--yarn总管理器的IPC管理地址-->
	<name>yarn.resourcemanager.admin.address</name>
	<value>hadoop01:8033</value>
</property>
<property>
	<!--yarn总管理器的web http通讯地址-->
	<name>yarn.resourcemanager.webapp.address</name>
	<value>singlehost:8088</value>
</property>

可以看到,yarn-site.xml 配置了很多通讯地址,除了8088都是IPC协议的通讯地址,是为了yarn的多个进程之间进行通讯的。
小知识拓展:如果2个进程在同一台机子且在同一个操作平台,可以选择IPC或TCPIP两种通讯协议,但IPC效率高于TCPIP。因为IPC通讯,2个进程直接发送通讯包,而采用TCPIP,进程要把通讯包先发给LO本地环路接口,再通过LO发给进程2.
如果2个进程在不同物理机器或不同操作平台上,则不能用IPC,只能用TCPIP了。

6 . hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/usr/local/jdk1.8.0_102

注:每个配置文件的第一个代码块为本人自己电脑所配置 , 第二个代码块为参考其他博客

关于Hadoop的三大核心技术 :

分布式文件管理系统HDFS,分布式计算框架MapReduce,以及分布式资源管理调度平台YARN的文章请参考:
HDFS个人浅谈 : https://blog.csdn.net/weixin_35353187/article/details/82047892
MapReduce个人浅谈 : https://blog.csdn.net/weixin_35353187/article/details/82108388
YARN个人浅谈 : https://blog.csdn.net/weixin_35353187/article/details/82112174
Hadoop的各配置文件的配置以及参数的意义请参考文章 : 
Hadoop的各个配置文件的配置 : https://blog.csdn.net/weixin_35353187/article/details/81780439

猜你喜欢

转载自blog.csdn.net/weixin_35353187/article/details/81780439