view index.html @ 2:e9887bbffea4 default tip

changed
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Mon, 13 Sep 2010 01:45:07 +0900
parents b92265fabc51
children
line wrap: on
line source

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Cassandraを利用したCMSのPCクラスタを利用したスケーラビリティの検証</title>
<!-- metadata -->
<meta name="generator" content="S5" />
<meta name="version" content="S5 1.1" />
<meta name="presdate" content="20100807" />
<meta name="author" content="ShoshiTAMAKI" />
<meta name="company" content="University of Ryukyus" />
<meta http-equiv="ContentType : text/html; charset=UTF-8"/>
<!-- configuration parameters -->
<meta name="defaultView" content="slideshow" />
<meta name="controlVis" content="hidden" />
<!-- style sheet links -->
<link rel="stylesheet" href="ui/default/slides.css" type="text/css" media="projection" id="slideProj" />
<link rel="stylesheet" href="ui/default/outline.css" type="text/css" media="screen" id="outlineStyle" />
<link rel="stylesheet" href="ui/default/print.css" type="text/css" media="print" id="slidePrint" />
<link rel="stylesheet" href="ui/default/opera.css" type="text/css" media="projection" id="operaFix" />
<!-- embedded styles -->
<style type="text/css" media="all">
.imgcon {width: 525px; margin: 0 auto; padding: 0; text-align: center;}
#anim {width: 270px; height: 320px; position: relative; margin-top: 0.5em;}
#anim img {position: absolute; top: 42px; left: 24px;}
img#me01 {top: 0; left: 0;}
img#me02 {left: 23px;}
img#me04 {top: 44px;}
img#me05 {top: 43px;left: 36px;}
</style>
<!-- S5 JS -->
<script src="ui/default/slides.js" type="text/javascript"></script>
</head>
<body>

<div class="layout">
<div id="controls"><!-- DO NOT EDIT --></div>
<div id="currentSlide"><!-- DO NOT EDIT --></div>
<div id="header"></div>
<div id="footer">
<h1>Cassandraを利用したCMSのPCクラスタを用いたスケーラビリティの検証</h1>
<h2>shizuku.cr.ie.u-ryukyu.ac.jp</h2>
</div>

</div>
<div class="presentation">

<div class="slide">
<h1>Cassandraを利用したCMSのPCクラスタを用いたスケーラビリティの検証</h1>
<h3>Shoshi TAMAKI , Shinji KONO</h3>
<h4><a href="http://www.cr.ie.u-ryukyu.ac.jp/">University of Ryukyus</a></h4>
</div>

<div class="slide">
<h1>概要</h1>
<!--
<div align="center">
	<img src="./pics/benchmark.png"/>
</div>
-->
<p>Cassandraという分散Key-Value Storeがある.Cassandraを用いることにより複数のサーバーでデータを分散させて管理することができる.<br/>本研究では,スケーラビリティの高いCMSの開発をするため,PCクラスタを用いた検証環境を構築し,Cassandraのスケーラビリティの検証とMySQLとの比較を行った.<br/><br/>その結果,クラスタを用いたスケーラビリティの検証方法や,Cassandraの特徴や性能を発揮できる条件、他のデータベースとの違いを発見することができた.</p>
</div>

<!--

<div class="slide">
<h1>発表の流れ</h1>
<ul>
<li>Cassandraとは?</li>
<li>実験環境</li>
<li>Cassandraを使ったアプリケーション</li>
<li>MacMiniでのベンチマーク</li>
<li>Core i7でのベンチマーク</li>
<li>MacMiniクラスタを用いたベンチマーク</li>
<li>まとめ</li>
</ul>
</div>

-->

<div class="slide">
<h1>Cassandraとは?</h1>
<ul>
<li>分散KeyValue Storeデータベースのひとつ</li>
<li>FaceBookが自社のために使うデータベースとして開発し,2008年にオープンソースになる.</li>
<li>現在,Apacheのトップレベルプロジェクトで,盛んにアップデートが行われている.</li>
<li><span style="color:red">ConsistencyLevel</span>というパラメータがあり,データの整合性とレイテンシを調整することができる.</li>
<li><span style="color:red">Stage based Event Driven Architecture</span>というスレッドプールを複数用意して利用する形のマルチスレッドを採用しており特徴として,並列に負荷をかけると性能を発揮する.</li>
</ul>
</div>

<!--

