Home

moratorium

修論提出ed

修論提出done! 2年前は真剣に学校ヤメようと思ってたのに、なんとか出したようです。後は修論発表が残っています。色々重なって、この1週間〜2週間は人生で一番忙しく、気持ちの浮き沈みが激しかった気がします。

2/18には京都でWPSE (International Workshop on Peta-Scale Computing Programming Environment, Languages and Tools) 2010というe-Science関係のワークショップが有って、少し話させて頂く予定です。

しかし、Alok Choudharyの前にI/Oの話をするのは、順番的にどうなの。

2009年まとめ

今年は飛行機に乗りまくった年でした。去年まで1年に1回程度だったのに。リストアップすると、石垣島(1week)、上海(1week)、シカゴ(2 months)、ハワイ(1week)、ニューヨーク(4 days), ボルドー(2weeks)。

特にシカゴの二ヶ月が大きかったです。米国で住んでみると、いろいろ体験できるものでした。英語での日常会話には困らなくなりました。ビジネスの交渉とか、多人数のディスカッションとなると少し厳しいので、来年度の課題です。

根本的にはボキャブラリが足りないのと、ネイティブのスピードに付いていけないのが問題です。2人だったら聞き返せばいいのですが、3人以上だと、気を抜くと置いていかれる。ニュースを聞き取れるぐらいになると良いのかなあ。あとは研究所の雰囲気を味わえたのが良かったです。

コーディングの方はというと、今年のコミット数は660ぐらい。去年が1100だった事を考えると、4割減とはかなりお寒い数字ですね…。まあその他の仕事が増えてきたと言うのも有りますけど、もうちょいなんとかならなかったのかと。集中できる時間が少なかった気がするので、来年はなんとか盛り返したいと思います。

研究の方は、1st Authorでの論文は出せなかった。来年前半に出します。CCGRID2009で発表しました。論文はかなり読んでますが、アウトプットが無いのが問題。今は修士論文を書いていて、来年卒業予定です。

会社の方は、順調に売上が伸びてます。色々なところで、割と競争力が出てきた感じ。来年度はもっと洗練させて、儲けて、ガンガン良い人を雇って行くと共に、海外で売るのが目標です。あとはサマーインターンを取ったのも、非常に大きな出来事でした。これは、楽しかった。

プレゼンはITProカンファレンス、天下一カウボーイ大会、楽天テクノロジーカンファレンス、Cookpad TechLife、Shibuya.pm等で行わせて頂きました。あとはKey-Value Store勉強会Hadoop Conference Japan 2009の運営側をやりました。お手伝い頂いた方々に感謝。来年も技術的に面白そうな集まりは是非やりたいです。

あとは松葉さんからお古のレンズ(ZUIKO DIGITAL 14-54mm F2.8-3.5)を安く譲ってもらってから、結構楽しくなってきました。デフォルトレンズだと全体的に暗かったんですよね。FacebookとかPicasaにアップして色々コメントを貰えるのが楽しいですね:-)

では、来年もよろしくお願いいたします!

新型インフルエンザ

木曜日ぐらいから発熱・悪寒がすごくて、病院に行ってきたら新型インフルエンザと診察されました。来週1週間は出禁とのことです。今はタミフルを飲んで少し熱が下がってきた感じです。

検査などは特にされなかったのですが、症状的に見て、ほとんど間違いないとのことです。検査の精度が約60%程度であることと、あと同じような症状の人が前に並んでいたので、安全側に倒す+手間を省いてるのだと思います。

病院に行ってみて分かったのですが、予想以上に流行ってるという印象です・・・。皆様もお気をつけてくださいませ・・・。

# 各方面の方々には、色々迷惑をかけてまして、本当にすいません。。。

Cloudera Distribution for Hadoopのインストール方法

昔色々と記事を書きましたが、1年半経って、もはや内容が古くなって来ました。

Hadoopのインストールは、最近はCloudera Distribution for Hadoopを使用するのが一般的なようなので、こちらでのインストール方法を紹介します。

まずはEC2で2インスタンス立ち上げます。一つがNameNode/JobTracker用、もう一つがDataNode/TaskTracker用です。仮に、ホスト名をmaster, slaveとしておきます。OSはCentOSが推奨されています。

次にCloudera Configuratorにアクセスし、使用するクラスタの構成などを入力します。それらの情報(例:ノードのコア数・メモリ容量・台数など)からConfiguratorは最適なパラメーターを導出し、設定ファイルをrpmの形で自動生成してくれます。デフォルトパラメーターの悪い部分なども全て直してくれますので、性能が出ない可能性が、格段に下がると思います。

