<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>moratorium</title>
	<atom:link href="http://kzk9.net/blog/feed" rel="self" type="application/rss+xml" />
	<link>http://kzk9.net/blog</link>
	<description></description>
	<pubDate>Fri, 13 Aug 2010 20:18:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/feed" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/feed" />
		<item>
		<title>memcachedの件: その2</title>
		<link>http://kzk9.net/blog/2010/08/mixi_memcached_144_2.html</link>
		<comments>http://kzk9.net/blog/2010/08/mixi_memcached_144_2.html#comments</comments>
		<pubDate>Fri, 13 Aug 2010 19:59:33 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=901</guid>
		<description><![CDATA[				再現させる
				bulkneetsツールを使ったが、Ubuntu Intrepid (2.6.27-11-server)では再現せず。RHEL5(2.6.18-128.el5)では再現した。もうちょい色々な環境で試してみる必要が有りそう。
				エラーメッセージからの追跡
				stanakaさんの以下の発言より。
				* http://twitter.com/stanaka/status/21037070317
				以下のメッセージが出るらしい。
				

[err] event_queue_remove: 0x15ea9d88(fd 30) not on queue 8

				event.c event_queue_remove()の先頭部分でのメッセージ。
				

void
event_queue_remove(struct event_base *base, struct event *ev, int queue)
{
        if (!(ev-&#62;ev_flags &#38;amp;amp; queue))
                event_errx(1, &#34;%s: %p(fd %d) not on queue %x&#34;, __func__,
  [...]]]></description>
			<content:encoded><![CDATA[				<h1>再現させる</h1>
				<p><a href="http://twitter.com/bulkneets/status/21057512540">bulkneetsツール</a>を使ったが、Ubuntu Intrepid (2.6.27-11-server)では再現せず。RHEL5(2.6.18-128.el5)では再現した。もうちょい色々な環境で試してみる必要が有りそう。</p>
				<h1>エラーメッセージからの追跡</h1>
				<p>stanakaさんの以下の発言より。</p>
				<p>* <a href="http://twitter.com/stanaka/status/21037070317">http://twitter.com/stanaka/status/21037070317</a></p>
				<p>以下のメッセージが出るらしい。</p>
				<pre name="code" class="c">

[err] event_queue_remove: 0x15ea9d88(fd 30) not on queue 8
</pre>
				<p>event.c event_queue_remove()の先頭部分でのメッセージ。</p>
				<pre name="code" class="c">

void
event_queue_remove(struct event_base *base, struct event *ev, int queue)
{
        if (!(ev-&gt;ev_flags &amp;amp;amp; queue))
                event_errx(1, &quot;%s: %p(fd %d) not on queue %x&quot;, __func__,
                           ev, ev-&gt;ev_fd, queue);
</pre>
				<p>queue &#8220;8&#8243; は、event.hによるとEVLIST_ACTIVE.</p>
				<pre name="code" class="c">

#define EVLIST_ACTIVE   0x08
</pre>
				<p>event_queue_removeをEVLIST_ACTIVEで呼び出している箇所は複数有る。が、ev_flags &#038; EVLIST_ACTIVE をチェックせずに呼び出しているのは2箇所、event_reinit()とevent_process_active()になる。</p>
				<p>event_reinit()はmemcachedからは呼び出されている所が無いので、自ずとevent_process_activeの以下の箇所になる。</p>
				<pre name="code" class="c">

        for (ev = TAILQ_FIRST(activeq); ev; ev = TAILQ_FIRST(activeq)) {
                if (ev-&gt;ev_events &amp;amp;amp; EV_PERSIST)
                        event_queue_remove(base, ev, EVLIST_ACTIVE);
                else
                        event_del(ev);
</pre>
				<p>activeqには入っているが、ev_flagsにEVLIST_ACTIVEが立っていない条件が成立しうるらしい。</p>
				<p>activeqにいれているのは、一箇所、event_queue_insert()になる。ただし、入れる前にかならずev_flagsにEVLIST_ACTIVEは立てている。</p>
				<p>ということで、他の場所でev_flagsを弄ってしまっているかメモリ破壊を疑いたい。</p>
				<p>ひとまず前者を疑うと、ev_flagsを変更しているのは event_queue_insert(), event_queue_remove(), event_queue_set() になる。insert, removeに関しては問題ないので、疑うとすればset()。この関数が既存eventに対してevent_del()せずにいきなり呼ばれたりするのが怪しそう。</p>
				<p>が、memcachedにはそんな箇所は無いので有った。メッセージが出る時の、ev->ev_flagsの値が欲しい&#8230;座礁ed.</p>
				<h1>現象からの追跡</h1>
				<p>event_base_loop()中のevent_haveevents(base)がfalse、つまりbase->event_countが0になっているらしい。</p>
				<p>これは通常は有り得ない、というのもlisten用(新規コネクション受付用)のeventが常に有るはずなので。event_countが減算されるのは、event_queue_remove()。通常は、event_del()から呼ばれる。</p>
				<p>となるとlisten用のeventまで消えてしまうのは、event_del()するかメモリ破壊ぐらいしか無い。listen用のeventをevent_del()しているのは、コネクションが溢れたときに呼ばれる以下の関数。</p>
				<pre name="code" class="c">

void do_accept_new_conns(const bool do_accept) {
    conn *next;

    for (next = listen_conn; next; next = next-&gt;next) {
        if (do_accept) {
            update_event(next, EV_READ | EV_PERSIST);
            if (listen(next-&gt;sfd, settings.backlog) != 0) {
                perror(&quot;listen&quot;);
            }
        }
        else {
            update_event(next, 0);
            if (listen(next-&gt;sfd, 0) != 0) {
                perror(&quot;listen&quot;);
            }
        }
    }
    ... snip ...
}
</pre>
				<p>コネクションが溢れたときには、do_acceptがfalseになっている。update_event()では、event_del() => event_add()しているが、このevent_add() が失敗しているんじゃないかと予想(メモリ破壊じゃなければ)。そうすると、event_countが0になるシナリオは作れる。</p>
				<p>このupdate_event()の失敗を捕まえられればなあ&#8230;やっぱ次はなんとか手元で再現させる事を考えよう。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2010/08/mixi_memcached_144_2.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2010/08/mixi_memcached_144_2.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2010/08/mixi_memcached_144_2.html" />
	</item>
		<item>
		<title>libevent-1.3b, memcached-1.4.4 で固まる?</title>
		<link>http://kzk9.net/blog/2010/08/mixi_memcached_14.html</link>
		<comments>http://kzk9.net/blog/2010/08/mixi_memcached_14.html#comments</comments>
		<pubDate>Thu, 12 Aug 2010 15:56:47 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=891</guid>
		<description><![CDATA[				mixiの件について、nealさんから情報を貰ったので数時間調査してみた。というのも、うちの製品でもlibevent(evhttp)をリクエスト処理に使っているので、これにバグが有ると非常に困る。
				
				Nealさんのつぶやき
				
				ひとまず、libevent-1.3b, libmemcached-1.4.4をビルドする。memcachedは、-cで同時接続数を制限できる。で、この同時接続数というのは、実はファイルディスクリプタの数を制限する事で達成されている。memcached.cの以下の部分。
				

    /*
     * If needed, increase rlimits to allow as many connections
     * as needed.
     */
    if (getrlimit(RLIMIT_NOFILE, &#38;amp;rlim) != 0) {
        fprintf(stderr, &#34;failed to getrlimit number of files\n&#34;);
 [...]]]></description>
			<content:encoded><![CDATA[				<p>mixiの件について、nealさんから情報を貰ったので数時間調査してみた。というのも、うちの製品でもlibevent(evhttp)をリクエスト処理に使っているので、これにバグが有ると非常に困る。</p>
				<ul>
				<li><a href="http://twitter.com/nealsato/status/20973356531">Nealさんのつぶやき</a></li>
				</ul>
				<p>ひとまず、libevent-1.3b, libmemcached-1.4.4をビルドする。memcachedは、-cで同時接続数を制限できる。で、この同時接続数というのは、実はファイルディスクリプタの数を制限する事で達成されている。memcached.cの以下の部分。</p>
				<pre name="code" class="c">

    /*
     * If needed, increase rlimits to allow as many connections
     * as needed.
     */
    if (getrlimit(RLIMIT_NOFILE, &amp;amp;rlim) != 0) {
        fprintf(stderr, &quot;failed to getrlimit number of files\n&quot;);
        exit(EX_OSERR);
    } else {
        int maxfiles = settings.maxconns;
        if (rlim.rlim_cur &lt; maxfiles)
            rlim.rlim_cur = maxfiles;
        if (rlim.rlim_max &lt; rlim.rlim_cur)
            rlim.rlim_max = rlim.rlim_cur;
        if (setrlimit(RLIMIT_NOFILE, &amp;amp;rlim) != 0) {
            fprintf(stderr, &quot;failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.\n&quot;);
            exit(EX_OSERR);
        }
    }
</pre>
				<p>mixiでは30kコネクションだが、それをエミュレーションするのは辛い。ということで環境を擬似的に再現するために、以下のように変更してディスクリプタ数を非常に小さい値に設定して、クライアント側でそれ以上の並列数を指定してみる事にした。</p>
				<pre name="code" class="c">

        int maxfiles = settings.maxconns;
        rlim.rlim_cur = maxfiles;
        rlim.rlim_max = maxfiles;
        if (setrlimit(RLIMIT_NOFILE, &amp;amp;rlim) != 0) {
            fprintf(stderr, &quot;failed to set rlimit for open files. Try running as root or requesting smaller maxconns value.\n&quot;);
            exit(EX_OSERR);
        }
</pre>
				<p>これで、並列数を32などに制限できる。</p>
				<pre name="code" class="c">

$ ./memcached -c 32 -t 4 -v -v -v
</pre>
				<p>次に、libmemcached付属のツールmemslapで負荷をかける</p>
				<pre name="code" class="c">

$ memslap -s localhost:11211 --threads=1 --concurrency=32 -S 1s
</pre>
				<p>サーバーが固まります。以下のようなメッセージと共に。</p>
				<pre name="code" class="c">

event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
event_add: No such file or directory
</pre>
				<p>conn_new()のここ。</p>
				<pre name="code" class="c">

    if (event_add(&amp;amp;c-&gt;event, 0) == -1) {
        if (conn_add_to_freelist(c)) {
            conn_free(c);
        }
        perror(&quot;event_add&quot;);
        return NULL;
    }
</pre>
				<p>まずはボトムアップだ！という事でstrace -f で調査してみた所、以下のような結果。</p>
				<pre name="code" class="c">

[pid 10655] write(2, &quot;&lt;31 new auto-negotiating client &quot;..., 43&lt;31 new auto-negotiating client connection
) = 43
[pid 10655] epoll_ctl(13, EPOLL_CTL_MOD, 31, {EPOLLIN|EPOLLOUT, {u32=31608592, u64=31608592}}) = -1 ENOENT (No such file or directory)
[pid 10655] write(2, &quot;event_add: No such file or direc&quot;..., 37event_add: No such file or directory
) = 37
[pid 10655] write(2, &quot;Can\&#039;t listen for events on fd 31&quot;..., 33Can&#039;t listen for events on fd 31
) = 33   
</pre>
				<p>EPOLL_CTL_ADDされていないディスクリプタにEPOLL_CTL_MODしようとしているらしい。これはmemcachedか、libeventが不正な状態を持っちゃってこうなってるんだろう。</p>
				<p>memcachedはlibeventと変な形で密結合していて、上に登っていくのが厳しい。イベントベースなのも有るし。</p>
				<p>という事で今度はトップダウンでソースから。サーバーでディスクリプタが足りなくなるのは、一箇所、accept(2)の所。</p>
				<pre name="code" class="c">

            if ((sfd = accept(c-&gt;sfd, (struct sockaddr *)&amp;amp;addr, &amp;amp;addrlen)) == -1) {
                if (errno == EAGAIN || errno == EWOULDBLOCK) {
                    /* these are transient, so don&#039;t log anything */
                    stop = true;
                } else if (errno == EMFILE) {
                    if (settings.verbose &gt; 0)
                        fprintf(stderr, &quot;Too many open connections\n&quot;);
                    accept_new_conns(false);
                    stop = true;
                } else {
                    perror(&quot;accept()&quot;);
                    stop = true;
                }
                break;
            }
</pre>
				<p>この、accept_new_conns(false)が怪しい。ひとまずこれをコメントアウトした所、クライアント側は固まらなくなった。この先は、listen用のコネクションをepoll contextから外して新しいコネクションを受け付けないようにしている。</p>
				<p>この辺りのクリーンアップ処理がおかしいのかも？と調査中&#8230;.</p>
				<pre name="code" class="c">

    conn *next;
    for (next = listen_conn; next; next = next-&gt;next) {
        if (do_accept) {
            update_event(next, EV_READ | EV_PERSIST);
            if (listen(next-&gt;sfd, settings.backlog) != 0) {
                perror(&quot;listen&quot;);
            }
        }
        else {
            update_event(next, 0);
            if (listen(next-&gt;sfd, 0) != 0) {
                perror(&quot;listen&quot;);
            }
        }
    }
</pre>
				<p>あとは、ニールさんが&#8221;base_event_loopからなぜか抜けてしまいます&#8221;とおっしゃっているのだが、これが再現出来ていない。ループを抜けるとサーバーが終了してしまうはずなのだが、手元ではサーバーが固まるのみ。</p>
				<p>ふーむー。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2010/08/mixi_memcached_14.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2010/08/mixi_memcached_14.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2010/08/mixi_memcached_14.html" />
	</item>
		<item>
		<title>MessagePack-RPC for Java/Pythonの実装を行っています。</title>
		<link>http://kzk9.net/blog/2010/05/messagepack-rpc-for-java-and-python.html</link>
		<comments>http://kzk9.net/blog/2010/05/messagepack-rpc-for-java-and-python.html#comments</comments>
		<pubDate>Sun, 09 May 2010 21:17:15 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[MessagePack]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=870</guid>
		<description><![CDATA[				blogはご無沙汰中です。3月で大学を卒業して、社会人生活を満喫しています。頭の切り替えが楽になった気がします。
				
				最近は古橋さんが中心となってやっている、MessagePackというプロジェクトに少しコミットしています。同じような目的のプロジェクトとして、Google ProtocolBuffer・Apache Thrift・Apache Avroなどが有ります。簡単に言うと、JSONより速くてコンパクトなシリアライズ/デシリアライズライブラリです。
				
				MessagePackのサイト
				
				MessagePackは非常に安定して十分にプロダクトでも使えるレベルなので、是非使ってみて下さい。C/C++ライブラリを用いて、毎月数億回ぐらいは(de)serializeを行なっていますが、非常に安定して稼働しています。
				僕は特に、MessagePackを使用したRPC(Remote Procedure Call)の仕組みの部分にコミットしようと思っています。MessagePack-RPCの説明は以下に有ります。Thrift等のプロダクトと比べると、非常に高速なのに加えて、非同期呼び出しをサポートしているのが利点です。
				
				Introduction to MessagePack-RPC
				並列メッセージングフレームワーク「MessagePack-RPC for C++」リリース
				MessagePack-RPCのプロトコル仕様（ドラフト）と実装例
				
				MessagePack-RPCは従来C++/Ruby版のみが提供されていました。ただ、広めるに当たっては様々な言語でのサポートが必須です。
				そこでゴールデンウィークを利用し、Java版/Python版のRPCライブラリを実装しました。Ruby版のコードを参考にしています。どちらも更なる検証・負荷実験が必要ですが、圧縮機能を除く一通りの機能は有ります。
				各言語のバージョンは、その言語の一番良さそうなイベントライブラリを用いるというポリシーで開発しています。Java版はJBoss netty, Python版はTwistedを用いました。Ruby版はRev, C++版はmpioが用いられています。
				開発したものは、githubにあります。
				
				msgpack-rpc github
				
				実験的に、Java版をApache Cassandraに組み込み、get関数をRubyから叩いたりしてみました。ただ、MessagePack-RPCでは現在IDLからのコードジェネレーターが無いので、カスタムなデータ型をやりとりするのが非常に面倒くさいという問題が認識できました。
				コードジェネレーターは、実は今、古橋さんが開発中です。Thrift互換のIDLを採用するため、Thriftを使用しているプロダクトは簡単にMessagePack-RPCに乗り換えられるようになっています。
				Thriftは非常に良いライブラリなのですが、仕事で使ったときに色々と痛い目を見て、ベストなものでは無いと個人的には思っているので、MessagePack-RPCでそこら辺の問題を解決したいと思っています。
				MessagePack-RPCはまだまだ成熟したプロダクトではないですが、徐々に完成度を上げていきたいと思っていますので、もし多言語間で通信するタスクが発生した場合には、使ってみてください:-) 将来的にはInfiniband/SDP(Socket Direct Protocol)などにも対応したい所です。
				何か有れば、@kzk_moverまでお願いします。
]]></description>
			<content:encoded><![CDATA[				<p>blogはご無沙汰中です。3月で大学を卒業して、社会人生活を満喫しています。頭の切り替えが楽になった気がします。</p>
				<p><img src="http://sphotos.ak.fbcdn.net/hphotos-ak-sjc1/hs503.snc3/26427_360654394668_741094668_4761731_2582561_n.jpg" width="400px"></p>
				<p>最近は<a href="http://d.hatena.ne.jp/viver/">古橋さん</a>が中心となってやっている、<a href="http://msgpack.sourceforge.net/">MessagePack</a>というプロジェクトに少しコミットしています。同じような目的のプロジェクトとして、<a href="http://code.google.com/intl/ja/apis/protocolbuffers/">Google ProtocolBuffer</a>・<a href="http://incubator.apache.org/thrift/">Apache Thrift</a>・<a href="http://hadoop.apache.org/avro/">Apache Avro</a>などが有ります。簡単に言うと、JSONより速くてコンパクトなシリアライズ/デシリアライズライブラリです。</p>
				<ul>
				<li><a href="http://msgpack.sourceforge.net/">MessagePackのサイト</a></li>
				</ul>
				<p>MessagePackは非常に安定して十分にプロダクトでも使えるレベルなので、是非使ってみて下さい。C/C++ライブラリを用いて、毎月数億回ぐらいは(de)serializeを行なっていますが、非常に安定して稼働しています。</p>
				<p>僕は特に、MessagePackを使用したRPC(Remote Procedure Call)の仕組みの部分にコミットしようと思っています。MessagePack-RPCの説明は以下に有ります。Thrift等のプロダクトと比べると、非常に高速なのに加えて、非同期呼び出しをサポートしているのが利点です。</p>
				<ul>
				<li><a href="http://msgpack.wordpress.com/2010/05/04/introduction-to-messagepack-rpc/">Introduction to MessagePack-RPC</a></li>
				<li><a href="http://d.hatena.ne.jp/viver/20100507/p1">並列メッセージングフレームワーク「MessagePack-RPC for C++」リリース</a></li>
				<li><a href="http://d.hatena.ne.jp/viver/20100406/p1">MessagePack-RPCのプロトコル仕様（ドラフト）と実装例</a></li>
				</ul>
				<p>MessagePack-RPCは従来C++/Ruby版のみが提供されていました。ただ、広めるに当たっては様々な言語でのサポートが必須です。</p>
				<p>そこでゴールデンウィークを利用し、Java版/Python版のRPCライブラリを実装しました。Ruby版のコードを参考にしています。どちらも更なる検証・負荷実験が必要ですが、圧縮機能を除く一通りの機能は有ります。</p>
				<p>各言語のバージョンは、その言語の一番良さそうなイベントライブラリを用いるというポリシーで開発しています。Java版は<a href="http://www.jboss.org/netty">JBoss netty</a>, Python版は<a href="http://twistedmatrix.com/trac/">Twisted</a>を用いました。Ruby版は<a href="http://rev.rubyforge.org/rdoc/">Rev</a>, C++版は<a href="http://d.hatena.ne.jp/viver/20100412/p1">mpio</a>が用いられています。</p>
				<p>開発したものは、githubにあります。</p>
				<ul>
				<li><a href="http://github.com/msgpack/msgpack-rpc">msgpack-rpc github</a></li>
				</ul>
				<p>実験的に、Java版を<a href="http://cassandra.apache.org/">Apache Cassandra</a>に組み込み、get関数をRubyから叩いたりしてみました。ただ、MessagePack-RPCでは現在IDLからのコードジェネレーターが無いので、カスタムなデータ型をやりとりするのが非常に面倒くさいという問題が認識できました。</p>
				<p>コードジェネレーターは、実は今、古橋さんが開発中です。Thrift互換のIDLを採用するため、Thriftを使用しているプロダクトは簡単にMessagePack-RPCに乗り換えられるようになっています。</p>
				<p>Thriftは非常に良いライブラリなのですが、仕事で使ったときに色々と痛い目を見て、ベストなものでは無いと個人的には思っているので、MessagePack-RPCでそこら辺の問題を解決したいと思っています。</p>
				<p>MessagePack-RPCはまだまだ成熟したプロダクトではないですが、徐々に完成度を上げていきたいと思っていますので、もし多言語間で通信するタスクが発生した場合には、使ってみてください:-) 将来的にはInfiniband/SDP(Socket Direct Protocol)などにも対応したい所です。</p>
				<p>何か有れば、<a href="http://twitter.com/kzk_mover">@kzk_mover</a>までお願いします。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2010/05/messagepack-rpc-for-java-and-python.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2010/05/messagepack-rpc-for-java-and-python.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2010/05/messagepack-rpc-for-java-and-python.html" />
	</item>
		<item>
		<title>修論提出ed</title>
		<link>http://kzk9.net/blog/2010/02/master_thesis_submittet.html</link>
		<comments>http://kzk9.net/blog/2010/02/master_thesis_submittet.html#comments</comments>
		<pubDate>Tue, 02 Feb 2010 07:19:53 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[研究]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=861</guid>
		<description><![CDATA[				
				修論提出done！ 2年前は真剣に学校ヤメようと思ってたのに、なんとか出したようです。後は修論発表が残っています。色々重なって、この１週間〜２週間は人生で一番忙しく、気持ちの浮き沈みが激しかった気がします。
				2/18には京都でWPSE (International Workshop on Peta-Scale Computing Programming Environment, Languages and Tools) 2010というe-Science関係のワークショップが有って、少し話させて頂く予定です。
				しかし、Alok Choudharyの前にI/Oの話をするのは、順番的にどうなの。
]]></description>
			<content:encoded><![CDATA[				<p><img src="http://photos-f.ak.fbcdn.net/hphotos-ak-ash1/hs294.ash1/22149_288759834668_741094668_4476522_684433_n.jpg" width="400px" /></p>
				<p>修論提出done！ 2年前は真剣に学校ヤメようと思ってたのに、なんとか出したようです。後は修論発表が残っています。色々重なって、この１週間〜２週間は人生で一番忙しく、気持ちの浮き沈みが激しかった気がします。</p>
				<p>2/18には京都で<a href="http://www.open-supercomputer.org/event/wpse2010/">WPSE (International Workshop on Peta-Scale Computing Programming Environment, Languages and Tools) 2010</a>というe-Science関係のワークショップが有って、少し話させて頂く予定です。</p>
				<p>しかし、Alok Choudharyの前にI/Oの話をするのは、順番的にどうなの。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2010/02/master_thesis_submittet.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2010/02/master_thesis_submittet.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2010/02/master_thesis_submittet.html" />
	</item>
		<item>
		<title>2009年まとめ</title>
		<link>http://kzk9.net/blog/2009/12/2009.html</link>
		<comments>http://kzk9.net/blog/2009/12/2009.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 06:34:47 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[ほげ]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=851</guid>
		<description><![CDATA[				
				今年は飛行機に乗りまくった年でした。去年まで１年に１回程度だったのに。リストアップすると、石垣島(1week)、上海(1week)、シカゴ(2 months)、ハワイ(1week)、ニューヨーク(4 days), ボルドー(2weeks)。
				特にシカゴの二ヶ月が大きかったです。米国で住んでみると、いろいろ体験できるものでした。英語での日常会話には困らなくなりました。ビジネスの交渉とか、多人数のディスカッションとなると少し厳しいので、来年度の課題です。
				根本的にはボキャブラリが足りないのと、ネイティブのスピードに付いていけないのが問題です。2人だったら聞き返せばいいのですが、3人以上だと、気を抜くと置いていかれる。ニュースを聞き取れるぐらいになると良いのかなあ。あとは研究所の雰囲気を味わえたのが良かったです。
				
				コーディングの方はというと、今年のコミット数は660ぐらい。去年が1100だった事を考えると、4割減とはかなりお寒い数字ですね&#8230;。まあその他の仕事が増えてきたと言うのも有りますけど、もうちょいなんとかならなかったのかと。集中できる時間が少なかった気がするので、来年はなんとか盛り返したいと思います。
				研究の方は、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にアップして色々コメントを貰えるのが楽しいですね:-)
				では、来年もよろしくお願いいたします！
]]></description>
			<content:encoded><![CDATA[				<p><img src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc1/hs174.snc1/6531_137740919668_741094668_3312108_4413909_n.jpg" width="400px"></p>
				<p>今年は飛行機に乗りまくった年でした。去年まで１年に１回程度だったのに。リストアップすると、石垣島(1week)、上海(1week)、シカゴ(2 months)、ハワイ(1week)、ニューヨーク(4 days), ボルドー(2weeks)。</p>
				<p>特にシカゴの二ヶ月が大きかったです。米国で住んでみると、いろいろ体験できるものでした。英語での日常会話には困らなくなりました。ビジネスの交渉とか、多人数のディスカッションとなると少し厳しいので、来年度の課題です。</p>
				<p>根本的にはボキャブラリが足りないのと、ネイティブのスピードに付いていけないのが問題です。2人だったら聞き返せばいいのですが、3人以上だと、気を抜くと置いていかれる。ニュースを聞き取れるぐらいになると良いのかなあ。あとは研究所の雰囲気を味わえたのが良かったです。</p>
				<p><img src="http://photos-d.ak.fbcdn.net/hphotos-ak-snc3/hs068.snc3/13552_215269789668_741094668_4110179_602383_n.jpg" alt="" width="400px" /></p>
				<p>コーディングの方はというと、今年のコミット数は660ぐらい。<a href="http://kzk9.net/blog/2008/12/2008.html">去年が1100</a>だった事を考えると、4割減とはかなりお寒い数字ですね&#8230;。まあその他の仕事が増えてきたと言うのも有りますけど、もうちょいなんとかならなかったのかと。集中できる時間が少なかった気がするので、来年はなんとか盛り返したいと思います。</p>
				<p>研究の方は、1st Authorでの論文は出せなかった。来年前半に出します。CCGRID2009で発表しました。論文はかなり読んでますが、アウトプットが無いのが問題。今は修士論文を書いていて、来年卒業予定です。</p>
				<p>会社の方は、順調に売上が伸びてます。色々なところで、割と競争力が出てきた感じ。来年度はもっと洗練させて、儲けて、ガンガン良い人を雇って行くと共に、海外で売るのが目標です。あとはサマーインターンを取ったのも、非常に大きな出来事でした。これは、楽しかった。</p>
				<p><a href="http://kzk9.net/presentations.html">プレゼン</a>はITProカンファレンス、天下一カウボーイ大会、楽天テクノロジーカンファレンス、Cookpad TechLife、Shibuya.pm等で行わせて頂きました。あとは<a href="http://kzk9.net/blog/2009/02/keyvalue_store.html">Key-Value Store勉強会</a>、<a href="http://hugjp.org/">Hadoop Conference Japan 2009</a>の運営側をやりました。お手伝い頂いた方々に感謝。来年も技術的に面白そうな集まりは是非やりたいです。</p>
				<p><img src="http://photos-d.ak.fbcdn.net/hphotos-ak-snc1/hs113.snc1/4947_109047734668_741094668_2817180_3129257_n.jpg" width="400px"></p>
				<p>あとは松葉さんからお古のレンズ(ZUIKO DIGITAL 14-54mm F2.8-3.5)を安く譲ってもらってから、結構楽しくなってきました。デフォルトレンズだと全体的に暗かったんですよね。FacebookとかPicasaにアップして色々コメントを貰えるのが楽しいですね:-)</p>
				<p>では、来年もよろしくお願いいたします！</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/12/2009.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/12/2009.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/12/2009.html" />
	</item>
		<item>
		<title>新型インフルエンザ</title>
		<link>http://kzk9.net/blog/2009/11/swine_flu.html</link>
		<comments>http://kzk9.net/blog/2009/11/swine_flu.html#comments</comments>
		<pubDate>Sat, 07 Nov 2009 13:07:00 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=846</guid>
		<description><![CDATA[				木曜日ぐらいから発熱・悪寒がすごくて、病院に行ってきたら新型インフルエンザと診察されました。来週1週間は出禁とのことです。今はタミフルを飲んで少し熱が下がってきた感じです。
				検査などは特にされなかったのですが、症状的に見て、ほとんど間違いないとのことです。検査の精度が約６０％程度であることと、あと同じような症状の人が前に並んでいたので、安全側に倒す＋手間を省いてるのだと思います。
				病院に行ってみて分かったのですが、予想以上に流行ってるという印象です・・・。皆様もお気をつけてくださいませ・・・。
				# 各方面の方々には、色々迷惑をかけてまして、本当にすいません。。。
]]></description>
			<content:encoded><![CDATA[				<p>木曜日ぐらいから発熱・悪寒がすごくて、病院に行ってきたら新型インフルエンザと診察されました。来週1週間は出禁とのことです。今はタミフルを飲んで少し熱が下がってきた感じです。</p>
				<p>検査などは特にされなかったのですが、症状的に見て、ほとんど間違いないとのことです。検査の精度が約６０％程度であることと、あと同じような症状の人が前に並んでいたので、安全側に倒す＋手間を省いてるのだと思います。</p>
				<p>病院に行ってみて分かったのですが、予想以上に流行ってるという印象です・・・。皆様もお気をつけてくださいませ・・・。</p>
				<p># 各方面の方々には、色々迷惑をかけてまして、本当にすいません。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/11/swine_flu.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/11/swine_flu.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/11/swine_flu.html" />
	</item>
		<item>
		<title>Cloudera Distribution for Hadoopのインストール方法</title>
		<link>http://kzk9.net/blog/2009/11/install_cloudera_distribution_for_hadoop.html</link>
		<comments>http://kzk9.net/blog/2009/11/install_cloudera_distribution_for_hadoop.html#comments</comments>
		<pubDate>Mon, 02 Nov 2009 16:08:10 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=841</guid>
		<description><![CDATA[				昔色々と記事を書きましたが、１年半経って、もはや内容が古くなって来ました。
				Hadoopのインストールは、最近はCloudera Distribution for Hadoopを使用するのが一般的なようなので、こちらでのインストール方法を紹介します。
				
				まずはEC2で２インスタンス立ち上げます。一つが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 [...]]]></description>
			<content:encoded><![CDATA[				<p><a href="http://codezine.jp/article/detail/2485">昔色々と記事を書きましたが</a>、１年半経って、もはや内容が古くなって来ました。</p>
				<p>Hadoopのインストールは、最近は<a href="http://www.cloudera.com/hadoop-config-guide">Cloudera Distribution for Hadoop</a>を使用するのが一般的なようなので、こちらでのインストール方法を紹介します。</p>
				<p><center><img src="http://www.cloudera.com/sites/all/themes/cloudera/static/img/logo.png"></center></p>
				<p>まずはEC2で２インスタンス立ち上げます。一つがNameNode/JobTracker用、もう一つがDataNode/TaskTracker用です。仮に、ホスト名をmaster, slaveとしておきます。OSはCentOSが推奨されています。</p>
				<p>次に<a href="https://my.cloudera.com/">Cloudera Configurator</a>にアクセスし、使用するクラスタの構成などを入力します。それらの情報(例：ノードのコア数・メモリ容量・台数など)からConfiguratorは最適なパラメーターを導出し、設定ファイルをrpmの形で自動生成してくれます。デフォルトパラメーターの悪い部分なども全て直してくれますので、性能が出ない可能性が、格段に下がると思います。</p>
				<p>Configuratorに一通り情報を入力すると、最後の画面でcloudera-repo.*.noarch.rpmというファイルが生成されますので、ダウンロードし、全ノードにインストールを行います。このrpmをインストールすると、/etc/yum.repos.d/cloudera.repoというファイルが出来ます。</p>
				<pre>
$ 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
</pre>
				<p>cloudera.repoには、先ほどの設定を含んだHadoopのパッケージが設置されているリポジトリの場所が記述されています。具体的にどのようなパッケージがあるかは、以下のようにして探すことができます。kzkhadoopというクラスタを指定したために、このような名前になっています。</p>
				<pre>
$ 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
</pre>
				<p>まず、masterにhadoop-conf-kzkhadoop-masterをインストールします。</p>
				<pre>
master% yum install hadoop-conf-kzkhadoop-master.noarch
</pre>
				<p>次に、slaveノードで hadoop-conf-kzkhadoop-slave.noarch をインストールします。</p>
				<pre>
slave% yum install hadoop-conf-kzkhadoop-slave.noarch
</pre>
				<p>HDFSをフォーマットします。masterノードで以下のコマンドを打ちます。</p>
				<pre>
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
************************************************************/
</pre>
				<p>次に、各種サービスを起動します。masterで、namanode, secondarynamenode, jobtrackerを起動します。jpsコマンドで実際にプロセスが立ち上がっているかどうかを確認してください。</p>
				<pre>
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
</pre>
				<p>同じように、slaveでdatanode, tasktrackerを起動します。</p>
				<pre>
slave% /sbin/service hadoop-datanode start
slave% /sbin/service hadoop-tasktracker start
slave% /usr/java/default/bin/jps
1404 Jps
1306 DataNode
1372 TaskTracker
</pre>
				<p>以上で設定・起動は終了です。次に実際の動作確認に移ります。一番簡単な、grepジョブを動かしてみます。まずは、ルートパスとホームディレクトリにパーミッションをあけます。</p>
				<pre>
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/'
</pre>
				<p>最後に、適当なユーザー(ここではhadoopuserというユーザーを作成しました)で以下のコマンドを実行します。ここでは、/etc/hadoop/conf以下のファイルをHDFSにアップし、それらのファイルからdfs[a-z.]+というパターンにマッチする単語を抽出し、出現頻度をカウントしています。</p>
				<pre>
[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
</pre>
				<p>以上で終了です。次回は、Hiveを同じようにインストールしてみたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/11/install_cloudera_distribution_for_hadoop.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/11/install_cloudera_distribution_for_hadoop.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/11/install_cloudera_distribution_for_hadoop.html" />
	</item>
		<item>
		<title>Hadoop World NYC 参加記</title>
		<link>http://kzk9.net/blog/2009/10/hadoop-world-nyc-report.html</link>
		<comments>http://kzk9.net/blog/2009/10/hadoop-world-nyc-report.html#comments</comments>
		<pubDate>Wed, 07 Oct 2009 01:03:52 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=829</guid>
		<description><![CDATA[				と言う訳で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、西海岸の小さいスタートアップ等、かなり色々な分野の人が集まっているという印象でした。
				次はカンファレンス本番の方です。以下は現在公開されているスライドです。見つけ次第、適当に追加していきます。
				
				Real Time BI with Hadoop
				Prototypoing Data Intensive Apps: TrendingTopics.org
				hBase, Hadoop World NYC
				NexR Terapot: Massive Email Archiving
				
				また参加者全員に、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 [...]]]></description>
			<content:encoded><![CDATA[				<p><span style="background-color: #ffffff;">と言う訳で<a href="http://www.cloudera.com/hadoop-world-nyc">Hadoop World NYC, 2009</a>の参加記を書きます。</span></p>
				<p><img src="http://photos-d.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998424668_741094668_3640715_2488348_n.jpg" width="400px"></p>
				<p><span style="background-color: #ffffff;">1日目はSystem Administrator用のトレーニングコースを受け、2日目がカンファレンス本番でした。トレーニングコースはDeveloper向け(3日間)とManager向けのビジネス寄りのコースが有り、合計で100人ぐらいは参加していたと思います。カンファレンスの本番自体は400～500人の参加でした。</span></p>
				<p>まずSystem Adminコースですが、大体以下のような内容でした。</p>
				<ul>
				<li>MapReduceの基本概念</li>
				<li>ハードウェア/ネットワーク機器の選定ポイント</li>
				<li>OSやJavaなど、ソフトウェアでの注意点</li>
				<li>Hadoop(Cloudera Distribution)のインストール方法</li>
				<li>パラメーター/パフォーマンスチューニング(非常に細かい)</li>
				<li>Rack Topologyの定義方法</li>
				<li>HA構成/バックアップ/リカバリー方法</li>
				<li>Fair Shair Schedulerの動作と使用方法</li>
				<li>Gangliaを使用したシステムモニタリング</li>
				<li>Hadoopのログファイルについて</li>
				</ul>
				<p>大体6時間ぐらいのコースで、これを聞くとプロダクションレベルでHadoopクラスタを管理できるように一応なるかなという感じでした。結構細かいパラメーターの話が有ったり、個人的に気になっていたFairShair Schedulerの話が聞けたり、かなり勉強になりました。</p>
				<p>お金を取っていたので、全部書いていいものか分からないので、内容を聞きたい方は一緒に飲みに行った時にでもこっそり聞いて下さい(?) 参加者とも少し話してみたのですが、広告配信の会社、インドのSIer、西海岸の小さいスタートアップ等、かなり色々な分野の人が集まっているという印象でした。</p>
				<p>次はカンファレンス本番の方です。以下は現在公開されているスライドです。見つけ次第、適当に追加していきます。</p>
				<ul>
				<li><a href="http://www.slideshare.net/lusciouspear/real-time-bi-with-hadoop">Real Time BI with Hadoop</a></li>
				<li><a href="http://www.datawrangling.com/slides-thoughts-from-hadoop-world-nyc">Prototypoing Data Intensive Apps: TrendingTopics.org</a></li>
				<li><a href="http://www.stumbleupon.com/s/#9ylE5P/www.docstoc.com/docs/12426408/HBase-at-Hadoop-World-NYC/">hBase, Hadoop World NYC</a></li>
				<li><a href="http://www.slideshare.net/phploveme/hadoop-nexr-terapot-massive-email-archiving">NexR Terapot: Massive Email Archiving</a></li>
				</ul>
				<p>また参加者全員に、Hadoop: The Definitive Guideが配布されました。</p>
				<p align="center"><a href="http://www.amazon.co.jp/o/ASIN/0596521979/mover-22/" style="border-width: 0px;"><img src="http://ec2.images-amazon.com/images/I/41DIaZK%2BC%2BL._SL500_AA240_.jpg" style="border-width: 0px;" width="200px"></a></p>
				<p>セッションが途中から3パラになっていて、全部聞く事は無理なので、僕が聞いた中で気になったものだけピックアップして書いてみます。</p>
				<h2>Making Hadoop Easy on Amazon Web Services</h2>
				<p>Amazon EC2上でのElastic MapReduceの話です。Apache HiveがElastic MapReduce上でサポートされた事が発表されました。またユーザー事例として<a href="http://www.eharmony.com/">eHarmony</a>という出会い系サイトでの事例が紹介されていました。アメリカでは4%ぐらいのカップルがこのサイト経由で結婚するらしいです。</p>
				<p>また<a href="http://www.karmasphere.com/products/">Karmasphere Studio for Haodop</a>という、MapReduceアプリケーション開発用のIDEが公開されていました。Elastic MapReduceと連携し、IDE上からMapReduceタスクのテスト/実行/デバッグを行えるようです。</p>
				<p><img src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998484668_741094668_3640725_5534357_n.jpg" width="400px"></p>
				<h2>Hadoop Applications at Yahoo!</h2>
				<p>Yahooでの使用事例の話です。Yahooでは現在約25000台程度のノード上でHadoopが走っているようです。そのうちの約20%が本番用、約60%がResearch目的という事でした。</p>
				<p><img src="http://photos-a.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998509668_741094668_3640728_1600627_n.jpg" alt="" width="400px" /></p>
				<p>ただ、Yahoo.comのトップページに表示されているコンテンツの裏では結構使われているようで、Ad Optimization, Search Index, RSS Feeds, Machine Learned Spam Filters, Content Optimization (Personalization?)などなどに使われているようです。</p>
				<p><img src="http://photos-b.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998514668_741094668_3640729_7405004_n.jpg" alt="" width="400px" /></p>
				<p>またYahoo Search Assistでは3年間のログを20ステップのMapReduceで処理をすることで、検索時の関連ワード用インデックスを作成しているようです。元々はC++で書かれていて実行に26日かかっていたものが、Pythonで書けるようになった上に実行時間が20分まで縮んだようです。</p>
				<p><img src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998519668_741094668_3640730_7387956_n.jpg" alt="" width="400px" /></p>
				<h2>Rethinking the Data Warehouse with Hadoop and Hive</h2>
				<p>Facebookでの使用事例です。FacebookではログをHadoopクラスタに取り込んで、解析が行われているようです。</p>
				<p><img src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998549668_741094668_3640733_3261299_n.jpg" alt="" width="400px" /></p>
				<p>またHiveという、SQLライクなクエリ言語でMapReduceジョブを走らせる仕組みを開発しており、約95%のジョブがHiveQL(QueryLanguage)経由で実行されているようです。アプリケーションとしては、日々のPVなどのReporting・Adhoc-Analysis・Machine Learningに使われているらしいです</p>
				<h2>What&#8217;s new from Cloudera</h2>
				<p>Web上からMapReduceクラスタについての様々な操作を行ったり、情報を見るためのツール、<a href="http://www.cloudera.com/desktop/">Cloudera Desktop</a>の紹介でした。</p>
				<h2>Large Scale Transaction Analysi</h2>
				<p><img src="http://photos-b.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998569668_741094668_3640737_1398714_n.jpg" alt="" width="400px" /></p>
				<p>VISAでの使用事例です。32ノード程度とまだ評価段階な印象を受けました。20分ぐらいVISAの話でHadoopの話が全然出てこなかったのでちょっと期待外れ&#8230;。</p>
				<h2>Cross Data Center Logs Processing</h2>
				<p><a href="http://www.rackspace.com/index.php">RackSpace</a>というホスティング会社での使用事例です。RackSpaceではカスタマーサポート用に、ユーザーが送ったEメールの状態を追跡したり、ログなどをインデックス化して検索できるようにしているらしいです。具体的にはHadoopでLuceneのインデックスを作成し、Solr経由で検索を行っているとの事でした。</p>
				<p><img src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998589668_741094668_3640738_7749524_n.jpg" width="400px"></p>
				<h2>Hadoop Development at Facebook: Hive and HDFS</h2>
				<p>Facebookで行われているHive, HDFSの機能改善の紹介でした。個人的には<a href="http://issues.apache.org/jira/browse/HDFS-220">HDFS-220</a>のArchival機能の話などが面白かったです。</p>
				<p><img src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998599668_741094668_3640740_1331150_n.jpg" width="400px"></p>
				<h2>Cool Development Projects at Yahoo!: Automatic Tuning and Social Graph Analysis</h2>
				<p>Yahoo Incの方からルールベースでのHadoop Clusterの異常検知手法と、Social Graph解析の話が有りました。後半は学会みたいな乗りでした。</p>
				<h2>Practical HBase: Getting the most from your HBase install</h2>
				<p><a href="http://www.stumbleupon.com/">Stumbleupon</a>, <a href="http://streamy.com/">Streamy</a>でのhBaseの内部構成/使用事例の話が有りました。<a href="http://su.pr/">su.pr</a>というURL短縮サービスで用いられているようです。約90億エントリ/1300GBで運用されているようです。</p>
				<p>またhBaseの最新版ではZooKeeperとのインテグレーションが行われマルチマスター構成でも動作するようになったとの事で、こちらも試してみようかと思います。そういえばHyperTableについては今回は発表は無かったですね。</p>
				<h2>Hadoop + Vertica</h2>
				<p><a href="http://www.vertica.com/">Vertica</a>というColumn-Oriented DBを作っている会社が、Vertica上でのMapReduceをHadoopを使用してサポートしたという話でした。StonebrakerがFounderで有名です。</p>
				<p>Input/Output周りをVertica用に作ったと言う話だけだったので、実際どれぐらいパフォーマンスが出てるとか、HDFSと比べてどうとかいう話が無かったので、ちょっと残念でした。</p>
				<h2>Production Deep Dive with High Availability</h2>
				<p><a href="http://www.contextweb.com/">ContextWeb</a>という広告配信の会社での使用事例の話でした。この会社ではコンテンツマッチをHadoopで行っており、そこがビジネスの根幹であるため、高可用性が求められます。</p>
				<p>詳しい内容は、<a href="http://www.cloudera.com/blog/2009/07/22/hadoop-ha-configuration/">Hadoop HA Configuration</a>を見て頂けると分かります。18か月で約6回のフェイルオーバーが起こり、そのうち約3回は予定していたものという事でした。</p>
				<p>とりあえずこんな所です。後半力尽きた感が有るので、夜にでもまた書き足します(^_^:</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/10/hadoop-world-nyc-report.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/10/hadoop-world-nyc-report.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/10/hadoop-world-nyc-report.html" />
	</item>
		<item>
		<title>Hadoop World 2009 @ NYC</title>
		<link>http://kzk9.net/blog/2009/10/hadoop-world-2009-nyc.html</link>
		<comments>http://kzk9.net/blog/2009/10/hadoop-world-2009-nyc.html#comments</comments>
		<pubDate>Sun, 04 Oct 2009 08:13:36 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Hadoop]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=822</guid>
		<description><![CDATA[				
				Hadoop World 2009に参加するために、NewYorkに来ています。参加者は全体で500人ぐらい。日本からは6～7人ぐらい参加していました。
				Cloudera (Hadoopの商用サポートを行っている企業) のMike Olson CEO。BerkeleyDBを作っていたSleepyCatの元CEO。
				
				同じくClouderaのChristophe Bisciglia。
				
				名刺交換してると、色々なIndustryの人がいて面白かったです。かなり盛り上がりを感じました。Clouderaの方に聞いた所、小さいウェブスタートアップから、大きいキャリアまで、色々適用範囲が広がっているようです。まだまだ20人ぐらいの会社なのに、プレセンスが大きくて凄いなーと思いました。
				個人的には、System Administrator用のトレーニングコースも受けて、色々と運用上のノウハウなども聞けました。意外と細かいパラメーターがパフォーマンスに効いてきて、しかもデフォルト値が悪いやつが多い&#8230;。
				帰国したら、内容をまとめまたいと思います。
]]></description>
			<content:encoded><![CDATA[				<p><img src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_163998439668_741094668_3640717_4521876_n.jpg" alt="" width="400px" /></p>
				<p><a href="http://www.cloudera.com/hadoop-world-nyc">Hadoop World 2009</a>に参加するために、NewYorkに来ています。参加者は全体で500人ぐらい。日本からは6～7人ぐらい参加していました。</p>
				<p>Cloudera (Hadoopの商用サポートを行っている企業) のMike Olson CEO。BerkeleyDBを作っていたSleepyCatの元CEO。</p>
				<p><img src="http://photos-h.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998669668_741094668_3640751_6241836_n.jpg" alt="" width="400px" /></p>
				<p>同じくClouderaのChristophe Bisciglia。</p>
				<p><img src="http://photos-h.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_163998449668_741094668_3640719_8167694_n.jpg" alt="" width="400px" /></p>
				<p>名刺交換してると、色々なIndustryの人がいて面白かったです。かなり盛り上がりを感じました。Clouderaの方に聞いた所、小さいウェブスタートアップから、大きいキャリアまで、色々適用範囲が広がっているようです。まだまだ20人ぐらいの会社なのに、プレセンスが大きくて凄いなーと思いました。</p>
				<p>個人的には、System Administrator用のトレーニングコースも受けて、色々と運用上のノウハウなども聞けました。意外と細かいパラメーターがパフォーマンスに効いてきて、しかもデフォルト値が悪いやつが多い&#8230;。</p>
				<p>帰国したら、内容をまとめまたいと思います。</p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/10/hadoop-world-2009-nyc.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/10/hadoop-world-2009-nyc.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/10/hadoop-world-2009-nyc.html" />
	</item>
		<item>
		<title>曽爾村に帰省</title>
		<link>http://kzk9.net/blog/2009/09/sonimura_at_nara.html</link>
		<comments>http://kzk9.net/blog/2009/09/sonimura_at_nara.html#comments</comments>
		<pubDate>Thu, 24 Sep 2009 16:59:05 +0000</pubDate>
		<dc:creator>kzk</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://kzk9.net/blog/?p=815</guid>
		<description><![CDATA[				十年ぶりぐらいに父親の実家(奈良県宇陀郡曽爾村)に帰省しました。自然しかない！サマーウォーズみた直後だったので、ちょっとテンションあがりました。草刈りのお手伝いとかしてきました。
				太田家
				
				縁側
				
				彼岸花
				
				とんぼ
				
				牛
				
				すすき(曽爾高原)
				
				全写真リスト
]]></description>
			<content:encoded><![CDATA[				<p>十年ぶりぐらいに父親の実家(奈良県宇陀郡曽爾村)に帰省しました。自然しかない！サマーウォーズみた直後だったので、ちょっとテンションあがりました。草刈りのお手伝いとかしてきました。</p>
				<p>太田家<br />
				<img src="http://photos-e.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_156730019668_741094668_3574044_7762087_n.jpg" alt="" width="400px" /></p>
				<p>縁側<br />
				<img src="http://photos-f.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_156730069668_741094668_3574053_7037422_n.jpg" width="400px" /></p>
				<p>彼岸花<br />
				<img src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_156730204668_741094668_3574074_1660818_n.jpg" alt="" width="400px" /></p>
				<p>とんぼ<br />
				<img src="http://photos-h.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_156730089668_741094668_3574055_5273828_n.jpg" width="400px" /></p>
				<p>牛<br />
				<img src="http://photos-g.ak.fbcdn.net/hphotos-ak-snc1/hs238.snc1/8524_156730179668_741094668_3574070_7667480_n.jpg" width="400px" /></p>
				<p>すすき(曽爾高原)<br />
				<img src="http://photos-c.ak.fbcdn.net/hphotos-ak-snc1/hs218.snc1/8524_156730249668_741094668_3574082_2451091_n.jpg" width="400px" /></p>
				<p><a href="http://www.facebook.com/album.php?aid=145350&#038;id=741094668&#038;l=c652e96bf7">全写真リスト</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kzk9.net/blog/2009/09/sonimura_at_nara.html/feed</wfw:commentRss>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://kzk9.net/blog/2009/09/sonimura_at_nara.html" />
<xhtml:link rel="alternate" media="handheld" type="application/xhtml+xml" href="http://kzk9.net/blog/2009/09/sonimura_at_nara.html" />
	</item>
	</channel>
</rss>
