/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

2018/11/26 Hadoop ResourceManager HA 構成の設定(メモ)

Hadoop 系のプロダクトはパラメータが多く、業務で私が設定することは少ないので、何かの調査のたびにいつも調べたり眺めたりしているだけなのですが、、忘れがちなので文章にしてみます。

Hadoop 本家はこちら:

Hadoop – Apache Hadoop 2.8.5

そして特に YARN のパラメータはあまり読ませる気がない・・・横スクロール必須です。

https://hadoop.apache.org/docs/r2.8.5/hadoop-yarn/hadoop-yarn-common/yarn-default.xml

ResourceManager の HA 構成について

ResourceManager はクラスタのリソース状況を監視し、アプリケーションに新たにスケジューリングする仕組みを提供します。ResourceManager は Hadoop 2.4 以前は単一障害点(SPOF) でしたが、2.4 以降は Active-Standby 構成が取れるようになりました。

フェイルオーバーは手動(CLI)で行うか、ZooKeeper を利用して自動でフェイルオーバーする許可が設定されていれば自動で行うようです。

以下、Hadoop 本家の説明です。フェイルオーバーの仕組みやパラメータについては非常に簡潔にまとまっていて読みやすいです:

Apache Hadoop 2.8.5 – ResourceManager High Availability

https://hadoop.apache.org/docs/r2.8.5/hadoop-yarn/hadoop-yarn-site/images/rm-ha-overview.png

HA 構成にするための最小設定も上のドキュメントに紹介されています:

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>cluster1</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>master1</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>master2</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>master1:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>master2:8088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>zk1:2181,zk2:2181,zk3:2181</value>
</property>

自動フェイルオーバーはデフォルトで true のようなので、これで Active ノードがダウンした際にフェイルオーバーされるようになります。

また、2.4 からは ResourceManager Restart という機能が提供されていて、 実行中のアプリケーションを中断することなく ResourceManager の再起動を行えるようです。フェイルオーバーが行われた際、新しく Active となったノードはフェイルオーバー前に実行されていたアプリケーションを継続して監視し続けるようです。

Apache Hadoop 2.8.5 – ResourceManger Restart