/var/log/hadoop.log

logs about distributed processing frameworks

hadoop-mesos

mesos と hadoop を組み合わせて利用しようとすると,JobTracker/TaskTracker を書き換える必要があるという問題があった.書き換えた版はmesos 以下のレポジトリに公開されているけれども,コミュニティが開発した最新版を利用する際には rebase してコンパイルする必要があった.

ところが,最新 mesos では hadoop-mesos という jar ファイルを置くだけで起動ができてしまうらしい(@Guutara さんに教えてもらった).

https://github.com/mesos/hadoop

hadoop-mesos は一言で言うと mesos ドライバである.パッチを当てる必要がなくなったカラクリは以下の通り:

  1. org.apache.hadoop.mapred.TaskScheduler の継承して mesos 用に改変.これにより,実装コストを抑えつつ JobTracker 本体へパッチを当てることを防止している.起動は無改変の JobTracker と同様人手で行うが,その際に mesos すり替えた版が起動する.
  2. TaskTracker は mesos ドライバからランタイムに起動する.

hadoop-mesos が動作する前提として,TaskScheduler.java/TaskTracker.java のインタフェースが変わらないことが挙げられる.

雑感

hadoop-1.x 系を利用する場合であれば,以降そんなに大きな変更が加わることもないだろうから,合理的な設計だと思う.hadoop-2.x 系や JobTracker-HA に対応させようとすると結構しんどそうである.