前回、HDFS高可用性(HA)機能を設定した。今回はResourceManagerをHA化する。
準備
SDカードの寿命を縮めるため、あまり推奨は出来ないが、本格的にメモリ不足のため、念のためスワップ領域を作成しておく。
1 2 3 4 5 6 7 8 9 | sudo mkdir /var/swap sudo dd if = /dev/zero of= /var/swap/swap0 bs=1M count=2048 sudo chmod 600 /var/swap/swap0 sudo mkswap /var/swap/swap0 sudo swapon /var/swap/swap0 #再起動後も自動的にスワップ領域が適用されるようにする sudo vi /etc/fstab #下記の行を追加する /var/swap/swap0 none swap defaults 0 0 |
2021/02/25 追記:
SDカードへ書き込みを少なくするため、スワップの頻度が少なくなるように調整する。
1 2 3 4 5 6 7 8 9 10 11 12 | #スワップの閾値を確認 cat /proc/sys/vm/swappiness > 60 sudo vi /etc/sysctl .conf #下記を追記する(物理メモリが1%以下になったらスワップを開始) vm.swappiness = 1 #設定を反映 sudo sysctl -p cat /proc/sys/vm/swappiness > 1 |
サーバー構成を検討
NameNodeは奇数で構成する必要があったが、ResourceManagerはそのような制約はないため、下記の2台構成とする。
master1・・・Zookeeper,NameNode(Standby), ResourceManager(Standby)
master2・・・Zookeeper,NameNode(Standby), ResourceManager(Active)
master3・・・Zookeeper,NameNode(Active)
slave1・・・DataNode, NodeManager
slave2・・・DataNode, NodeManager
slave3・・・DataNode, NodeManager
slave4・・・DataNode, NodeManager
ResourceManager高可用性(HA)機能の設定
master1~2のetc/hadoop/yarn-site.xmlを編集する。(メモリ関連の記述は省略)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | < property > < name >yarn.resourcemanager.ha.enabled</ name > < value >true</ value > </ property > < property > < name >yarn.resourcemanager.cluster-id</ name > < value >rpcluster_r</ 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.scheduler.class</ name > < value >org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</ value > </ property > < property > < name >yarn.resourcemanager.recovery.enabled</ name > < value >true</ value > </ property > < property > < name >yarn.resourcemanager.store.class</ name > < value >org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</ value > </ property > < property > < name >hadoop.zk.address</ name > < value >master1:2181,master2:2181,master3:2181</ value > </ property > |
slave1~4のetc/hadoop/yarn-site.xmlを編集する。(メモリ関連の記述は省略)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | < property > < name >yarn.resourcemanager.ha.enabled</ name > < value >true</ value > </ property > < property > < name >yarn.resourcemanager.cluster-id</ name > < value >rpcluster_r</ 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.scheduler.class</ name > < value >org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</ value > </ property > < property > < name >yarn.resourcemanager.recovery.enabled</ name > < value >true</ value > </ property > < property > < name >yarn.resourcemanager.store.class</ name > < value >org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</ value > </ property > < property > < name >hadoop.zk.address</ name > < value >master1:2181,master2:2181,master3:2181</ value > </ property > < property > < name >yarn.nodemanager.aux-services</ name > < value >mapreduce_shuffle</ value > </ property > < property > < name >yarn.nodemanager.env-whitelist</ name > < value >JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</ value > </ property > |
ResourceManagerの起動
master1で下記コマンドを実行し、ResourceManagerを起動する。
1 | $HADOOP_HOME /sbin/start-yarn .sh |
起動が確認できたので、実際に処理を実行してみる。
1 | $HADOOP_HOME /bin/hadoop jar /home/xxx/hadoop-latest/share/hadoop/mapreduce/hadoop-mapreduce-examples-3 .2.2.jar pi 10 10000 |
最終的に下記の結果が表示された。スワップを設定したからか今回は前回に比べて50秒ほど早く処理が終わった。
1 2 | Job Finished in 256.114 seconds Estimated value of Pi is 3.14120000000000000000 |