设为首页 收藏本站
查看: 565|回复: 0

[经验分享] hadoop ha配置

[复制链接]

尚未签到

发表于 2016-12-5 09:17:05 | 显示全部楼层 |阅读模式
HADOOP HA配置


hadoop2.xha配置,此文档中描述有hdfsyarnha配置。
此文档的假定条件是zk已经安装并配置完成,其实也没什么安装的。

hdfs ha配置


首先,先配置core-site.xml配置文件:

<property>

在老版本中使用mr1,还可能使用fs.default.name来进行配置
  <name>fs.defaultFS</name>
此处配置的mycluster目前还没有定义,我们需要记住这个值,
这个表示此namenodenameServiceId,hdfs-site中定义,此处进行引用
  <value>hdfs://mycluster</value>
</property>



接下来,配置当namenode发生切换时的检查方法,当NAMENODE切换时,
需要检查并确保只有一个active节点。
因此会通过SHELLSSH的方式过去强制中止或执行检查

<property>
  <name>dfs.ha.fencing.methods</name>
此处的可配置值sshfence/shell
  <value>sshfence</value>
</property>
 
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>


配置ha连接的zk的连接地址,

<property>
  <name>ha.zookeeper.quorum</name>
  <value>one.cluster:2181,two.cluster:2181,three.cluster:2181</value>
</property>


还可以有如下几个配置:
ha.zookeeper.session-timeout.mszksession超时时间,默认是5000ms
ha.zookeeper.parent-znodehdfshazk上的存储路径, 默认是/hadoop-ha
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter"/>
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0"/>
<v:f eqn="sum @0 1 0"/>
<v:f eqn="sum 0 0 @1"/>
<v:f eqn="prod @2 1 2"/>
<v:f eqn="prod @3 21600 pixelWidth"/>
<v:f eqn="prod @3 21600 pixelHeight"/>
<v:f eqn="sum @0 0 1"/>
<v:f eqn="prod @6 1 2"/>
<v:f eqn="prod @7 21600 pixelWidth"/>
<v:f eqn="sum @8 21600 0"/>
<v:f eqn="prod @7 21600 pixelHeight"/>
<v:f eqn="sum @10 21600 0"/>
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
<o:lock v:ext="edit" aspectratio="t"/>
</v:shapetype><v:shape id="图片_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
style='width:426.75pt;height:283.5pt;visibility:visible;mso-wrap-style:square'>
<v:imagedata src="file:///C:\Users\ADMINI~1\AppData\Local\Temp\msohtmlclip1\01\clip_image001.png"
o:title=""/>
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
 
接下来对hdfs-site.xml进行配置
定义上面提到过的nameserviceid的值,

<property>
  <name>dfs.nameservices</name>
此处对当前配置的hanameserviceid进行定义,此处的mycluster中间不能使用"_"线
  <value>mycluster</value>
</property>


 
接下来定义nameserviceid中需要使用到的namenodeid,

<property>
  <name>dfs.ha.namenodes.mycluster</name>
此处定义了两个namenodeid,也就是需要配置两具namenode,id分别是nn1nn2
  <value>nn1,nn2</value>
</property>


在定义完成需要的namenode id后,
需要针对每一个namenode,定义其相关的rpc,http地址。
如果有启用https,还需要设置https-address
此处的配置通过nameserviceid.namenodeid来进行配置。

<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>one.cluster:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>two.cluster:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>one.cluster:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>two.cluster:50070</value>
</property>


 
 
 
 
接下来配置namenode edits的共享存储,在这里使用QJM来进行配置:
qjm是一个很轻量的进程,可以直接部署到namenodedatanode中。
qjm的默认rpc端口是8485,默认http端口是8480,
可通过配置dfs.journalnode.rpc-addressdfs.journalnode.http-address来修改端口。
qjm必须配置为单数个(N),可以保证在(N-1)/2个正常运行时,能够正常提供服务。

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://one.cluster:8485;two.cluster:8485;three.cluster:8485/mycluster</value>
</property>


配置QJM的存储路径

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/data/1/dfs/jn</value>
</property>


