<?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:slash="http://purl.org/rss/1.0/modules/slash/"
		xmlns:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>Silicon Soul  -広告技術と広告のblog- &#187; プログラミング</title>
	<atom:link href="http://siliconsoul.net/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/feed/" rel="self" type="application/rss+xml" />
	<link>http://siliconsoul.net</link>
	<description></description>
	<lastBuildDate>Sat, 03 Oct 2009 15:34:36 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://siliconsoul.net/category/%e3%83%97%e3%83%ad%e3%82%b0%e3%83%a9%e3%83%9f%e3%83%b3%e3%82%b0/feed/" />
		<item>
		<title>政策別に各政党のマニフェストをテキストマイニング</title>
		<link>http://siliconsoul.net/2009/08/26/%e6%94%bf%e7%ad%96%e5%88%a5%e3%81%ab%e5%90%84%e6%94%bf%e5%85%9a%e3%81%ae%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%9e%e3%82%a4%e3%83%8b/</link>
		<comments>http://siliconsoul.net/2009/08/26/%e6%94%bf%e7%ad%96%e5%88%a5%e3%81%ab%e5%90%84%e6%94%bf%e5%85%9a%e3%81%ae%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%9e%e3%82%a4%e3%83%8b/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 19:28:23 +0000</pubDate>
		<dc:creator>silicon_soul</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[ネタ]]></category>
		<category><![CDATA[マニフェスト]]></category>
		<category><![CDATA[多次元尺度法]]></category>
		<category><![CDATA[選挙]]></category>

		<guid isPermaLink="false">http://siliconsoul.sakura.ne.jp/wp/?p=384</guid>
		<description><![CDATA[前回に引き続き、マニフェストのテキストマイニングで遊んでみます。 今回は２相３元データに対する多次元尺度構成法という、あまり一般的でない解析手法を適用します。 多次元尺度構成法（多次元尺度法）とは。　たとえば、世界の都市 [...]]]></description>
			<content:encoded><![CDATA[<p>前回に引き続き、マニフェストのテキストマイニングで遊んでみます。</p>
<p>今回は２相３元データに対する多次元尺度構成法という、あまり一般的でない解析手法を適用します。</p>
<p>多次元尺度構成法（多次元尺度法）とは。　たとえば、世界の都市を飛行機で移動するときの時間の情報だけをもとに、移動時間の短い都市同士を近くに、移動時間が長い都市は遠くに配置して移動時間ベースの地図をつくることができる方法で、各点間の距離や類似度の情報をもとに、各ポイントの位置を空間にプロットすることができます。簡単にいうとこんなところです。各都市のイメージの類似度をもとにバカ世界地図を構成するのにも似てなくも無いです。</p>
<p>　個人差多次元尺度法(Weighted MDS)と呼ばれる方法は、この多次元尺度法を個人間のイメージの違いも同時に分析できるようにした手法で、心理学関連の研究で使われています。w-mdsが各個人間の評価の違いをどう表現するのかというと、全員の共通項となる地図（共通布置空間）を１つ作り、各個人の差を、軸（緯度、経度）へのweightとして表現します。ある人にとっての地図は、共通項となる地図を緯度方向にちょっとだけ縮めたもので、ある人にとっての地図は経度方向に縮尺するとうまく当てはまる。みたいな。</p>
<p>説明むずかしいな。。。詳細はぐぐってください。<br />
　<br />
で、マニフェストにwmdsを適用して解析して、各政策別に政党間類似具合がうまく見えたら面白いなぁと。</p>
<p>wmdsの解析は、netlibで手に入るsindscalを使いました。<br />
<a href="http://www.netlib.org/mds/">netlib/sindscal</a>　<br />
Fortranのソースですので、g77あたりでコンパイルできます。</p>
<p>※indscal/sindcalをより一般化したALSCALがGNU Rで使えたような気がするのですが、どのパッケージに含まれているかみつからなかったのでsindscalで解析しています。<br />
　<br />
　<br />
では、プロセスです<br />
１．類似度行列の算出<br />
各党のマニフェストを前回同様ヤフーみんなの政治からこぴってきます。<br />
各政策単位のマニフェストデータを各党ごとにコサイン類似度をとり、行列を作成し、<br />
sindscalのデータフォーマットにおとしこみます。<br />
２．sindscalで解析<br />
コンパイルしたプログラムをsindscalのプログラムに標準入力から渡して解析修了です。<br />
これで政党の共通布置空間と各政策の傾向を表すWeightを得ることができます。<br />
３．GNU Rで作図<br />
GNU Rにデータを引っ張って作図します。</p>
<p>sindscalのデータフォーマットは<a href="http://www.amazon.co.jp/gp/product/0126243506?ie=UTF8&#038;tag=silicon_soul-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=0126243506">Introduction to Multidimensional Scaling</a><img src="http://www.assoc-amazon.jp/e/ir?t=silicon_soul-22&#038;l=as2&#038;o=9&#038;a=0126243506" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />か、<a href="http://www.amazon.co.jp/gp/product/0803930682?ie=UTF8&#038;tag=silicon_soul-22&#038;linkCode=as2&#038;camp=247&#038;creative=1211&#038;creativeASIN=0803930682">Three Way Scaling</a><img src="http://www.assoc-amazon.jp/e/ir?t=silicon_soul-22&#038;l=as2&#038;o=9&#038;a=0803930682" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" />　という本に載っています。　Web上ではみあたらないので、欲しい方がいたら詳細upします。<br />
　<br />
　<br />
結果です。<br />
　VAF比の動きをみると5次くらいまでのデータを見たほうがよさそうなんですが、視覚化できないので２次までを求めました。</p>
<p>sindscalの解析結果は次のように出てきます。<br />
<div id="attachment_369" class="wp-caption aligncenter" style="width: 220px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/output.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/output-210x300.png" alt="sindscal output" title="output" width="210" height="300" class="size-medium wp-image-369" /></a><p class="wp-caption-text">sindscal output</p></div><br />
<div id="attachment_370" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/weight_space.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/weight_space-300x292.png" alt="weight_space" title="weight_space" width="300" height="292" class="size-medium wp-image-370" /></a><p class="wp-caption-text">weight_space</p></div><br />
　<br />
　<br />
　この解析は、各党の”主張”が似ているかどうかを算出しているわけではなく、各党で”似たような単語”が使われているかどうかによって空間配置を行っているという点にご注意ください。<br />
　<br />
　<br />
　<br />
まず、共通布置空間(STIMULUS MATRIX)とWeight MatrixをPlotします。<br />
　</p>
<p><div id="attachment_411" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/stimulus1.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/stimulus1-300x238.png" alt="stimulus matrix" title="stimulus" width="300" height="238" class="size-medium wp-image-411" /></a><p class="wp-caption-text">stimulus matrix</p></div><br />
<div id="attachment_412" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/weight1.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/weight1-300x243.png" alt="Weight matrix" title="Weight matrix" width="300" height="243" class="size-medium wp-image-412" /></a><p class="wp-caption-text">Weight matrix</p></div><br />
　<br />
　Stimulus spaceが全体的な傾向の布置になり、自民・改革クラブ、社民・共産・民主党が近い距離にプロットされています。前回のクラスタ分析・MDSの結果とは若干違う傾向がでてますが、新党日本の位置はかわらないようです。<br />
　<br />
　Weight matrixは各政策に対し、各党ごとに特徴が出ているかどうかといった事をあらわしています。特に子育てに関する政策に関しては差が顕著に出ています。<br />
　<br />
　</p>
<p>次に、各政党の共通布置空間に、政策別のWeightをかけた政策の個別空間をつくっていきます。<br />
　<br />
　<br />
　<span id="more-384"></span><br />
<div id="attachment_413" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5ad90e882b2e381a61.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5ad90e882b2e381a61-300x246.png" alt="子育て・教育" title="子育て・教育" width="300" height="246" class="size-medium wp-image-413" /></a><p class="wp-caption-text">子育て・教育</p></div><br />
　<br />
差が顕著にでている子育て政策ですが、y軸のばらつきに変化は少なくｘ軸方向につぶれたグラフになっています。自民⇔新党日本の差はすくなくなっていますが、社民⇔自民間の差は大きいようです。<br />
　<br />
　<br />
　<div id="attachment_414" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5b9b4e987911.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5b9b4e987911-300x235.png" alt="年金制度" title="年金制度" width="300" height="235" class="size-medium wp-image-414" /></a><p class="wp-caption-text">年金制度</p></div><br />
　<br />
　<br />
年金制度に関して、共通布置に近く、共通布置と同様の傾向なのではないでしょうか。<br />
　<br />
　<br />
　<br />
<div id="attachment_415" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e59cb0e696b9e58886e6a8a92.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e59cb0e696b9e58886e6a8a92-300x240.png" alt="地方分権" title="地方分権" width="300" height="240" class="size-medium wp-image-415" /></a><p class="wp-caption-text">地方分権</p></div><br />
これも固有の特徴がみられません。<br />
　</p>
<p><div id="attachment_418" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e694bfe6b2bb2.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e694bfe6b2bb2-300x248.png" alt="政治・行政改革" title="政治・行政改革" width="300" height="248" class="size-medium wp-image-418" /></a><p class="wp-caption-text">政治・行政改革</p></div><br />
y軸方向に圧縮された感じの布置で、保守、リベラルの違いのようなものがあまり見られないような布置ができあがりました。<br />
　<br />
　<br />
　<br />
<div id="attachment_419" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5ae89e4bf9d1.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e5ae89e4bf9d1-300x239.png" alt="安保" title="安保" width="300" height="239" class="size-medium wp-image-419" /></a><p class="wp-caption-text">安保</p></div><br />
安保。政治・行革と同様の傾向でしょうか。</p>
<p>　<br />
　<br />
　</p>
<p><div id="attachment_420" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e8beb2e6a5ad1.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e8beb2e6a5ad1-300x238.png" alt="農業" title="農業" width="300" height="238" class="size-medium wp-image-420" /></a><p class="wp-caption-text">農業</p></div><br />
農業政策は共通布置にちかいですね。<br />
　<br />
　<br />
　</p>
<p><div id="attachment_421" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e8b2a1e6ba901.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/e8b2a1e6ba901-300x240.png" alt="消費税・財源" title="消費税・財源" width="300" height="240" class="size-medium wp-image-421" /></a><p class="wp-caption-text">消費税・財源</p></div><br />
財源・消費税。政治・行革政策の傾向に近く、保守< ->リベラル間の差がすくない印象です。<br />
　<br />
　<br />
　<br />
　<br />
　<br />
　<br />
　<br />
以上、各党のマニフェストのデータをもとに、計量的に各政策の違いをみてみました。当初想定していたより”差”がでておらず、解析結果をどう読んでいいのか良くわからないところが多かったのですが、次元をあげればもうちょっと面白い結果が見れるかもしれません。<br />
　<br />
　<br />
　<br />
　</p>
]]></content:encoded>
			<wfw:commentRss>http://siliconsoul.net/2009/08/26/%e6%94%bf%e7%ad%96%e5%88%a5%e3%81%ab%e5%90%84%e6%94%bf%e5%85%9a%e3%81%ae%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%9e%e3%82%a4%e3%83%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://siliconsoul.net/2009/08/26/%e6%94%bf%e7%ad%96%e5%88%a5%e3%81%ab%e5%90%84%e6%94%bf%e5%85%9a%e3%81%ae%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%82%92%e3%83%86%e3%82%ad%e3%82%b9%e3%83%88%e3%83%9e%e3%82%a4%e3%83%8b/" />
	</item>
		<item>
		<title>マニフェストをクラスタ分析</title>
		<link>http://siliconsoul.net/2009/08/24/%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%88%86%e6%9e%90/</link>
		<comments>http://siliconsoul.net/2009/08/24/%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%88%86%e6%9e%90/#comments</comments>
		<pubDate>Sun, 23 Aug 2009 19:33:32 +0000</pubDate>
		<dc:creator>silicon_soul</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[マニフェスト]]></category>
		<category><![CDATA[選挙]]></category>

		<guid isPermaLink="false">http://siliconsoul.sakura.ne.jp/wp/?p=341</guid>
		<description><![CDATA[もう少しで選挙なんで各党のマニフェストを眺めていたのですが、『どの党とどの党の内容が似てるのか』という非常にどうでもいい事が気になって、クラスタ分析してデンドログラムを書いてみました。 処理は 1. 『Yahoo! JA [...]]]></description>
			<content:encoded><![CDATA[<p>もう少しで選挙なんで各党のマニフェストを眺めていたのですが、『どの党とどの党の内容が似てるのか』という非常にどうでもいい事が気になって、クラスタ分析してデンドログラムを書いてみました。</p>
<p>処理は</p>
<blockquote><p>1. 『<a href="http://senkyo.yahoo.co.jp/manifesto/jimin/">Yahoo! JAPAN  > みんなの政治 >政党別マニフェスト</a>』のデータをコピペで収集<br />
2. MeCabで形態素解析（記号、助詞を除く)<br />
3. 各政党のマニフェスト間のコサイン類似度を計算<br />
4. 距離行列をつくる<br />
5. クラスタ分析(ward法)
</p></blockquote>
<p>です。<br />
　<br />
　こんなのでマニフェストの単語とその出現数が似ている政党のグループが作れるはずです。<br />
　<br />
　形態素解析→距離行列まではPerlで、クラスタ分析はGNU Rで処理してます。<br />
　<br />
　<br />
　<br />
　<br />
　<br />
　結果。<br />
　<br />
　<br />
　<br />
<div id="attachment_343" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/ward_method.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/ward_method-300x251.png" alt="クラスタ分析(ward法)" title="ward_method" width="300" height="251" class="size-medium wp-image-343" /></a><p class="wp-caption-text">クラスタ分析(ward法)</p></div><br />
　<br />
　<br />
　<br />
　２群に分けるとすると、”自民・公明・国民新党・改革クラブ”のクラスタと&#8221;社民・共産・民主・みんなの党・新党日本&#8221;になりますね。&#8221;保守&#8221;クラスタと&#8221;革新&#8221;クラスタ？<br />
　<br />
　自民と公明は出てくる単語の傾向がとても似ているようです。さすが与党。<br />
　共産・社民も同様に単語の出現傾向が近いみたい。<br />
　<br />
　新党日本は他の政党の主張とは離れているんですかね？どの政党からも遠いですね。<br />
　<br />
　<br />
　<br />
　<br />
　距離行列を作ったので、ついでに多次元尺度法で2次元にマッピングしてみました。<br />
　<br />
　<br />
<div id="attachment_350" class="wp-caption aligncenter" style="width: 310px"><a href="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/mds.png"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/08/mds-300x271.png" alt="MDS" title="mds" width="300" height="271" class="size-medium wp-image-350" /></a><p class="wp-caption-text">MDS</p></div><br />
　<br />
　ward法のクラスタ分析の結果とずいぶん違うものができました。<br />
　<br />
　今度は公明党・国民新党、民主・社民の距離が近くなりましたが、新党日本はどの政党からも離れています。<br />
　<br />
　<br />
　<br />
　以上、なんの役にも立たない結果ですが、coLinuxの環境を再構築した勢いでつくってみました。<br />
　</p>
]]></content:encoded>
			<wfw:commentRss>http://siliconsoul.net/2009/08/24/%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%88%86%e6%9e%90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://siliconsoul.net/2009/08/24/%e3%83%9e%e3%83%8b%e3%83%95%e3%82%a7%e3%82%b9%e3%83%88%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%82%bf%e5%88%86%e6%9e%90/" />
	</item>
		<item>
		<title>HadoopDBのアーキテクチャ</title>
		<link>http://siliconsoul.net/2009/07/28/hadoopdb%e3%81%ae%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3/</link>
		<comments>http://siliconsoul.net/2009/07/28/hadoopdb%e3%81%ae%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 16:25:29 +0000</pubDate>
		<dc:creator>silicon_soul</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[HadoopDB]]></category>
		<category><![CDATA[あとでやる]]></category>
		<category><![CDATA[結局並列DBなの？]]></category>

		<guid isPermaLink="false">http://siliconsoul.sakura.ne.jp/wp/?p=173</guid>
		<description><![CDATA[7/24にpostした「HadoopDB」の続きです。 ■HadoopDBのアーキテクチャについて HadoopDB: An Architectural Hybrid of MapReduce and DBMS Tech [...]]]></description>
			<content:encoded><![CDATA[<p>7/24にpostした「<a href="http://siliconsoul.sakura.ne.jp/wp/2009/07/24/hadoopdb/">HadoopDB</a>」の続きです。</p>
<p>■HadoopDBのアーキテクチャについて</p>
<ul><a href="http://db.cs.yale.edu/hadoopdb/hadoopdb.pdf">HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads. Azza Abouzeid, Kamil Bajda-Pawlikowski, Daniel J. Abadi, Avi Silberschatz, Alex Rasin. In Proceedings of VLDB, 2009.</a></ul>
<p>より、<br />
HadoopDBのアーキテクチャに関する章から、Hadoopに追加された４つのコンポーネントについて順に読んできます。</p>
<p><div class="wp-caption aligncenter" style="width: 510px"><img title="The Architecture of HadoopDB" src="http://hadoopdb.sourceforge.net/guide/hadoopDB-arch.png" alt=" The Architecture of HadoopDB" width="500" /><p class="wp-caption-text"> The Architecture of HadoopDB</p></div><br />
　<br />
<span id="more-173"></span><br />
　<br />
　<br />
▼Database Connector</p>
<p>Database Connectorは、クラスタの各ノードにある個別のデータベースとTaskTrackerの間のインタフェースで、<br />
HadoopのInputFormatクラスを拡張することによって実装されています。MySQLとPostgreSQLのConnectorが実装済みで、MonetDBやInfoBrightといったオープンソースのcolumn-storeデータベースについても実装の計画があるそうです。<br />
InputFormatを拡張することによって、データベースをHDFS上のデータブロックと同じように扱うことができると説明しています。<br />
　<br />
　<br />
　<br />
▼Catalog</p>
<p>Catalogは、データベースのメタ情報を管理するコンポーネントで、以下の情報を持ちます。<br />
１．データベースの場所、ドライバクラス、証明書等のパラメータ<br />
２．クラスタ、レプリカの場所やデータパーテショニング情報等のメタデータ<br />
現在の実装では、これらのメタデータをHDFS上にXMLファイルとして保持します。<br />
　<br />
　<br />
　<br />
▼Data Loader</p>
<p>Data Loaderは、以下の３項目について管理を行います。</p>
<p>１．ロードされているパーティショニングkeyに対するデータの再配分を実行します。<br />
２．単一ノードに格納されてるデータを複数の同じパーティションやチャンクに分割します。<br />
３．最後に、ある単一ノードのDBにチャンクをBulk-Loadingします。</p>
<p>Data LoaderはGlobal HasherとLocalHasherの大きく２つのコンポーネントからなっています。</p>
<p>Global Hasherは、Hadoop上で動くMapReduceのカスタムモードJobとして実行され、HDFSに格納されているrawデータを読み込み、再分割を行います。<br />
Local Hasherは、HDFSから、各ノードのローカルファイルシステムにデータのコピーを行い、Maxチャンクサイズ設定に基づき、ファイルサイズが同一になるよう分割します。</p>
<p>チャンクが同一サイズになるようにするため、Global Hasher, Local Hasherでは異なるHash関数を使用しています。<br />
　<br />
　<br />
　<br />
▼SQL to MapReduce to SQL (SMS) Planner</p>
<p>HadoopDBは並列DBにSQLで問い合わせをするインタフェースを提供します。<br />
SMS　PlannerはHiveを拡張したもので、HiveはHiveQLというSQLの一種をMapReduceのジョブに変換し、<br />
HDFSに格納されたテーブルを操作します。</p>
<p><div id="attachment_162" class="wp-caption aligncenter" style="width: 503px"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/07/hadoopdb_fig2.jpg" alt="(a) MapReduce job generated by Hive (b)  MapReduce job generated by SMS assuming sales is partitioned  by YEAR(saleDate). This feature is still unsupported  (c) MapReduce job generated by SMS assuming  no partitioning of sales" title="hadoopdb_fig2" width="493" height="431" class="size-full wp-image-162" /><p class="wp-caption-text">(a) MapReduce job generated by Hive (b)  MapReduce job generated by SMS assuming sales is partitioned  by YEAR(saleDate). This feature is still unsupported  (c) MapReduce job generated by SMS assuming  no partitioning of sales</p></div><br />
　<br />
　<br />
上図の(a)がHiveでのデータ処理、(b)がHadoopDBでの処理で、論文ではHiveとの処理の違いが詳細に述べられています。<br />
　<br />
　<br />
<code>SELECT YEAR(saleDate), SUM(revenue)<br />
FROM sales GROUP BY YEAR(saleDate);</code><br />
　<br />
　<br />
上記SQLを実行する際、HadoopDBでは各データノードにあたる部分にDBMSが配置されているため、SQLを実行して、次に結果を出力するだけという非常にシンプルな実行プロセスになっています。Hiveの処理フローにくらべ相当簡単なのが図でわかります。<br />
　<br />
論文を読む限り、HadoopDBとは、Hadoopのもつ耐障害性、スケーラビリティを生かして超大規模データを格納・処理するための仕組みで、HadoopのMapReduceフレームワークにRDBMSをくっつけて並列DBにしてしまうというもののようです。<br />
　<br />
時間ができたら実際に試してみたいとおもいます。</p>
]]></content:encoded>
			<wfw:commentRss>http://siliconsoul.net/2009/07/28/hadoopdb%e3%81%ae%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://siliconsoul.net/2009/07/28/hadoopdb%e3%81%ae%e3%82%a2%e3%83%bc%e3%82%ad%e3%83%86%e3%82%af%e3%83%81%e3%83%a3/" />
	</item>
		<item>
		<title>HadoopDB</title>
		<link>http://siliconsoul.net/2009/07/24/hadoopdb/</link>
		<comments>http://siliconsoul.net/2009/07/24/hadoopdb/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 17:59:43 +0000</pubDate>
		<dc:creator>silicon_soul</dc:creator>
				<category><![CDATA[プログラミング]]></category>
		<category><![CDATA[論文]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[あとでやる]]></category>
		<category><![CDATA[分散処理]]></category>
		<category><![CDATA[結局並列DBなの？]]></category>

		<guid isPermaLink="false">http://siliconsoul.sakura.ne.jp/wp/?p=136</guid>
		<description><![CDATA[オレンジニュースさんでHadoopとRDBMSのそれぞれの特性をあわせた「HadoopDB」というProductが紹介されていました。 開発者によるリリースノートはこちらです。 ■ Announcing release  [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_169" class="wp-caption alignright" style="width: 160px"><a href="http://db.cs.yale.edu/hadoopdb/hadoopdb.html"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/07/hadoopdb_top-150x150.jpg" alt="HadoopDB" title="hadoopdb_top" width="150" height="150" class="size-thumbnail wp-image-169" /></a><p class="wp-caption-text">HadoopDB</p></div><br />
<a href="http://secure.ddo.jp/~kaku/tdiary/20090722.html">オレンジニュースさん</a>でHadoopとRDBMSのそれぞれの特性をあわせた「<a href="http://db.cs.yale.edu/hadoopdb/hadoopdb.html">HadoopDB</a>」というProductが紹介されていました。</p>
<p>開発者によるリリースノートはこちらです。</p>
<ol>
■ <a href="http://dbmsmusings.blogspot.com/2009/07/announcing-release-of-hadoopdb-longer.html  ">Announcing release of HadoopDB (longer version)</a>
</ol>
<p>　<br />
　<br />
　</p>
<p>HadoopDBの特徴は</p>
<blockquote><p>1. DBMSとMapReduceのハイブリッドで、分析作業を対象にしている<br />
2. 一般的なサーバで構築された、（メモリとかDiskとかの）共有無しのクラスタまたはクラウド上で動作するようデザインされている<br />
3. フリー・オープンソース並列DBのマーケットのギャップを埋めることを意図している<br />
4. 既存の並列DBシステムやDBMS/MapReduceハイブリッドシステムよりスケーラブル<br />
5. Hadoopと同様のスケーラビリティで、構造化データ分析作業において、優れたパフォーマンスを発揮する。
</p></blockquote>
<p>といったところのようです。<br />
　</p>
<p>　ちょうど今、仕事のデータ分析をHadoopと並列DB(某社のDWH製品)両方使って行っています。<br />
　<br />
　構造化されているdata sourceを使った分析は並列DBを使い、大量のraw dataを解析する場合にはHadoopクラスタと使い分けています。並列DBはSQLで記述でき、比較的高速に動いてくれるので便利ではありますが、DBに入っていないraw data処理では、自由に記述できて大量データを高速に捌けるHadoopが便利です。</p>
<p>　HadoopDBの目指しているのがDBMSとMapReduceのハイブリッドプロダクトとのことですし、Hadoop(HDFS)に入っているデータをより簡単に扱う仕組みとしては<a href="http://hadoop.apache.org/pig/">Pig</a>や<a href="http://hadoop.apache.org/hive/">Hive</a>がすでにあり、それらのプロダクトとの違いなど気になるところが多いです。</p>
<p>　そのようなわけで、HadoopDBのHPに掲載されている論文をPrintして帰りの電車の中で読んでいました。<br />
　<em>
<ul><a href="http://db.cs.yale.edu/hadoopdb/hadoopdb.pdf">HadoopDB: An Architectural Hybrid of MapReduce and DBMS Technologies for Analytical Workloads. Azza Abouzeid, Kamil Bajda-Pawlikowski, Daniel J. Abadi, Avi Silberschatz, Alex Rasin. In Proceedings of VLDB, 2009.</a></ul>
<p></em></p>
<p>　<br />
　<br />
　<br />
半分くらい目を通したので、忘れないようメモにまとめます。<br />
　<br />
　<br />
<span id="more-136"></span><br />
　</p>
<hr />
<p>■概要<br />
　<br />
　HadoopDBは、Hadoopをタスクコーディネーションとネットワークの道具として使い、単一ノードのDBMSを複数結合するというコンセプトでできています。(HadoopDBで実行される)クエリはMapReduceフレームワークを使うことでノードを超えて並列化されます。HadoopDBは、Hadoopのスケジューリング、ジョブトラッキングを利用しているので、耐障害性、ヘテロジニアス環境での運用を可能としてます。<br />
※実運用上、同一のHWでクラスタを組むことになるでしょうから、ヘテロジニアス環境で運用できるというアドバンテージはあまり感じません。。。</p>
<blockquote><p>The basic idea behind HadoopDB is to connect multiple singlenode database systems using Hadoop as the task coordinator and network communication layer. Queries are parallelized across nodes using the MapReduce framework; however, as much of the single node query work as possible is pushed inside of the corresponding node databases. HadoopDB achieves fault tolerance and the ability to operate in heterogeneous environments by inheriting the scheduling and job tracking implementation from Hadoop, yet it achieves the performance of parallel databases by doing much of the query processing inside of the database engine.
</p></blockquote>
<p>　<br />
　<br />
■関連プロダクトとの違いについて<br />
　<br />
　PigやHiveとの違いは、まずそれらが(データ操作のための)言語やインタフェースの問題にフォーカスされているのに対して、HadoopDBはシステムレベルでの結合を目指しているところとあります。<br />
　</p>
<blockquote><p>
2. RELATED WORK</p>
<p>There has been some recent work on bringing together ideas from MapReduce and database systems; however, this work focuses mainly on language and interface issues. The Pig project at Yahoo , the SCOPE project at Microsoft , and the open source Hive project aim to integrate declarative query constructs from the database community into MapReduce-like software to allow greater data independence, code reusability, and automatic query optimization.<br />
Greenplum and Aster Data have added the ability to write MapReduce functions (instead of, or in addition to, SQL) over data stored in their parallel database products .<br />
Although these five projects are without question an important step in the hybrid direction, there remains a need for a hybrid solution at the systems level in addition to at the language and interface levels. This paper focuses on such a systems-level hybrid.</p></blockquote>
<p>　<br />
　<br />
■アーキテクチャについて<br />
　以下は、明日postします。<br />
<div class="wp-caption aligncenter" style="width: 510px"><img alt=" The Architecture of HadoopDB" src="http://hadoopdb.sourceforge.net/guide/hadoopDB-arch.png" title="The Architecture of HadoopDB" width="500" /><p class="wp-caption-text"> The Architecture of HadoopDB</p></div>
<p>▼Database Connector<br />
▼Catalog<br />
▼Data Loader<br />
▼SQL to MapReduce to SQL (SMS) Planner<br />
<div id="attachment_162" class="wp-caption aligncenter" style="width: 503px"><img src="http://siliconsoul.sakura.ne.jp/wp/wp-content/uploads/2009/07/hadoopdb_fig2.jpg" alt="(a) MapReduce job generated by Hive (b)  MapReduce job generated by SMS assuming sales is partitioned  by YEAR(saleDate). This feature is still unsupported  (c) MapReduce job generated by SMS assuming  no partitioning of sales" title="hadoopdb_fig2" width="493" height="431" class="size-full wp-image-162" /><p class="wp-caption-text">(a) MapReduce job generated by Hive (b)  MapReduce job generated by SMS assuming sales is partitioned  by YEAR(saleDate). This feature is still unsupported  (c) MapReduce job generated by SMS assuming  no partitioning of sales</p></div><br />
　</p>
]]></content:encoded>
			<wfw:commentRss>http://siliconsoul.net/2009/07/24/hadoopdb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://siliconsoul.net/2009/07/24/hadoopdb/" />
	</item>
	</channel>
</rss>