Configuratorに一通り情報を入力すると、最後の画面でcloudera-repo.*.noarch.rpmというファイルが生成されますので、ダウンロードし、全ノードにインストールを行います。このrpmをインストールすると、/etc/yum.repos.d/cloudera.repoというファイルが出来ます。

$ rpm -Uvh cloudera-repo-0.1.0-1.noarch.rpm
$ ls -al /etc/yum.repos.d/cloudera.repo
-rw-r--r-- 1 root root 256 Nov  2 09:25 /etc/yum.repos.d/cloudera.repo

cloudera.repoには、先ほどの設定を含んだHadoopのパッケージが設置されているリポジトリの場所が記述されています。具体的にどのようなパッケージがあるかは、以下のようにして探すことができます。kzkhadoopというクラスタを指定したために、このような名前になっています。

$ yum search hadoop-conf-kzkhadoop
Loading "fastestmirror" plugin
Loading mirror speeds from cached hostfile
 * cloudera: cloudera-yum.s3.amazonaws.com
 * cloudera-conf: cloudera-yum-conf.s3.amazonaws.com
 * extras: centos.cs.wisc.edu
 * updates: mirrors.cmich.edu
 * base: repo.genomics.upenn.edu
 * addons: mirror.steadfast.net
hadoop-conf-kzkhadoop-client.noarch : Hadoop Active Configuration generated by Cloudera Configurator
hadoop-conf-kzkhadoop-master.noarch : Hadoop Active Configuration generated by Cloudera Configurator
hadoop-conf-kzkhadoop-slave.noarch : Hadoop Active Configuration generated by Cloudera Configurator

まず、masterにhadoop-conf-kzkhadoop-masterをインストールします。

master% yum install hadoop-conf-kzkhadoop-master.noarch

次に、slaveノードで hadoop-conf-kzkhadoop-slave.noarch をインストールします。

slave% yum install hadoop-conf-kzkhadoop-slave.noarch

HDFSをフォーマットします。masterノードで以下のコマンドを打ちます。

master% /sbin/runuser -s /bin/bash - hadoop -c 'hadoop namenode -format'
09/11/02 09:37:53 INFO dfs.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = ip-10-251-43-226/10.251.43.226
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 0.18.3-14.cloudera.CH0_3
STARTUP_MSG:   build =  -r HEAD; compiled by 'root' on Mon Jul  6 15:02:31 EDT 2009
************************************************************/
Re-format filesystem in /hadoop/hdfs/namenode ? (Y or N) Y
09/11/02 09:37:57 INFO fs.FSNamesystem: fsOwner=hadoop,hadoop
09/11/02 09:37:57 INFO fs.FSNamesystem: supergroup=supergroup
09/11/02 09:37:57 INFO fs.FSNamesystem: isPermissionEnabled=true
09/11/02 09:37:57 INFO dfs.Storage: Image file of size 80 saved in 0 seconds.
09/11/02 09:37:57 INFO dfs.Storage: Storage directory /hadoop/hdfs/namenode has been successfully formatted.
09/11/02 09:37:57 INFO dfs.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ip-10-251-43-226/10.251.43.226
************************************************************/

次に、各種サービスを起動します。masterで、namanode, secondarynamenode, jobtrackerを起動します。jpsコマンドで実際にプロセスが立ち上がっているかどうかを確認してください。

master% /sbin/service hadoop-namenode start
master% /sbin/service hadoop-secondarynamenode start
master% /sbin/service hadoop-jobtracker start
master% /usr/java/default/bin/jps
2082 SecondaryNameNode
1803 NameNode
1884 JobTracker
2104 Jps

同じように、slaveでdatanode, tasktrackerを起動します。

slave% /sbin/service hadoop-datanode start
slave% /sbin/service hadoop-tasktracker start
slave% /usr/java/default/bin/jps
1404 Jps
1306 DataNode
1372 TaskTracker

以上で設定・起動は終了です。次に実際の動作確認に移ります。一番簡単な、grepジョブを動かしてみます。まずは、ルートパスとホームディレクトリにパーミッションをあけます。

master% /sbin/runuser -s /bin/bash - hadoop -c '/usr/bin/hadoop fs -chmod 777 /'
master% /sbin/runuser -s /bin/bash - hadoop -c '/usr/bin/hadoop fs -mkdir /home/'
master% /sbin/runuser -s /bin/bash - hadoop -c '/usr/bin/hadoop fs -chmod 777 /home/'

最後に、適当なユーザー(ここではhadoopuserというユーザーを作成しました)で以下のコマンドを実行します。ここでは、/etc/hadoop/conf以下のファイルをHDFSにアップし、それらのファイルからdfs[a-z.]+というパターンにマッチする単語を抽出し、出現頻度をカウントしています。

