hadoop2.x的配置一

hadoop该怎么配置配置文件?

1.找到官网的配置文件,用官网的配置文件做参考,进官网找对应版本的document,找到Configuration,下面就有相应配置文件了。

2.官网的配置文件只是做参考,配置不是真实的,真实的默认配置文件是在hadoop的安装目录中使用命令:find . -name core-default.xml,从当前目录下找core-default.xml文件,这个文件才是真实的默认配置,请一定参考这个文件,因为hadoop每个版本的配置文件都有所改动,每个版本的配置文件可能有所不同。

3.检查此篇文章的每个配置,对照默认配置,认真配置每个配置项。

一、core-site.xml

1.hadoop.tmp.dir=/tmp/hadoop-${user.name},此目录是本地目录。推荐使用如下配置。

<property>
 <name>hadoop.tmp.dir</name>
 <value>/home/cdh/apps/hadoopdata</value>
</property>

这里的路径默认是NameNode、DataNode、JournalNode等存放数据的公共目录。用户也可以自己单独指定这三类节点的目录。默认配置不可行,因为/tmp每次重启都会被清空。

2.fs.defaultFS=file:///。

非HA时配置

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://master:9000</value>
</property>

HA时配置

<property>
 <name>fs.defaultFS</name>
 <value>hdfs://cluster1</value>
</property>

这里的值指的是默认的HDFS路径(defaultFS)。当有多个HDFS集群同时工作时,用户如果不写集群名称,那么默认使用哪个?在这里指定!该值来自于hdfs-site.xml中的配置,这个地方的值要和hdfs-site.xml文件中的dfs.federation.nameservices一致。

fs.default.name for MRV1 ,fs.defaultFS for MRV2(yarn)。

3.hadoop.http.staticuser.user=dr.who,推荐使用如下配置。

<property>
 <name>hadoop.http.staticuser.user</name>
 <value>cdh</value>
</property>

通过web ui 页面,想通过application id 查看作业详情或者 hdfs 路径,报错没有权限,这时你需要修改 value 值为hadoop用户。

4.回收站的配置,推荐打开回收站功能。

4.1.fs.trash.interval=0,推荐使用如下配置。

<property>
 <name>fs.trash.interval</name>
 <value>4320</value>
</property>

表示文件可以存放的事件,以分钟为单位,0表示禁用trash。CDH4.2以上可以在server和client两端设置,Server端的值优先于Client。4320表示三天,此配置表示删除的文件可以在回收站保留三天。

4.2.fs.trash.checkpoint.interval=0,推荐使用如下配置。此配置和fs.trash.interval一起使用。

<property>
 <name>fs.trash.checkpoint.interval</name>
 <value>60</value> 
</property>

表示回收站检查点的间隔时间,单位也是分钟,只能在服务端设置。60表示一个小时,此配置表示每隔一个小时去检查回收站。

5.ha.zookeeper.quorum=。HA时配置,否则不配置。

<property>
 <name>ha.zookeeper.quorum</name>
 <value>host4:2181,host5:2181,host6:2181</value> 
</property>

ha需要使用zookeeper来协调

参考:Hadoop文档-ubuntu上建立CDH+Impala集群

二、hdfs-site.xml

!dfs.replication=3,推荐使用默认配置。根据实际环境使用此配置,需要配置几就配置几。

dfs.nameservices=。HA时配置,否则不配置。

<property>
 <name>dfs.nameservices</name>
 <value>cluster1,cluster2</value>
</property>

使用federation时,使用了2个HDFS集群。这里抽象出两个NameService实际上就是给这2个HDFS集群起了个别名。名字可以随便起,相互不重复即可。

dfs.ha.namenodes=。HA时配置,否则不配置。

<property>
 <name>dfs.ha.namenodes.cluster1</name>
 <value>host1,host2</value>
</property>
<property>
 <name>dfs.ha.namenodes.cluster2</name>
 <value>host3,host4</value>
</property>

指定NameService是cluster1、cluster2时的namenode有哪些。

dfs.namenode.http-address=0.0.0.0:50070,

非HA配置实例

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

HA配置实例

<property>
 <name>dfs.namenode.http-address.cluster1.host1</name>
 <value>host1:50070</value>
</property>
<property>
 <name>dfs.namenode.http-address.cluster1.host2</name>
 <value>host2:50070</value>
</property>
<property>
 <name>dfs.namenode.http-address.cluster2.host3</name>
 <value>host3:50070</value>
</property>
<property>
 <name>dfs.namenode.http-address.cluster2.host4</name>
 <value>host4:50070</value>
</property>

NameNode的http访问地址,也就是hdfs的访问地址。

dfs.namenode.rpc-address=。HA时配置,否则不配置。

<property>
 <name>dfs.namenode.rpc-address.cluster1.host1</name>
 <value>host1:9000</value>
</property>
<property>
 <name>dfs.namenode.rpc-address.cluster1.host2</name>
 <value>host2:9000</value>
