天天看点

namenode ha切换优化

一、背景

目前namenode使用了ha的部署模式,但系统会经常出现ha的自动切换(namenode节点其实正常)。经过调研发现可能的原因如下: 

HealthMonitor check本地namenode的rpc端口时超时,导致HealthMonitor认为namenode挂掉。

zk上的session timeout,导致丢掉当前持有的active锁(temp节点),引起自动切换。

二、优化

下面的优化将针对1)和2)调整相应的超时参数,看是否起效。修改core-site.xml

1

2

3

4

5

6

7

8

9

10

<code>    </code><code>&lt;!-- HealthMonitor check namenode 的超时设置,默认50000ms,改为5mins --&gt;</code>

<code>    </code><code>&lt;property&gt;</code>

<code>        </code><code>&lt;name&gt;ha.health-monitor.rpc-timeout.ms&lt;</code><code>/name</code><code>&gt;</code>

<code>        </code><code>&lt;value&gt;300000&lt;</code><code>/value</code><code>&gt;</code>

<code>    </code><code>&lt;</code><code>/property</code><code>&gt;</code>

<code>   </code><code>&lt;!-- zk failover的session 超时设置,默认5000ms,改为3mins --&gt;</code>

<code>        </code><code>&lt;name&gt;ha.zookeeper.session-timeout.ms&lt;</code><code>/name</code><code>&gt;</code>

<code>        </code><code>&lt;value&gt;180000&lt;</code><code>/value</code><code>&gt;</code>

无,不需要重启hadoop,不会引起namenode切换

下面操作假设master1(active),master2(standby),只有按照该顺序操作,才能实现namenode不切换

1)登陆master2(standby),注释掉crontab中的restart-zkfc.sh任务, 执行 

<code>sbin</code><code>/hadoop-daemon</code><code>.sh stop zkfc</code>

2)登陆master1(active),注释掉crotab中的restart-zkfc.sh任务,执行

3)备份master1和master2的core-site.xml文件,将上述配置项加到master1和master2的core-site.xml配置文件中

4)登陆master1(active),执行

<code>sbin</code><code>/hadoop-daemon</code><code>.sh start zkfc</code>

5)登陆master2(standby),执行

6)check hadoop集群状态

7)重要!!! 登录master1和master2,恢复crontab中的restart-zkfc.sh任务

8)完成

1)需要先注释掉机器上的crontab任务restart-zkfc.sh,否则该程序会自动拉起zkfc进程。导致namenode active产生切换

2)任务完成后要恢复crontab中注释掉的restart-zkfc.sh任务

本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1878516,如需转载请自行联系原作者

继续阅读