Hadoop Cluster Provisioning
Hadoop Cluster 構築
Hadoop Clusterの構築のメモ.
HDD
Network
- 10G Ether以上の性能
- DNS cacheを使う
- linuxはdefaultでリゾルバ (クライアント側)では名前をcacheしない!
- nscdを使う
- しないとそんなホストは知らんというエラーがでる
- /etc/hostsにしないほうがいい.
- infinibandがいいか?
- http://www.quora.com/Is-it-worth-using-Infiniband-in-a-Hadoop-cluster-Why-What-is-the-bang4-payoff
- shuffleばっかならいいかもしれないが,普通はdata localityが考慮されているはずなので10Gでいい気がする.
- infinibandは高いし,etherじゃないので勉強コストも増える
- NTPの設定
Master
- High Availability
- NFS mount
- CDHならQuorumJournalManagerがいいと思う
- http://www.slideshare.net/Cloudera_jp/hdfsha-hcj13w
- Secondary Name Nodeを立てておく
- cold standbyだけど
- Master NodeでWorkerを動かさないほうがいい
- あくまでMasterとしての役割だけをもたせる
Mapreduce
- #map:#red = 2:1くらい
Other Tips
Orchestration
3台以上になったらコマンドを直打ちしていくのはキツイ.
なのでOrchestration Toolを使う.
例えば
- pdsh (sh)
- Fabric (python)
- Ansible (python)
- Capistrano (ruby)
多分上3つのどれかがいいと思う.
自分はpdshです.
PXE Boot
クラスタを組む前にPXE Boot Serverを立ててておいたほうが絶対に楽.
CombineFileInputFormat
Clusterをせっかく組んだのにMapredの性能を発揮できない場合がある.その場合は次のことを疑うこと.
Hadoopはblock size (default 64MB)より小さいファイルが何個もある場合,極端にいうと,Single Machineで動かすより遅い.
この場合は,CombinedFileInputFormatを使って小さいファイルをまとめて処理する.この際,bzip2 (もしくは生txt)で圧縮しておくと64 MB単位で区切って処理してくれるので更に高速化される.
Notes
もっと詳しいかたコメントください.