DataNodeについて

基本的には,DataNode.run()において,offerserviceが呼び出されて,NameNodeとの整合性を図る.で,DataXceiveServer.start()で,acceptを行うサーバをデーモンとして立てる.受付けると,DataXceiverが起動して,基本的なやり取りを行うスレッドとなる.

Throttlerは,1回あたり,500msを与えることになっていて,約1MBを送ってしまった場合には,その時点から,500ms+直前のスタート時刻−現在時刻でwaitを行う.

プロトコル処理のためのread/write系関数群がすんばらしいので,プロトコルが手に取るように分かりますねぇ.Blockは,chunkからなっていて,それぞれのchunkに対してchecksumをとっている.

Raw Local FS write: 152 read: 79
Local FS write: 203 read: 78
mini-DFS write: 269 read: 134

上記は,jiraだったか,メーリングリストで流れていた10Gバイトに対して要した時間[s].これ書いた人は,checksumが遅いのではないかと書いていた.が,Doggさんが,そんなこと無いと書いていた.個人的には,Throttlerもまずい気がする.