hadoop2.x的配置一

hadoop该怎么配置配置文件?

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

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

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

一、core-site.xml

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

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

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

!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)。

当有2个namenode时,如果active namenode切换了,那么这个路径是否为动态改变?所以不使用某个节点的名称来命名。当有多个HDFS集群同时工作时,用户如果不写集群名称,那么该使用哪个?在这里指定!该值来自于hdfs-site.xml中的配置,这个地方的值要和hdfs-site.xml文件中的dfs.nameservices等一致。

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

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

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

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

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

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

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

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

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

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

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

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

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

ha需要使用zookeeper来协调

!fs.hdfs.impl.disable.cache=false。推荐默认配置。源码默认是false,在官方的配置文件中找不到此属性,只能到源码上查找。参考:FileSystem.get从缓存cache中获得连接导致的问题

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

二、hdfs-site.xml

hdfs-site.xml的配置注意HA和federation的配置是不同的。

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

dfs.nameservices=。

非HA非federation时,不配置。

HA非federation时

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

HA且federation时

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

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

dfs.ha.namenodes=。

非HA非federation时,不配置。

HA非federation时

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

HA且federation时

<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非federation时

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

HA非federation时

<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>

HA且federation时

<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非federation时,不配置。

HA非federation时

<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>

HA且federation时

<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非federation时,不配置。

HA非federation时

<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>

HA且federation时

<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非federation时

<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非federation时,不配置。

HA非federation时

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

HA且federation时

<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非federation时,不配置。

HA非federation时

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

HA且federation时

<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.datanode.max.transfer.threads=4096,推荐使用如下配置。

<property> 
 <name>dfs.datanode.max.transfer.threads</name> 
 <value>8192</value> 
</property>

datanode同时处理请求的任务上限,总默认值是 4096,该参数取值范围[1 to 8192],如果这个配置使用默认配置,在跑mr/spark任务,需要连hdfs时,有可能会报Premature EOF from inputStream错误

参考:hadoop MR 任务 报错 "Error: java.io.IOException: Premature EOF from inputStream at org.apache.hadoop.io"

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。


转载于:https://my.oschina.net/cjun/blog/488342

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值