Hatena::ブログ(Diary)

kuangue’s blog

2008-02-09

[]Hadoopメーリングリスト

ちょっと,0.16.0に入っているかチェックしていないけど,DFSにパーミッションをつけようという話が大分進んでますね.とりあえず,rwが設定できるようです.xは,まあ意味不明なので無しということですね.

2007-12-16

[]Hadoopメーリングリスト

メーリングリストとJIRAを読んでいて,気になったときのメモ.

なんか,HadoopをLuceneプロジェクトから独立させて,Apache直下のプロジェクトにしようという話が持ち上がってますね.主要メンバ全員が賛成しています.で,問題として,現時点でのcommitterがyahooの人がほとんどだから,diversity(多様性)が必要なので,committerの大きな変化がありそうです.提案では,yahoo3,powerset2,その他3-4ということらしい.なるほどー.

2007-12-13

[]Malleyさんのプレゼンテーションファイル

Hadoop Map/Reduceを読んでみてのメモ.

All messages originate at the client

-Prevents cycles and therefore deadlocks

なるほど,このアーキテクチャ自体は,デッドロック回避を行うためだったわけね.

Errors

-Include timeouts and communication problems.

-Are signaled to client via IOException.

-Are NEVER signaled to the server.

サーバには,シグナルを出さないと.

JobTracker

-Handles all jobs

-Makes all scheduling decisions

TaskTracker

-Manager for all tasks on a given node

Task

-Runs an individual map or reduce fragment for a given job

-Forks from the TaskTracker

これ,ソース読むのにかなり重要.

[]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もまずい気がする.

[]Pig on Hadoop

Pigってのは,googleで言うところのsawzallに対応するようです.が,ちょっと見たところでは,Sawzallどころではなくて,もっと意欲的です.Sawzallは,MapReduce処理モデルに思い切り引っ張られているけど,Pigは,リレーショナル演算をHadoop::MapReduce上の処理に変換しようという割と壮大な試み.Hadoopは利用しているけども,完全に別プロジェクトでやっています.yahooで作られていたものをオープンソースにしましたということですね.

たとえば,下のように書くことができるような言語になっています.

VISITS = load '/visits' as (user, url, time);

USER_VISITS = group VISITS by user;

USER_COUNTS = foreach USER_VISITS generate group as user, COUNT(VISITS) as numvisits;

ALL_COUNTS = group USER_COUNTS all;

AVG_COUNT = foreach ALL_COUNTS generate AVG(USER_COUNTS.numvisits);

dump AVG_COUNT;

ほとんど説明要らないですねぇ.これはこれで面白そう.いくらでも最適化の余地があるだろうし.これを知ったのは,Hadoopのjiraでhbaseとの位置づけが議論されていたからなんだけど,hbaseとは全く違いますね.Hbaseは,カラムデータベース.Pigは,load...にあるように,基本的には,ロウベース.かつ,多分,原則的にはテキストファイル.Hbaseは,HDFSを利用しているだけ.Pigは,根本的にMapReduceを必要とする.

[]NameNodeの関数呼び出し関係

NameNodeのソースを追いかけてみたので,ちょっとメモ.

NameNode.main();

NameNode.initialize();
 new Server();
 new Listener();

NameNode.main();
 Server.start();
  Listener.start();
   new Handler[n];
   Handler.start();

Listener()がRPCのaccept()を行うやつらですねぇ.何気に,javaは久しぶりだったりするんだけど,いつの間にか,select()らしきことができるようになっているんですねぇ.便利だ.で,Listnerでは,そのようにやっていますと.スレッドを立てすぎるとちょっと重たいよねということで,そうしているとどっかに書いてあった気がする.

2007-12-06

[]リリースサイクル

As the users of Hadoop ask for more stability and fewer release

upgrades to deal with, I think we should move the release cycle out

to 3 months from the current 2. I propose that we move the feature-

freeze date for 0.16 to the first week of January and 0.17 to first

week of April.

とんでもない速さで,マイナーバージョンをあげていくんですね.でも,ひとまず,3ヶ月に1回になるようで.ありがたい話です.

[]WebDAV

HDFS as a WebDAV store

こりゃすごい.WebDAVとして見えるようになれば,誰でも使えるお気楽ネットワークストレージの完成ですねぇ.どうでも良いけど,はてな記法のリンクは,URLにコロンが入っていると使えないのね.

[]Hadoopメーリングリスト

久しぶりに,Hadoopメーリングリストのたまっていたのを全て読めました.200〜300スレッドを行ったりきたりでしたが,やっと0になりました.一時は,700くらいたまってしまって,これは読んでいけないのではないかと思ったけど,慣れてくるとやっぱり必要なものとそうでないものが寸断できるようになってきた.

で,ピックアップして,必要そうな情報をまとめておこう.

For map/reduce, the default is http://<jobtracker>:50030/.

For hdfs, the default is http://<namenode>:50070/.

これは,hadoop::mapreduceやhadoop::dfsをwebから見るときのデフォルトのポートですね.

M -> R, M -> R, M -> R // default behavior

M -> R|M -> R|M -> R // with composition

上のが今までの動作で,下が提案方式.でも,複雑になりすぎる割にそれほどうれしくないということで採用されず.

2007-11-22

[]SVN

まぁ,Hadoopというより,TortoiseSVN.hadoopのレポジトリをそろそろ丸まる取ってこようかなーと思って,適当に見ていたら,TortoiseSVNが紹介されていたのでダウンロードしてみた.だいぶ前に,普通のディレクトリ・ファイルのバージョン管理ができるというものだと紹介されていたけど,完成度が1年前くらいに比べてかなり高そう.試してみたけど,右クリックcheckoutで一括ゲット.楽チンですねぇ.で,checkout後の総フォルダ1G.でかいよ!!でもまぁ,branchやreleaseの最初のほうのソースを見ると逆にわかりやすいかもね.

バージョン管理なんて,cvsもsvnも一緒だろうと思っていたけど,TortoiseSVNは凄い.つーかまぁ,別にsvnが凄いと感動しているわけではないね.

今現在,ドキュメントをcvsで管理しているけど,そろそろ変えるときなのかもしれない.svnのストレージって,DBだけなんかな?だとするとちょっと嫌なんだけどな.