[hadoopuser@master]$ /usr/bin/hadoop fs -copyFromLocal /etc/hadoop/conf/ /home/hadoopuser/input/
[hadoopuser@master]$ /usr/bin/hadoop fs -lsr /home/hadoopuser/input/
-rw-r--r--   3 hadoopuser supergroup        196 2009-11-02 10:41 /home/hadoopuser/input/commons-logging.properties
-rw-r--r--   3 hadoopuser supergroup        535 2009-11-02 10:41 /home/hadoopuser/input/configuration.xsl
-rw-r--r--   3 hadoopuser supergroup         50 2009-11-02 10:41 /home/hadoopuser/input/fairscheduler.xml
-rw-r--r--   3 hadoopuser supergroup      39208 2009-11-02 10:41 /home/hadoopuser/input/hadoop-default.xml
-rw-r--r--   3 hadoopuser supergroup       2237 2009-11-02 10:41 /home/hadoopuser/input/hadoop-env.sh
-rw-r--r--   3 hadoopuser supergroup       1245 2009-11-02 10:41 /home/hadoopuser/input/hadoop-metrics.properties
-rw-r--r--   3 hadoopuser supergroup       4160 2009-11-02 10:41 /home/hadoopuser/input/hadoop-site.xml
-rw-r--r--   3 hadoopuser supergroup       2815 2009-11-02 10:41 /home/hadoopuser/input/log4j.properties
-rw-r--r--   3 hadoopuser supergroup         10 2009-11-02 10:41 /home/hadoopuser/input/masters
-rw-r--r--   3 hadoopuser supergroup         10 2009-11-02 10:41 /home/hadoopuser/input/slaves
-rw-r--r--   3 hadoopuser supergroup        401 2009-11-02 10:41 /home/hadoopuser/input/sslinfo.xml.example
[hadoopuser@master]$ /usr/bin/hadoop jar /usr/lib/hadoop/hadoop-*-examples.jar grep /home/hadoopuser/input /home/hadoopuser/output 'dfs[a-z.]+'
[hadoopuser@master]$ /usr/bin/hadoop fs -ls /home/hadoopuser/output/
Found 2 items
drwxrwxrwx   - hadoopuser supergroup          0 2009-11-02 10:44 /home/hadoopuser/output/_logs
-rw-r--r--   3 hadoopuser supergroup       1135 2009-11-02 10:45 /home/hadoopuser/output/part-00000
[hadoopuser@master]$ /usr/bin/hadoop fs -cat /home/hadoopuser/output/part-00000 | head -n 5
3	dfs.
3	dfs.class
2	dfs.name.dir
2	dfs.block.size
2	dfs.namenode.handler.count

以上で終了です。次回は、Hiveを同じようにインストールしてみたいと思います。

Hadoop World NYC 参加記

と言う訳でHadoop World NYC, 2009の参加記を書きます。

1日目はSystem Administrator用のトレーニングコースを受け、2日目がカンファレンス本番でした。トレーニングコースはDeveloper向け(3日間)とManager向けのビジネス寄りのコースが有り、合計で100人ぐらいは参加していたと思います。カンファレンスの本番自体は400~500人の参加でした。

まずSystem Adminコースですが、大体以下のような内容でした。

  • MapReduceの基本概念
  • ハードウェア/ネットワーク機器の選定ポイント
  • OSやJavaなど、ソフトウェアでの注意点
  • Hadoop(Cloudera Distribution)のインストール方法
  • パラメーター/パフォーマンスチューニング(非常に細かい)
  • Rack Topologyの定義方法
  • HA構成/バックアップ/リカバリー方法
  • Fair Shair Schedulerの動作と使用方法
  • Gangliaを使用したシステムモニタリング
  • Hadoopのログファイルについて

大体6時間ぐらいのコースで、これを聞くとプロダクションレベルでHadoopクラスタを管理できるように一応なるかなという感じでした。結構細かいパラメーターの話が有ったり、個人的に気になっていたFairShair Schedulerの話が聞けたり、かなり勉強になりました。

お金を取っていたので、全部書いていいものか分からないので、内容を聞きたい方は一緒に飲みに行った時にでもこっそり聞いて下さい(?) 参加者とも少し話してみたのですが、広告配信の会社、インドのSIer、西海岸の小さいスタートアップ等、かなり色々な分野の人が集まっているという印象でした。

次はカンファレンス本番の方です。以下は現在公開されているスライドです。見つけ次第、適当に追加していきます。