设置针对此nameserviceid的客户端代理:
client请求时通过nameserviceid来做请求,
nameserviceid解析出对应的active namenode就通过此配置中的java类来完成。

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


 
 
 
接下来配置namenode的自动故障转换。

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


 
把配置文件复制到所有的节点中。这个不能忘呀。
在配置有QJM的节点中启动QJM.
进入hadooop_home/sbin目录
./hadoop-daemon.sh start journalnode
 
进入hadoop_home/bin目录下,执行./hdfs zkfc -formatZKzk上进行格式化
namenode进行format操作:
进入hadoop_home/bin目录,并执行如下命令
执行./hadoop namenode -format -clusterid hacluster命令。
./hdfs namenode -initializeSharedEdits
接下来启动主的namenode, 进入hadooop_home/sbin目录,执行如下命令
./hadoop-daemon.sh start namenode
赶往standbynamenode节点,
进入hadoop_home/bin目录,执行如下命令:

./hdfs namenode -bootstrapStandby


 
启动standby namenode,进入hadooop_home/sbin目录,执行如下命令
./hadoop-daemon.sh start namenode
接下来启动各个datanode节点。
./hadoop-daemon.sh start datanode
最后一步,启动zkfc,自动切换namenode节点的服务。
因为此时两个namenode都是standby的状态,需要启动zkfc来实现切换。
在主namenodestandbynamenode中进行hadoop_home/sbin目录。并执行如下命令
./hadoop-daemon.sh start zkfc
the end.
 

YARN RMHA配置


配置yarnresourcemanagerHA只有在hadoop2.3.x后才引进,
yarnha配置相对简单,直接配置yarn-site.xml文件

<property>
rm连接失败的重试间隔
    <name>yarn.resourcemanager.connect.retry-interval.ms</name>
    <value>2000</value>
  </property>
<property>
是否启用ha配置,默认是false.
    <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
  </property>
<property>
启动自动故障转移,默认为false
    <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>
<property>
启用一个内嵌的故障转移,与ZKRMStateStore一起使用。
    <name>yarn.resourcemanager.ha.automatic-failover.embedded</name>
    <value>true</value>
  </property>
<property>
    <name>yarn.resourcemanager.cluster-id</name>
    <value>rm-cluster</value>
  </property>
<property>
    <name>yarn.resourcemanager.ha.rm-ids</name>
    <value>rm1,rm2</value>
  </property>
<property>
配置当前的rm节点,这个地方要注意,在rm1这个机器上时,配置为rm1
rm2这台机器上时,需要配置为rm2.它们之间通过zk来实现active操作
    <name>yarn.resourcemanager.ha.id</name>
    <value>rm1</value>
  </property>
<property>
    <name>yarn.resourcemanager.recovery.enabled</name>
    <value>true</value>
  </property>
<property>
HA时,RMStateStore需要配置为这个值。
    <name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
  </property>
<property>
配置与zk的连接地址
    <name>yarn.resourcemanager.zk.state-store.address</name>
    <value>localhost:2181</value>
  </property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>localhost:2181</value>
</property>
<!-- RM1 configs -->
  <property>
    <name>yarn.resourcemanager.address.rm1</name>
    <value>host1:23140</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address.rm1</name>
    <value>host1:23130</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.https.address.rm1</name>
    <value>host1:23189</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>host1:23188</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm1</name>
    <value>host1:23125</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address.rm1</name>
    <value>host1:23141</value>
  </property>
<!-- RM2 configs -->
  <property>
    <name>yarn.resourcemanager.address.rm2</name>
    <value>host2:23140</value>
  </property>
  <property>
    <name>yarn.resourcemanager.scheduler.address.rm2</name>
    <value>host2:23130</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.https.address.rm2</name>
    <value>host2:23189</value>
  </property>
  <property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>host2:23188</value>
  </property>
  <property>
    <name>yarn.resourcemanager.resource-tracker.address.rm2</name>
    <value>host2:23125</value>
  </property>
  <property>
    <name>yarn.resourcemanager.admin.address.rm2</name>
    <value>host2:23141</value>
  </property>
 
 


启动yarn的各节点,
 
在主的resourcemanagerstandbyresourcemanager中执行
yarn-daemon.sh start resourcemanager
nodemanager中执行
yarn-daemon.sh start nodemanager
 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-309836-1-1.html 上篇帖子: PDI(Kettle)5.1配置hadoop 下篇帖子: Hadoop 中 DistributedCache 的应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表