KZKY memo

自分用メモ.

Hadoop Cluster Provisioning

Hadoop Cluster 構築

Hadoop Clusterの構築のメモ.

HDD

  • HDFSは必ずJBOD (Just a Bunch of Disk)で構成すること (RAIDは使わない)
  • Masterは使ってもいと思うがRAID1+0がいいと思う
  • CPU Core数の半分以上はHDDを載せたほうがいいと思う (確かにI/O-boundだけどほんと?)
  • OSが載っているHDDはHDFSに使わない
  • I/O-boundだから確実にVM使わないほうがいいと思う
  • mountの際にnoatime optionをつけておく
  • HDFSfuse-mountしておく
  • HDFSHadoopの最大貢献/恩恵でもあると思うのでHDD周りはしっかりやること

Network

  • 10G Ether以上の性能
  • DNS cacheを使う
    • linuxはdefaultでリゾルバ (クライアント側)では名前をcacheしない!
    • nscdを使う
    • しないとそんなホストは知らんというエラーがでる
  • /etc/hostsにしないほうがいい.
  • infinibandがいいか?
  • NTPの設定

Kernel Paremter

Master

  • High Availability
  • Secondary Name Nodeを立てておく
    • cold standbyだけど
  • Master NodeでWorkerを動かさないほうがいい
    • あくまでMasterとしての役割だけをもたせる

Slaves

  • JBODで組んだHDD上にHDFSを構築しておけばOK

Mapreduce

  • #map:#red = 2:1くらい

Other Tips

Orchestration

3台以上になったらコマンドを直打ちしていくのはキツイ.
なのでOrchestration Toolを使う.
例えば

多分上3つのどれかがいいと思う.
自分はpdshです.

PXE Boot

クラスタを組む前にPXE Boot Serverを立ててておいたほうが絶対に楽.

CombineFileInputFormat

Clusterをせっかく組んだのにMapredの性能を発揮できない場合がある.その場合は次のことを疑うこと.
Hadoopはblock size (default 64MB)より小さいファイルが何個もある場合,極端にいうと,Single Machineで動かすより遅い.
この場合は,CombinedFileInputFormatを使って小さいファイルをまとめて処理する.この際,bzip2 (もしくは生txt)で圧縮しておくと64 MB単位で区切って処理してくれるので更に高速化される.

Notes

もっと詳しいかたコメントください.