2010年4月28日水曜日

OSSベースのクラウドコンピューティング最前線

第6回JEUG(Japan Eucalyptus Users Group)勉強会、
"OSSベースのクラウドコンピューティング最前線"に参加してきました。
会場は日本IBM本社。ちょっとだけ社会見学。

案の定(?)どう見ても学生なのは私だけでした。
ちょっと大人になった気分です。

セミナー順に雑感をば。
  • 13:40~14:00
    「日本ユーカリプタスユーザーズグループの紹介と活動方針について」
    JEUG共同発起人 前彿雅人 氏
    •  JEUGは現在メーリングリスト登録数150人規模の団体。初心者ウェルカム。
      メーリングリストに登録してみるのもいいかもしれない。
      Wikiのドキュメントのバージョンは現在1.5.2だが、最新バージョンの1.6.2についても鋭意翻訳中とのこと。
  • 14:00~15:00
    「Eucalyptusの紹介」
    JEUG 肝付兼続 氏 
    • 初心者向けのEucalyptusの紹介。今まで調べた知識の復習に最適だった。
      およそ間違っていなかったので安心。
      現在のEucalyptusの機能は、EC2と比べるとまだ不十分というのが大勢の見解の模様。ver_2.0に期待が持たれるとのこと。
  • 14:50~15:10
    「Eucalyptusの検証結果の報告とプライベートクラウド構築サービスの紹介」
    クリエーションライン株式会社 代表取締役 安田忠弘  氏
    • 主に会社の紹介。東大院と連携して"yass"というHadoopみたいな?ファイル分散システムを作ってる(た?)とか。
      残りは子供には難しい話だったので割愛。
  • 15:10~15:30
    「Eucalyptus」をベースとしたクラウド基盤としての「ClassCat Cloud」とGAE(Google App Engine)互換の「ClassCat WebApp Engine」の紹介
    株式会社クラスキャット 代表取締役 佐々木規行 氏
    • こちらも主に会社の紹介。子供には難し(略
  • 15:40~16:40
    IBMクラウド事例から考えるOSSによる企業向けクラウドの可能性
    日本IBM Linux/OSSエバンジェリスト 中井悦司 氏
    • IBMのクラウドの取り組み事例(もとい宣伝?)と、Eucalyptusのキックスタートの実機デモ。
      CLC-CCはスクリプトで半自動化、NCについてもネットワークブートで、空のノードを自動的にNCインストール済みにしてしまうというスグレモノ。
      Eucalyptusに何処まで深入りするかは未定だが、後々キックスタートを作れるなら諸々の作業が楽になるかも。
      あと"IBM Linux"でググると情報ソース的に良いことがあるとか。

後でググるメモ。
セミナー中で出てきて気になった単語。重要度はまちまち。
  • Elastic Load Balancer
  • ElasticFox
  • HybridFox
  • CloudBerry S3 Explorer
  • Lucie EC2 //←松岡研?
  • RightScale
  • yass
それと、5/12~14に、有明で「第1回クラウドコンピューティングEXPO」があるとか。
時間がある時に調査。

それとIBMの中井さんの話の中で、
「OSSではユーザーインターフェースの拡充がされてないものが多く、それが周知、導入の敷居を上げている」的な事が挙げられてました。
バイト先でもUIの部分を開発してますし、そもそも趣味が趣味なので、頭の片隅に置いておくことにしましょう。
どこかで役に立てることがあるかも。

2010年4月26日月曜日

Flash開発関連あれこれ

MITライセンスでWindows専用のFLASH、ActionScript2.0/3.0等の統合開発環境。
最近日本語化がされたようで、導入はかなり楽。
Adobe FlashCS3/CS4互換らしいので、私の場合は自宅のCS3と連動可能らしい。

StreamTwitter以外でも、
ちょっとWebインターフェースを作成するのにいいかもしれません。
以上宣伝。


続いて便利そうなもの一覧。
併用は難しいかもしれないけども。
(OpenGLとDirectXを同時に使おうとする感覚?)

3DをPapervisionで済ませて、その上に貼り付けるスプライトを
Frocessingで書ければ理想的。たぶん。

GUI側の構成は、
Updateプロセスがひたすらタプルを受け取って内部モデルを更新、
Drawingプロセスが指定されたFPS値に基づいて、定期的に内部モデルを参照して
描画を行う構成にする予定。

明日のバイトのあとに、Papervisionのテストをやってしまいたい。
それとActionScript3.0でのソケット通信の実装。VIVAコード書き。

2010年4月24日土曜日

System S連動開始

とりあえずSystem SとTCPでつないで、
発言内容をSinkさせるとこまでは完了。
次は発言内容以外の、なるべく全部のデータを乗せて、
総Post数遷移、その他諸々の統計情報を解析するUDOPを書く作業に移る。
それとSink出力をTCPに変更して、FLASHによるGUIへ枝を張る準備もしないと。

StreamCloudの方の、export-importのテストもしたいので、
この辺の実装作業を進めることで、実装コストを下げる。



5000行~10000行の開発に耐えられるコーディング的な意味での体力は、
最近ようやく付いてきたようですが、
(バイト先で書いたC#も、通算10000行弱にはなってきた模様)
言語仕様方面の知識が追いついてないので、
きっとスマートに書けていない気がするのが最近の悩みのタネ。
特にC++とか。

大学を出るまでに、C++とJavaについてはそれなりのスキルと知識を身につけておきたいが、
Javaで書くプログラムの当てが件のDSMSくらいしか無いのが何とも。
ゲーム屋的なバイアスの所為か、Javaの使いどころが中々見つからない…。
(DirectX関係弄るならC/C++だし、GUI作るならC#使うし…)
単にWindowsユーザーなだけか?
何にせよ、VS2010導入に合わせて、C++0x、テンプレートメタプログラミングの知識をさらって、
C++関係の各書(古典、最近の両方)を読む時間を作りたい所。

時間があったら(多分無い)Lispにも手を出してみようそうしよう。

2010年4月22日木曜日

日本人ユーザーのあぶり出し

飛んでくるJSONデータをパースして、
言語設定が日本語になっているユーザーの絞り込みに成功。

(ちなみに私のHN用のアカウントは言語設定が英語なので、こういう偏屈野郎は拾えないのに注意。)

この方法の良いところは、日本人ユーザーが「日本語でない言語」でPostした時も拾えること。
英語とか、ローマ字表記とか。

コンソールに垂れ流すのが明日デモれるはず。

APIから飛んでくるタプルの内容

後々仕様が変わらないとも限らないので何とも言えないが、とりあえず列挙。
  • text //Post本文
  • in_reply_to_user_id //リプライ宛のユーザーID
  • coordinates //経緯度?
  • geo //?
  • created_at //投稿時間
  • contributes //?
  • source //投稿元(Web、クライアント、APIなど)
  • in_reply_to_status_id //リプライ宛のPostのID
  • place //?
  • truncated //?
  • in_reply_to_screen_name //リプライ宛のユーザーの名前?(ユーザーIDではなくて)
  • user //ユーザー情報の構造体の模様。
    • favorites_count //お気に入りの数
    • profile_text_color //テキストの色
    • time_zone //タイムゾーン
    • created_at //twitter開始日?
    • statuses_count //Post総数
    • notifications //?
    • profile_link_color //リンクの表示色
    • description //?
    • lang //言語
    • profile_background_image_url //背景画像のURL
    • profile_image_url //アイコンURL
    • location //Profile欄の所在地
    • contributors_enabled //?
    • following //フォロー
    • geo_enabled //上の"geo"が有効かどうか
    • profile_sidebar_fill_color //サイドバーの塗りつぶし色
    • profile_background_tile //背景画像をタイリングするかどうか
    • screen_name //名前(notユーザーID)
    • profile_sidebar_border_color //サイドバーのボーダーの色
    • followers_count //フォロワーの総数
    • protected //鍵付きかどうか
    • verified //公認(公式?)アカウントかどうか
    • url //プロフィール欄のURL
    • name //ユーザー名
    • firends_count //?相互フォローの総数?
    • id //ユーザーID。内部的に用いられているインデックスと思われる。
    • utc_offset //UTC補正値。タイムゾーンから分かりそうなものだが。
    • profile_background_color //背景色。画像を使わないときに適応される(はず)
  • id //PostのID
  • favorited //お気に入りに入れられたかどうか?
おそらくuserのlangの属性を見れば、ほとんどの日本人ユーザーが抽出出来そう。
発言textに日本語が含まれるかの結果とマージすればおそらくほぼ全体になるだろう。


(上の条件を「常に」くぐり抜けるユーザーは、英語表示など、日本語の表示を設定せず、また日本語によるPostを行わないユーザーである。)

ストリーミングAPI開通

今朝からpythonをちょこちょこ弄っていたら、
ようやくTwitterのStreaming APIにアクセスできました。
といってもtweepyというTwitterAPIバインド使用ですが。使えるものは使うのですよ。

とりあえずコンソールにダラダラ垂れ流し。思いのほか流速は早め?

あとはコイツをTCPで垂れ流してSystemSにつなげてもいいし、ログファイルに書き出してもよし。

パッと見、日本語のPostは多め。最低でも2割、最高(最悪?)4割?
……日本は素敵な国です。駄目な方の意味が7割。

2010年4月19日月曜日

netem

今日のディスカッションでsa05がCLC-CCノードになった訳だが、
偶然にも(?)sa05にはnetemはインストール済みだった。ラッキー。

早速レイテンシのエミュレートを実験。

tc qdisc add dev eth0 root netem delay 200ms
このコマンドで、Ethernet0に200msの遅延を挟ませる。
実際にst00からpingしたところ、見事に200msの遅延が確認されました。
(→返り値の time=200ms)
ちなみに元が0.2ms程度なので、ほぼ指定した値通りになります。

tc qdisc del dev eth0 root
これで遅延解除。
細かい使い方は必要に応じて後ほど。

これで、研究室内で、日本国内~アメリカ西海岸の通信のエミュレーションが可能に。
sa05へのEucalyptus CLC-CCのインストール、st00へのEucalyptus NCのインストールは完了したので、あとはEucalyptusとネットワークの設定と格闘するだけ。
この手の実装はどうやっているのか気になるといえば気になりますが、
下手に首突っ込んでも泥沼になるだけな気がするので気になるだけに。

実験測定インストールに明け暮れてコーディングがあまり出来ない日々。
やっぱりコード書いてる時が一番楽しいですね。

Amazon EC2 のレイテンシ [調査]

更新に間が空いてしまいました。
調査系タスクなのでGoogle先生にお願いして、ばばっと。

http://d.hatena.ne.jp/rx7/20091203/p1
こちらによると、東京からの通信によるレイテンシは、

  • us-east(アメリカ東海岸: ヴァージニア): 193~195msec
  • us-west(アメリカ西海岸: カリフォルニア): 117~121msec
  • eu-west(アイルランド): 283~284msec
の様な感じ。

http://blogs.itmedia.co.jp/kurikiyo/2008/12/post-b95a.html
こちらの記事も参考に。

やはりアメリカのサーバーとの通信には200msec程度のレイテンシはかかる様子。
※記事にもある通り、そもそも光速で通信したとしても、光は1秒間に地球を7周半するとして、地球の裏側と通信するのには0.5/7.5 = 約0.0167sec、片道でこの時間なので、往復では約0.133sec。
つまり物理法則に従っている間は、地球の裏側と通信するにはどう頑張っても100msec以上のレイテンシを覚悟しなければならない、ということ(蛇足)

ということなので、
実際の環境(Amazon EC2を日本国内から使用した場合)をエミュレートする時には、100~200ms程度の遅延を加えてやる必要がある。

netemの遅延コマンド、 # tc qdisc add dev eth0 root netem delay 10ms
があるので、これを使ってみる。CentOS5.4にはプリインストールされていないので自前で入れる。
遅延を掛ける部分はCLC-CC間。Eucalyptus的には、CLC,CCは同じ物理マシンなので、User-CLC間でもいいのだろうか?
Amazon EC2のこのあたりの実装はどうなっているのだろう。




/*
以下余談。
0.133secというと、アクションゲームなどでよく用いられる60FPS(Frame Per Second: 1秒間に60回画面の描画をすること)で換算するとほぼ8フレーム。
レイテンシのレベルとしては、確実に「遅延している」と判断出来るレベル。
(格闘ゲームの世界チャンプで3,4フレームなら反応できる(その間に適切な操作を入力できる)とか聞いた気がしますが実際どうなんでしょ) 

二番目の記事にもあった通り、グラフィカルなWebアプリケーションなどで、頻繁に通信を行う場合は、この遅延は露骨に現われると予想されるので、通信を行うサーバーを何処に置くか(地球上の何箇所に設置するか)というのはかなり重要と思われる。
*/

2010年4月9日金曜日

備忘録

来週のタスク。
  • Eucalyptusの設定+動作確認。
    builderの記事を参考に進めてみる(水曜まで)
  • VWAP実験、ネイティブ環境の性能向上の余地について(原因が以下)
  • SystemSのPE割り当て不備の原因追求?
  • ノード割り当ての仕様確認
    • ネットワーク的に死んだと判定されたノードに再度チェックを入れているかどうか
    • そのジョブの間にノードを追加できるかどうか
  •  Eucalyptusの導入についてのノウハウ解説の準備
    • 本家の論文も役に立つはず。ちまちま読む。
この辺りを中心に進めていきませう

はじめてのEucalyptus

ひとまず自分でやってみよう。
参考URL
兎にも角にも本体のダウンロード。
http://open.eucalyptus.com/downloads
ページ中段、"Eucalyptus via packages"より
CentOS-5 RPMs: 64-bit
をダウンロード。

適当なフォルダに解凍。
出てきたフォルダに入って、先に
# cd eucalyptus-1.6.2-rpm-deps-x86_64
# rpm -ivh *.rpm
で、依存するサードパーティアプリのインストール。

その後、生成されたフォルダ(直前のフォルダのひとつ上)で、
# rpm -ivh *.rpm
でインストール。
足りないパッケージがあった場合は、適宜yumでインストール。
(java-sdkとか、libvirtとかが足りなかった。)
再度インストールすれば通るはず。

インストール後、
# chkconfig –list eucalyptus-cloud
# chkconfig –list eucalyptus-cc
# chkconfig –list eucalyptus-nc
がoffだった場合はonする。

ポート開放云々に必要そうだったので、
nmapをインストール。

# /etc/init.d/eucalyptus-cc start
# /etc/init.d/eucalyptus-cloud start
でCLC(Cloud Controller)、CC(Cluster Controller)を起動する。

※ログファイルは、
/var/log/eucalyptus/
設定ファイルは、
/etc/eucalyptus/ にそれぞれ生成される模様。
参考サイトのパスとは違うので注意!

上記が大体終わったら、
適当なブラウザで、
https://マシン名:8443/ にアクセス。
セキュリティ証明書を無視して突撃すれば、Eucalyptusのログイン画面が出てくる。
初期設定は、
Username = admin
Pass= admin
となる。

2010.04.09 とりあえずここまで出来た。

2010年4月8日木曜日

Amazon EC2・マシンの予約について

http://aws.amazon.com/ec2/
Amazon EC2の概要抜粋。
主に課金体系がらみについて。

前提として、
「実際に使用したリソースについてのみ課金対象となる」ようです。
使用したと見なされる条件は、インスタンス立ち上げ、またはデータ転送。

また、マシンの予約はできる模様。
年単位で一時金を支払い、マシンを予約状態にする。
予約したマシンを使用した場合の料金はディスカウントされる。
(通常の4割程度?)
使用しない場合は料金は発生しない。


先日の先生とのディスカッションで出た予約の問題は、(予約の概念があるので)これで解決するかも。
一時金を支払う、という問題は残るが。
 
http://aws.amazon.com/ec2/purchasing-options/
課金についての詳細はこちら。
あとで読むかも。


補足。

・SLA(Service Level Agreement)99.95%
(信頼性。でも何についての?)

2010年4月5日月曜日

Xen起動時間など

boot時間: 約45秒(sshが成功するまでの時間)
save(resume)時間: 約5秒(sshが不能になるまでの時間)
restore(resume復帰)時間: 約10秒(sshが成功するまでの時間)

save, restoreにはチェックポイントファイルというのが必要の模様。