YARN

明日の Hackathon のため,Hadoop の開発環境をtrunkのコードで構築. YARN 環境の構築は初めてだったので環境変数周りで手こずったが,無事に動作確認.

YARN といえば,YARN の MPI プラグインができて, OpenMPI 側にマージされたらしい.

https://issues.apache.org/jira/browse/MAPREDUCE-2911

Mesos に比べたら遅れているかもしれないけど,エコシステムができあがっているのはやはり強い.

Hadoop MapReduce デザインパターン

Hadoop MapReduce デザインパターンを読み始める.まだ3章の途中だけど,かなり有用.そのうちまとめ記事を書こう.

3章読了.Shuffle 量をスケーラビリティを保ったまま削減させるパターン,Join をスケーラビリティを保ったまま削減させるパターンが書かれていた.アプリ側で何を最適化できるのか知ることができて,大変参考になった.

5章,7章読了.グラフ処理を MapReduce で処理するときの一般的なパターンを理解できた.グラフ処理の並列化では,MR job を何回も回す必要がある.しかし,MR だと繰り返し処理の効率が非常に悪いから,Google が Pregel を,Hadoop コミュニティがGiraphを開発した.この2つのプロジェクトの解いている問題は「グラフ計算を行うときに,MRを使うと計算機リソースの利用効率が悪い,遅延が大きい」という問題だから,Google 社内でPageRank の反映が遅くてが問題になっていたんだろうね.

読書メモとパッチ

象本 part2

オライリーの象本を読み終わった.なお,周辺ツール(Hive, Pig, etc..)の章は飛ばした.HBase の章は読んだけど説明がざっくりだったので,しっかり理解するなら馬本を読む必要がありそう. 次に読む Hadoop 関係の本は Hadoop MapReduce デザインパターンの予定. アプリケーション側でどこまで最適化して,どこをフレームワーク側でチューニングすべきなのか,という話を習得したい.

maven

maven を使って開発をしたことがないので,Apache Maven 3クックブックを読む. とりあえず,mvn test したときにテストが実行される基準について見る…すると, $SRC_ROOT/test/java 以下の Test*.java, *Test.java, *TestCase.java という名前にマッチするクラスが実行されるらしい.勝手に実行されるクラスを決めてくれる辺り,ちょっと Rails っぽい.

ちなみに,maven の解説は日本語のサイトだとこのサイトがダントツで詳しい.

ところで

本は全て Kindle Fire で読んでるんだけど,鞄が軽くなって良い感じ.厚い本でも,何冊持っても重量一定ってのは大きい.

MR-2338

MAPREDUCE-2338 に対してパッチを投稿.テストが通ってないね.原因は TestKeyFieldBasedComparator の jar ファイルの参照先がリモートレポジトリになっているからと予想.テストファイルを動かすかね.

引き続き象本

8章の途中まで読了.特に印象に残っている部分は,

  1. Writable の役割 : 単なるSerializationの話かと思ったら,思ったよりHadoopフレームワークと密結合していて驚いた.確かに型の抽象化は,データ処理のフレームワークを作ろうとしたら問題になる部分だが,Generic 型をうまーく使って回避していて勉強になる.
  2. 各種 Input/Output Format の役割 : こちらも単なるParsingの話かと思ったら,思ったよりも工夫の幅が広かった.自作InputFormatを作ることでファイルの分割を回避して分割不可能な処理を行えるようにしていたり,自作OutputFormatを用意することで,Reducerが指定したprefixを付けて複数のファイルを書き出せるようにしていたり.
  3. SequentialFile のフォーマット.

の3点.

この辺りは性能に効いてくるし,フレームワームの知識も要求されるため,Hadoop職人の腕の見せ所. Writable/InputFormat/OutpuFormat の煩わしい部分をDSLによって抽象化を行っているのが Asakusa Framework,知識として体系化しているのがMapReduce アプリケーションデザインパターン(Data Intensive Text Processing with MapReduce)なんだろうね.

象本

今更,オライリーのHadoop本を読んでいる.GW開始から読み始めて,今6章を読み終わったところなので,だいたい1日1章ペース.GW明けまでに全部読めるかな?

4/7

お買い物

ふと新宿に行ったら,駅前に adidas の専門店ができているのに気付いて入ってみる.当然スポーツ用品がメインなんだけど, adidas っぽい普通の服も売っていてびっくり.ジャージが結構気に入ったのだけど,1万超えだったので諦め.もうちょっと安かったら買ってたんだけど.

ついでに原宿にも行ってみた.原宿の明治通り沿いのTシャツ売ってたユニクロに行こうとしたら,店舗を見つけられず. 2011年につぶれちゃってたんだね,気付かなかった.ユニクロとえば,最近見なくなってた J+ っていうユニクロの高級志向ブランド. アレもいつの間にかなくなってた.手頃な値段だったから,結構好きだったんだけどね.

ふと思い出したが

大学の先生も,e-hdk 先生もかな入力らしい.頭では,タイプ数最小のタイプ方法だと理解が,覚えないといけないキー配置の数が多すぎるので自分には無理.

6

Markdown を導入

ベタテキストで日記を書くのがしんどいので,WP HatenaNotation や WP-Markdown の導入を検討したが,両プラグインとも今使っているテーマからだと HTML に変換されない.plugin の hook ポイント(MarkdownをHTMLに変換する箇所)が上手く動作していないようだ.原因を追及するよりも,別のプラグイン使った方が早そうだったので Markdown on Save Improved を導入したところ,Markdown で記述したテキストが HTML に変換されるのが確認できた.

proxy 周りの設定,再び

git を使おうとして,プロキシ周りで再びハマる.再び cokescrew で回避したわけだけど,git config に core.gitproxy なんて設定があったんだなぁと驚く.以下のようなgitproxyというスクリプトを用意して,

#!/bin/sh
cokescrew [proxy url] [port] $1 $2
$ git config core.gitproxy '"gitproxy" for github.com'

 

とすると,

[core]
    gitproxy=gitproxy for github.com

 

という設定が ~/.gitconfig 加わって,github.com にアクセスするときには gitproxy を使ってアクセスしてくれるという寸法.

飲み会

ちゃんと話したことがない人がたくさん居たので,色々な方々にキャリアプランについて質問してみた.目標は同じでも,やり方は色々あるのだなと,改めて思い知った.今はアカデミックな感じの方でも,元は開発やっていたりとかね.

自分はどうだろう?やはりシステムのイノベーションていうのは実際の問題から生まれるだろうし,実際の問題を解決している技術は使われて保守せざるを得ないから枯れやすい,という確信があるので(MapReduceもそうだよね),今は,事業としっかり手を組んで,困っている問題一旦決めたテーマを研究成果としてまとめるということをしていきたいと考えている.

それはそうと

会社に依存しないアウトプットというと,論文かOSSしかないかなぁ.それ以外に何かあるだろうか.

台風

Mac OS X (Lion) にて,nc を利用して HTTPS Proxy 経由で外部サーバにSSHを通そうとすると,何故か “HTTP のステータスコード 200 が帰ってきたよ” というエラーが出て,SSHが通らないという現象でハマる.Linux の nc や, Teraterm だと大丈夫なんだが.結局,cokescrew という nc みたいなソフトウェアを使って解決.

台風につき,早めに帰宅.雨よりも風が強い.