<div class="slide">
<h1>ConsistencyLevel::Read</h1>
<p>整合性とレイテンシを調整するパラメータ,READとWRITEによって挙動が異なる.</p>
<ul>
	<li>ZERO - サポートされない</li>
	<li>ANY - サポートされない</li>
	<li>ONE - 一番最初に返答したノードの値を返えすが,最新とは限りらない.</li>
	<li>QUORUM - すべてのノードに聞きに行きその内,多数決で一番新しい値を返す.</li>
	<li>ALL - まだ実装されていない.</li>
</ul>
</div>

<div class="slide">
<h1>ConsistencyLevel::Write</h1>
<ul>
	<li>ZERO - 書き込みはバックグラウンドで非同期的に行われる</li>
	<li>ANY - どこか1つのノードに書き込まれる</li>
	<li>ONE - 最低1つのノードのコミットログとメモリテーブルに書き込む</li>
	<li>QUORUM - ReplicationFactor / 2 + 1の数だけノードに書き込む</li>
	<li>ALL - ReplicationFactorの数だけノード全てに書き込む</li>
</ul>
</div>

-->

<div class="slide">
<h1>Cassandraを利用したアプリケーション</h1>
<ul>
<li style="color: red;">Twissandra</li>
<ul>
	<li>TwitterのようなミニブログをCassandraで実装</li>
	<li>Cassandra公式サイトで紹介されている</li>
</ul>
<li style="color: red;">YukiWiki on Cassandra</li>
<ul>
	<li>Cassandra上で動作するCMSのサンプルを作成するためにYukiWikiを改造した.</li>
	<li>データ構造がTIEHASHを使用しているため,容易に移植することができた.</li>
</ul>
<li style="color: red;">WordPress</li>
<ul>
	<li>YukiWikiと同じようにCassandraに移植を試みたCMS.</li>
	<li>コード全体にSQL文が直に埋め込まれていたため移植が困難.</li>
</ul>
</ul>
</div>


<div class="slide">
<h1>実験</h1>
<div align="center">
	<img width="600px" src="./pics/benchmark.png"/>
</div>
<small>
<ul>
<li>Torqueを利用して,任意台数のクラスタ(クライアント)に同時にスクリプトを実行させる</li>
<li>スクリプトは,ある時間になると一斉に目的のサーバーに10000回のアクセスを開始する</li>
<li>クラスタの台数を変動させCassandraとMySQLサーバーに負荷をかける.</li>
<li>複数台のクラスタが処理に要した時間の平均をグラフ化し比較する.</li>
</ul>
</small>
</div>

<div class="slide">
<h1>実験環境</h1>
<p>ベンチマークを取るために構築した環境</p>
<table align="center" border="1">
<tr>
	<th></th>
	<th>クラスタ</th>
	<th>MacMini</th>
	<th>Core i7</th>
</tr>
<tr>
	<th>CPU</th>
	<td>Core Duo 2G (1)</td>
	<td>Core 2 Duo 2.53G (2)</td>
	<td>Core i7 3.0G (4)</td>
</tr>
<tr>
	<th>Memory</th>
	<td>1GB</td>
	<td>4GB</td>
	<td>14GB</td>
</tr>
<tr>
	<th>OS</th>
	<td>CentOS 5</td>
	<td>OSX 10.6</td>
	<td>CentOS 5</td>
</tr>
</table>
<p>このうちクラスタは80台用意されている.</p>
<p>()内はコア数で,Core i7のみ4コア8スレッドである.</p>
</div>

<div class="slide">
<h1>実験環境</h1>
<ul>
<li>Cassandra 0.6.3</li>
<li>MySQL 5.0</li>
<li>Torque (クラスタリソース管理ツール)</li>
<li>特定の1台のサーバーに負荷をかけるスクリプト</li>
</ul>
<p>MySQLとの比較のため,MySQLにはCassandraと似たテーブルを定義した.</p>
<blockquote>
CREATE TABLE tbl_benchmark(name VARCHAR(100) UNIQUE,<br/>value VARCHAR(100),timeuuid long)
</blockquote>
</div>

<div class="slide">
<h1>MacMiniを使用したベンチマーク</h1>
<table align="center" border="1">
<tr>
	<th>READ</th>
	<th>WRITE</th>
</tr>
<tr>
	<td><img width="500px" src="./pics/macmini_read.png"/></td>
	<td><img width="500px" src="./pics/macmini_write.png"/></td>
