5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YARNにおけるコンテナへのメモリアロケーションの割り当てユニット

Last updated at Posted at 2015-03-17

サマリ

**「YARNでResource Managerがコンテナに割り当てるメモリの単位が128MBの倍数、もしくは256MBの倍数になっている」**という話を聞いたのでこの原因を調べてみた。

これはHadoopのしわざ?EMRのしわざ?はたまた全然別のなにか?みたいなところを中心に調べてみた。

結論

  • YARNのResource Managerはyarn.scheduler.minimum-allocation-mbの設定値の倍数を単位としてコンテナにメモリを割り当てていた。
  • EMRのc3.xlargeにおいてはこの値が256だった。(AMI3.3.2と3.4.0で確認)

この情弱野郎が!と怒られそうだけど、Hadoopのコードを読んだわけじゃなくて人から聞いた話なので、どこでそういう実装になっているのかとか、どういう背景でこういう実装になっているのか、は今のところわからない。はい、読みます。。。

きっかけ

下記のブログポスト群でそういうことを見つけたというか、「これってホント?」と質問をされたのがきっかけ。

こっちはEMRだと256MBの倍数という話。

こっちはディストリビューションはわからない(ポストにCDH4ってタグがついているので、たぶんCDH?)けど128MBの倍数という話。

ヒント

@oza_x86さんのこのスライドが大きなヒントになった。このスライドをもとにいろんな人と話していたら「yarn.scheduler.minimum-allocation-mbの値の倍数がメモリアロケーションの単位だよ」と教えてくれた!

試してみた

たとえば下記のような感じでBootstrap Actionでyarn.scheduler.minimum-allocation-mbを300MBに設定してみる。

--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,Name="Configure Hadoop",Args=[--yarn-key-value,yarn.scheduler.minimum-allocation-mb=300]

コマンド全体はこちら。

aws emr create-cluster \
--name EMR3_3_2 \
--ami-version 3.3.2 \
--applications Name=Hive Name=Hue \
--instance-groups InstanceGroupType=MASTER,InstanceCount=1,InstanceType=c3.xlarge InstanceGroupType=CORE,InstanceCount=5,InstanceType=c3.xlarge \
--log-uri s3://PATH/TO/LOG/ \
--enable-debugging \
--ec2-attributes SubnetId=YOUR_SUBNET,KeyName=YOUR_KEYPAIR \
--bootstrap-actions Path=s3://elasticmapreduce/bootstrap-actions/configure-hadoop,Name="Configure Hadoop",Args=[--yarn-key-value, yarn.scheduler.minimum-allocation-mb=300]

で、起動したクラスタで適当にHiveのクエリを投げてみつつ、Resource Managerのログを見守る。
そしたら実際に300MBの倍数で実際にコンテナにメモリが割り当てられた!

$ tail -f /media/ephemeral0/var/log/hadoop/yarn-hadoop-resourcemanager-ip-10-0-136-43.ap-northeast-1.compute.internal.log | grep Assigned
output
2015-03-17 02:41:42,622 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode (ResourceManager Event Processor): Assigned container container_1426559783155_0001_01_000001 of capacity <memory:3000, vCores:1> on host ip-10-0-248-65.ap-northeast-1.compute.internal:9103, which currently has 1 containers, <memory:3000, vCores:1> used and <memory:2632, vCores:3> available
2015-03-17 02:41:50,438 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode (ResourceManager Event Processor): Assigned container container_1426559783155_0001_01_000002 of capacity <memory:1500, vCores:1> on host ip-10-0-248-62.ap-northeast-1.compute.internal:9103, which currently has 1 containers, <memory:1500, vCores:1> used and <memory:4132, vCores:3> available
2015-03-17 02:41:50,468 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode (ResourceManager Event Processor): Assigned container container_1426559783155_0001_01_000003 of capacity <memory:1500, vCores:1> on host ip-10-0-248-66.ap-northeast-1.compute.internal:9103, which currently has 1 containers, <memory:1500, vCores:1> used and <memory:4132, vCores:3> available
2015-03-17 02:41:50,625 INFO org.apache.hadoop.yarn.server.resourcemanager.scheduler.SchedulerNode (ResourceManager Event Processor): Assigned container container_1426559783155_0001_01_000004 of capacity <memory:1500, vCores:1> on host ip-10-0-248-65.ap-northeast-1.compute.internal:9103, which currently has 2 containers, <memory:4500, vCores:2> used and <memory:1132, vCores:2> available

Disclaimer

このポストはわたし個人のメモであり、所属する組織を代表するものではありません。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?