</property>
<property>
 <name>dfs.namenode.rpc-address.cluster2.host3</name>
 <value>host3:9000</value>
</property>
<property>
 <name>dfs.namenode.rpc-address.cluster2.host4</name>
 <value>host4:9000</value>
</property>

dfs.namenode.servicerpc-address=。HA时配置,否则不配置。

<property>
 <name>dfs.namenode.servicerpc-address.cluster1.host1</name>
 <value>host1:53310</value>
</property>
<property>
 <name>dfs.namenode.servicerpc-address.cluster1.host2</name>
 <value>host2:53310</value>
</property>
<property>
 <name>dfs.namenode.servicerpc-address.cluster2.host3</name>
 <value>host3:53310</value>
</property>
<property>
 <name>dfs.namenode.servicerpc-address.cluster2.host4</name>
 <value>host4:53310</value>
</property>

与namenode的通信配置

dfs.namenode.secondary.http-address=0.0.0.0:50090。非HA时配置,否则不配置。

<property>
 <name>dfs.namenode.secondary.http-address</name>
 <value>slave1:50090</value>
</property>

secondary namenode最好不要和namenode配置在同一机器上,这样才能规避风险。secondary namenode就会在slave1上启动了。

dfs.namenode.shared.edits.dir=。HA时配置,否则不配置。

<property>
 <name>dfs.namenode.shared.edits.dir</name>
 <value>qjournal://host4:8485;host5:8485;host6:8485/cluster1</value>
</property>

指定cluster1的两个NameNode共享edits文件目录时,使用的JournalNode集群信息。不同的集群配置不通的路径。这是两个hdfs联盟的hdfs-site.xml不同配置的地方。

!dfs.journalnode.edits.dir=/tmp/hadoop/dfs/journalnode/。HA时配置,否则不配置。

<property>
 <name>dfs.journalnode.edits.dir</name>
 <value>/home/cdh/data/journal</value>
</property>

指定JournalNode集群在对NameNode的目录进行共享时,自己存储数据的磁盘路径。

dfs.ha.automatic-failover.enabled=false。HA时配置,否则不配置。

<property>
 <name>dfs.ha.automatic-failover.enabled.cluster1</name>
 <value>true</value>
</property>
<property>
 <name>dfs.ha.automatic-failover.enabled.cluster2</name>
 <value>true</value>
</property>

指定cluster是否启动自动故障恢复,即当NameNode出故障时,是否自动切换到另一台NameNode

dfs.ha.fencing.methods=。HA时配置,否则不配置。

<property>
 <name>dfs.ha.fencing.methods</name>
 <value>sshfence</value>
</property>

一旦需要NameNode切换,使用ssh方式进行操作

dfs.ha.fencing.ssh.private-key-files=。HA时配置,否则不配置。

<property>
 <name>dfs.ha.fencing.ssh.private-key-files</name>
 <value>/home/cdh/.ssh/id_dsa</value>
</property>

如果使用ssh进行故障切换,使用ssh通信时用的密钥存储的位置。注意如果是root用户,值应该为/root/.ssh/id_rsa,一个是id_rsa,一个是id_dsa,去.ssh目录下查看便知。

dfs.client.failover.proxy.provider=。HA时配置,否则不配置。

<property>
 <name>dfs.client.failover.proxy.provider.cluster1</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
 <name>dfs.client.failover.proxy.provider.cluster2</name>
 <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

指定cluster1/cluster2出故障时,哪个实现类负责执行故障切换。

dfs.permissions=true,推荐使用如下配置。、

<property> 
 <name>dfs.permissions</name> 
 <value>false</value> 
</property>

文件操作时的权限检查标识。如果使用true,在window下eclpse操作hdfs会存在用户权限不足的问题。

dfs.webhdfs.enabled=true,推荐使用默认配置。

访问namenode的hdfs使用50070端口,访问datanode的webhdfs使用50075端口。访问文件、文件夹信息使用namenode的IP和50070端口,访问文件内容或者进行打开、上传、修改、下载等操作使用datanode的IP和50075端口。要想不区分端口,直接使用namenode的IP和端口进行所有的webhdfs操作,就需要在所有的datanode上都设置hefs-site.xml中的dfs.webhdfs.enabled为true。

注意:hadoop2.0.0版本默认值为false,可改为:true。

参考:Hadoop webHDFS设置和使用说明

dfs.namenode.name.dir=file://${hadoop.tmp.dir}/dfs/name此目录是本地目录。推荐使用默认配置。

指定NameNode存储meta和editlog的目录

dfs.datanode.data.dir=file://${hadoop.tmp.dir}/dfs/data此目录是本地目录。推荐使用默认配置。

指定DataNode存储blocks的目录。

dfs.blocksize=134217728推荐使用默认配置。

配置block的大小,默认134217728是128M。

注意:hadoop1.x版本默认值为64M。


你可能感兴趣的:(hadoop2.x的配置一)