</tr>
</table>
<small>
<ul>
<li>READ:CassandraのほうがMySQLより遅いが,平均時間の増加度は似たように推移している.</li>
<li>WRITE:MySQLは急激に平均時間が上昇しているが,Cassandraは緩やかに上昇している.</li>
</ul>
</small>
</div>

<div class="slide">
<h1>MacMiniを使用したベンチマーク</h1>
<p>考察</p>
<ul>
<li>MacMiniはコア数が2のサーバーである,そのためSEDAの性能を発揮出来ていない</li>
<li>コア数が少ないサーバーでは,MySQLと似たような平均時間の上昇の仕方をする</li>
<li>WriteでMySQLの命令にREPLACEを使用したため,Cassandraより遥かに遅い結果になっていると考えられる.</li>
<li>REPLACEを利用したのは,Cassandraの仕様にMySQLを合わせるためである.</li>
</ul>
</div>

<div class="slide">
<h1>Core i7を使用したベンチマーク</h1>
<table align="center" border="1">
<tr>
	<th>READ</th>
	<th>WRITE</th>
</tr>
<tr>
	<td><img width="500px" src="./pics/corei7_read.png"/></td>
	<td><img width="500px" src="./pics/corei7_write.png"/></td>
</tr>
</table>
<small>
<ul>
<li>READ:Cassandraのほうが平均時間が緩やかに上昇しているため,70台付近でMySQLを上回る性能がでている.</li>
<li>WRITE:READと同様にCassandraの方が緩やかに上昇している.そのため,40台付近でMySQLを上回る性能がでている.</li>
</ul>
</small>
</div>

<div class="slide">
<h1>Core i7を使用したベンチマーク</h1>
<p>考察</p>
<ul>
<li>Core i7はコア数が4、スレッド数が8のサーバーであり,SEDAの性能を活かすことが出来ている結果が得られた.</li>
<li>コア数が多いサーバーでは,MySQLより平均時間の上昇度が少ない,これはSEDAの特徴であると考えられる.</li>
<li>この実験から,コア数の多いサーバーを利用し,クライアントの台数を増加させると性能を発揮することができることが分かった.</li>
</ul>
</div>

<div class="slide">
<h1>MacMini Clusterを使用したベンチマーク</h1>
<small><p>Cassandraの台数を増加させた場合の比較</p></small>
<table align="center" border="1">
<tr>
	<th>READ</th>
	<th>WRITE</th>
</tr>
<tr>
	<td><img width="500px" src="./pics/macmini_cluster_read.png"/></td>
	<td><img width="500px" src="./pics/macmini_cluster_write.png"/></td>
</tr>
</table>
<small>
<ul>
<li>READ:1台のときは,両方に差は無く,数を増やすとクラスタのほうが遅くなっている.</li>
<li>WRITE:READと同様に,台数を増やしてもCassandra1台を上回る性能は出ていない.</li>
</ul>
</small>
</div>

<div class="slide">
<h1>MacMini Clusterを使用したベンチマーク</h1>
<p>考察</p>
<ul>
<li>台数をただ単に増やし,クライアントの接続先を分散させるだけでは良い結果は得られなかった.</li>
<li>台数を増やしただけでは,性能は1台を超えることはできない.</li>
<li>台数を増やすだけではなく,アプリケーションが使用するデータにも工夫が必要である.</li>
</ul>
</div>

<div class="slide">
<h1>まとめ</h1>
<small>
<ul>
<li>単純なベンチマーク(クライアントが1台)の場合,Cassandraは遅い.</li>
<li>クライアントが複数いるときに性能を発揮する.</li>
<li>コア数の少ないサーバーでは,性能を発揮することはできず,MySQLと同じような推移の仕方をする.</li>
<li>コア数の多いサーバーでは,MySQLより平均時間の増加度が少ない.</li>
<li>サーバーの台数を増やすだけでは1台の性能を超えることはできなく,データにも工夫が必要である.</li>
<li>Cassandraの性能を活かすことのできる,条件はコア数の多いサーバーでかつ読み書きが頻繁に行われるアプリケーションであるということが分かった.</li>
</ul>
</small>
</div>

<div class="slide">
<h1>これからの課題</h1>
<ul>
<li>Cassandraの台数を増やして性能を向上させる方法の検討.</li>
<li>YukiWiki on Cassandraを利用した実験.</li>
<li>スケーラビリティを検証することのできるクラスタ環境を用いた,スケーラビリティの高いCMSの開発.</li>
</ul>
</div>

</div>
</body>
</html>