本文共 4074 字,大约阅读时间需要 13 分钟。
前面说过了NameNode,DataNode的配置方法,这次说Secondary的配置方法。hadoop为实现高可用,支持配置失效备份的Namenode,这样当主的Namenode挂掉了之后,可以从Secondary把数据恢复回去。可以理解为Mysql的Master和Slave,但是不同的是,hadoop的Secondary不能直接当Namenode使用,更多的时候是用它当namenode的数据恢复。
其实secondary的配置有些类似于Datanode
<? xml version ="1.0" ?> <? xml-stylesheet type ="text/xsl" href ="configuration.xsl" ?> <!--
Put site-specific property overrides in this file. -->
< configuration > < property > < name >fs.default.name
</ name > < value >hdfs://hadoopmaster-177.tj:9000
</ value > <!--指定master地址-->
</ property > < property > < name >fs.checkpoint.dir
</ name > < value >/opt/data/hadoop1/hdfs/namesecondary,/opt/data/hadoop2/hdfs/namesecondary
</ value > <!--其实这个比较重要,数据恢复全靠它-->
</ property > < property > < name >fs.checkpoint.period
</ name > < value >1800
</ value > </ property > < property > < name >fs.checkpoint.size
</ name > < value >33554432
</ value > </ property > < property > < name >io.compression.codecs
</ name > < value >org.apache.hadoop.io.compress.DefaultCodec,com.hadoop.compression.lzo.LzoCodec,com.hadoop.compression.lzo.LzopCodec,org.apache.hadoop.io.compress.GzipCodec,org.apache
.hadoop.io.compress.BZip2Codec
</ value > </ property > < property > < name >io.compression.codec.lzo.class
</ name > < value >com.hadoop.compression.lzo.LzoCodec
</ value > </ property > </ configuration > <? xml version ="1.0" ?> <? xml-stylesheet type ="text/xsl" href ="configuration.xsl" ?> <!--
Put site-specific property overrides in this file. -->
< configuration > < property > < name >dfs.name.dir
</ name > < value >/opt/data/hadoop1/hdfs/name,/opt/data/hadoop2/hdfs/name
</ value > < description > </ description > </ property > < property > < name >dfs.data.dir
</ name > < value >/opt/data/hadoop1/hdfs/data,/opt/data/hadoop2/hdfs/data
</ value > < description > </ description > </ property > < property > < name >dfs.http.address
</ name > < value >hadoopmaster-177.tj:50070
</ value > </ property > < property > < name >dfs.secondary.http.address
</ name > < value >hadoopslave-189.tj:50090
</ value > <!--注意这里-->
</ property > < property > < name >dfs.replication
</ name > < value >3
</ value > </ property > < property > < name >dfs.datanode.du.reserved
</ name > < value >1073741824
</ value > </ property > < property > < name >dfs.block.size
</ name > < value >134217728
</ value > </ property > </ configuration > <? xml version ="1.0" ?> <? xml-stylesheet type ="text/xsl" href ="configuration.xsl" ?> <!--
Put site-specific property overrides in this file. -->
< configuration > < property > < name >mapred.job.tracker
</ name > < value >hadoopmaster-177.tj:9001
</ value > </ property > < property > < name >mapred.local.dir
</ name > < value >/opt/data/hadoop1/mapred/mrlocal
</ value > < final >true
</ final > </ property > < property > < name >mapred.system.dir
</ name > < value >/opt/data/hadoop1/mapred/mrsystem
</ value > < final >true
</ final > </ property > < property > < name >mapred.tasktracker.map.tasks.maximum
</ name > < value >12
</ value > < final >true
</ final > </ property > < property > < name >mapred.tasktracker.reduce.tasks.maximum
</ name > < value >4
</ value > < final >true
</ final > </ property > < property > < name >mapred.child.java.opts
</ name > < value >-Xmx1536M
</ value > </ property > < property > < name >mapred.compress.map.output
</ name > < value >true
</ value > </ property > < property > < name >mapred.map.output.compression.codec
</ name > < value >com.hadoop.compression.lzo.LzoCodec
</ value > </ property > < property > < name >mapred.child.java.opts
</ name > < value >-Djava.library.path=/opt/hadoopgpl/native/Linux-amd64-64
</ value > </ property > </ configuration > 然后masters文件也要指向master namenode的主机名,在这里也就是hadoopmaster-177.tj
slaves文件内容则仍是Datanode的主机名。
而真正的主namenode里面的conf/master文件则写从namenode的主机名 意思就是主namenode的masters写secondary的主机名,从namenode的masters写primary的主机名。 这样,从namenode到datanode到secondary就完整了。可以开始真实的运行map/reduce运算了。如果namenode失效了,可以从secondary的checkpoint指定的路径里将数据恢复到namenode。
转载地址:http://zckya.baihongyu.com/