また参加者全員に、Hadoop: The Definitive Guideが配布されました。

セッションが途中から3パラになっていて、全部聞く事は無理なので、僕が聞いた中で気になったものだけピックアップして書いてみます。

Making Hadoop Easy on Amazon Web Services

Amazon EC2上でのElastic MapReduceの話です。Apache HiveがElastic MapReduce上でサポートされた事が発表されました。またユーザー事例としてeHarmonyという出会い系サイトでの事例が紹介されていました。アメリカでは4%ぐらいのカップルがこのサイト経由で結婚するらしいです。

またKarmasphere Studio for Haodopという、MapReduceアプリケーション開発用のIDEが公開されていました。Elastic MapReduceと連携し、IDE上からMapReduceタスクのテスト/実行/デバッグを行えるようです。

Hadoop Applications at Yahoo!

Yahooでの使用事例の話です。Yahooでは現在約25000台程度のノード上でHadoopが走っているようです。そのうちの約20%が本番用、約60%がResearch目的という事でした。

ただ、Yahoo.comのトップページに表示されているコンテンツの裏では結構使われているようで、Ad Optimization, Search Index, RSS Feeds, Machine Learned Spam Filters, Content Optimization (Personalization?)などなどに使われているようです。

またYahoo Search Assistでは3年間のログを20ステップのMapReduceで処理をすることで、検索時の関連ワード用インデックスを作成しているようです。元々はC++で書かれていて実行に26日かかっていたものが、Pythonで書けるようになった上に実行時間が20分まで縮んだようです。

Rethinking the Data Warehouse with Hadoop and Hive

Facebookでの使用事例です。FacebookではログをHadoopクラスタに取り込んで、解析が行われているようです。

またHiveという、SQLライクなクエリ言語でMapReduceジョブを走らせる仕組みを開発しており、約95%のジョブがHiveQL(QueryLanguage)経由で実行されているようです。アプリケーションとしては、日々のPVなどのReporting・Adhoc-Analysis・Machine Learningに使われているらしいです

What’s new from Cloudera

Web上からMapReduceクラスタについての様々な操作を行ったり、情報を見るためのツール、Cloudera Desktopの紹介でした。

Large Scale Transaction Analysi

VISAでの使用事例です。32ノード程度とまだ評価段階な印象を受けました。20分ぐらいVISAの話でHadoopの話が全然出てこなかったのでちょっと期待外れ…。

Cross Data Center Logs Processing

RackSpaceというホスティング会社での使用事例です。RackSpaceではカスタマーサポート用に、ユーザーが送ったEメールの状態を追跡したり、ログなどをインデックス化して検索できるようにしているらしいです。具体的にはHadoopでLuceneのインデックスを作成し、Solr経由で検索を行っているとの事でした。

Hadoop Development at Facebook: Hive and HDFS

Facebookで行われているHive, HDFSの機能改善の紹介でした。個人的にはHDFS-220のArchival機能の話などが面白かったです。

Cool Development Projects at Yahoo!: Automatic Tuning and Social Graph Analysis

Yahoo Incの方からルールベースでのHadoop Clusterの異常検知手法と、Social Graph解析の話が有りました。後半は学会みたいな乗りでした。

Practical HBase: Getting the most from your HBase install

Stumbleupon, StreamyでのhBaseの内部構成/使用事例の話が有りました。su.prというURL短縮サービスで用いられているようです。約90億エントリ/1300GBで運用されているようです。

またhBaseの最新版ではZooKeeperとのインテグレーションが行われマルチマスター構成でも動作するようになったとの事で、こちらも試してみようかと思います。そういえばHyperTableについては今回は発表は無かったですね。

Hadoop + Vertica

VerticaというColumn-Oriented DBを作っている会社が、Vertica上でのMapReduceをHadoopを使用してサポートしたという話でした。StonebrakerがFounderで有名です。

Input/Output周りをVertica用に作ったと言う話だけだったので、実際どれぐらいパフォーマンスが出てるとか、HDFSと比べてどうとかいう話が無かったので、ちょっと残念でした。

Production Deep Dive with High Availability

ContextWebという広告配信の会社での使用事例の話でした。この会社ではコンテンツマッチをHadoopで行っており、そこがビジネスの根幹であるため、高可用性が求められます。

詳しい内容は、Hadoop HA Configurationを見て頂けると分かります。18か月で約6回のフェイルオーバーが起こり、そのうち約3回は予定していたものという事でした。

とりあえずこんな所です。後半力尽きた感が有るので、夜にでもまた書き足します(^_^:

Home

お薦め本
広告
Archives
Categories

Return to page top