comparison shoshi-paper.tex @ 6:b0181f185b51

edit
author suika6039@shizuku.local
date Thu, 26 Aug 2010 12:53:30 +0900
parents 35a8ba98fb5d
children dc7dcabc31b5
comparison
equal deleted inserted replaced
5:35a8ba98fb5d 6:b0181f185b51
68 本研究では,実際に分散させることによって高価なサーバーを超えることが出来る性能を出すことが出来るのか,また,どの様にCassandra上で動くソフトウェアを開発することによって性能を発揮することが出来るのかを,90台のPCクラスタ上でベンチマークを取り検証した,その結果,コア数の多いサーバー上で高い性能を得ることが出来た. 68 本研究では,実際に分散させることによって高価なサーバーを超えることが出来る性能を出すことが出来るのか,また,どの様にCassandra上で動くソフトウェアを開発することによって性能を発揮することが出来るのかを,90台のPCクラスタ上でベンチマークを取り検証した,その結果,コア数の多いサーバー上で高い性能を得ることが出来た.
69 \section{先行研究} 69 \section{先行研究}
70 \subsection{Yahoo! Cloud Serving Benchmark} 70 \subsection{Yahoo! Cloud Serving Benchmark}
71 数のデータベース(Sherpa,BitTable,Azure)などがあるが, 実際にはどのデータベースを使用すればよいか確かではない. この研究では, 異なるデータベースの性能を比較する共通なフレームワークを開発する.\cite{YCSB} 71 数のデータベース(Sherpa,BitTable,Azure)などがあるが, 実際にはどのデータベースを使用すればよいか確かではない. この研究では, 異なるデータベースの性能を比較する共通なフレームワークを開発する.\cite{YCSB}
72 \section{分散データベース Cassandra} 72 \section{分散データベース Cassandra}
73 Cassandraは, FaceBookが自社のために開発した分散Key-Valueストアデータベースである. 2008年にオープンソースとして公開され, 2009年にApache Incubatorのプロジェクトとなった. 73 Cassandraは, FaceBookが自社のために開発した分散Key-Valueストアデータベースであり,DynamoとBigTable\cite{BIGTABLE}を合わせた特徴を持っている. 2008年にオープンソースとして公開され, 2009年にApache Incubatorのプロジェクトとなった.
74 2010年にはApacheのトップレベルプロジェクトとなり, 現在でも頻繁にバージョンアップが行われている. 74 2010年にはApacheのトップレベルプロジェクトとなり, 現在でも頻繁にバージョンアップが行われている.
75 \subsection{ConsictencyLevel} 75 \subsection{ConsictencyLevel}
76 Cassandraには, ConsistencyLevelが用意されている. これは, 整合性と応答速度どちらを取るか選ぶためのパラメータであり, リクエストごとに設定することが出来る. 76 Cassandraには, ConsistencyLevelが用意されている. これは, 整合性と応答速度どちらを取るか選ぶためのパラメータであり, リクエストごとに設定することが出来る.
77 また, ReadとWriteでConsistencyLevelの意味は異なる. 77 また, ReadとWriteでConsistencyLevelの意味は異なる.
78 このConsistencyLevelを適用するノードの台数をReplicationFactorといい, Cassandraの設定ファイルで設定することが出来る. 78 このConsistencyLevelを適用するノードの台数をReplicationFactorといい, Cassandraの設定ファイルで設定することが出来る.
79
80 {\gt Read} 79 {\gt Read}
81 \begin{enumerate} 80 \begin{enumerate}
82 \item{ConsistencyLevel::ZERO}\\ 81 \item{ConsistencyLevel::ZERO}\\
83 サポートされていない. 82 サポートされていない.
84 \item{ConsistencyLevel::ANY}\\ 83 \item{ConsistencyLevel::ANY}\\
116 \end{center} 115 \end{center}
117 \caption{コンシステントハッシュ} 116 \caption{コンシステントハッシュ}
118 \label{fig:chash} 117 \label{fig:chash}
119 \end{figure} 118 \end{figure}
120 \subsection{SEDA} 119 \subsection{SEDA}
121 SEDA(Staged Event-Driven Architecture)は, Cassandraで使用されているアーキテクチャである. 処理を複数のステージに分解しタスクキューとスレッドプールを用意し処理を行う. 処理の様子を図\ref{fig:seda}に示す. 120 SEDA(Staged Event-Driven Architecture)は, Cassandraで使用されているアーキテクチャである\cite{SEDA1}\cite{SEDA2}. 処理を複数のステージに分解しタスクキューとスレッドプールを用意し処理を行う. 処理の様子を図\ref{fig:seda}に示す.
122 タスクが各ステージのタスクキューに入ると, スレッドプールにどれかのスレッドがタスクキューの中からタスクを取り出し処理を行う. 処理が終わるとそのタスクを次のステージのタスクキューに入れる. 121 タスクが各ステージのタスクキューに入ると, スレッドプールにどれかのスレッドがタスクキューの中からタスクを取り出し処理を行う. 処理が終わるとそのタスクを次のステージのタスクキューに入れる.
123
124 このアーキテクチャはマルチスレッドベースなためマルチコアなPCと多数のタスクがある状況で性能を発揮することができる. しかし, あまりにもスレッドプールやタスクが多すぎると, コンテキストに切り替えに時間がかかり性能は低下する. 122 このアーキテクチャはマルチスレッドベースなためマルチコアなPCと多数のタスクがある状況で性能を発揮することができる. しかし, あまりにもスレッドプールやタスクが多すぎると, コンテキストに切り替えに時間がかかり性能は低下する.
125 % ^^^ 何に載っていたか引用する
126
127 \begin{figure}[h] 123 \begin{figure}[h]
128 \begin{center} 124 \begin{center}
129 \includegraphics{./fig/SEDA.pdf} 125 \includegraphics{./fig/SEDA.pdf}
130 \end{center} 126 \end{center}
131 \caption{SEDA} 127 \caption{SEDA}
132 \label{fig:seda} 128 \label{fig:seda}
133 \end{figure} 129 \end{figure}
134 \subsection{Cassandra上でのステージの構成} 130 \subsection{Cassandra上でのステージの構成}
135 Cassandraは主に以下のステージにより構成されており, concurrent. StageManagerを参照すると見つけることが出来る. 131 Cassandraは主に以下のステージにより構成されており, concurrent::StageManagerを参照すると見つけることが出来る.
136 \begin{itemize} 132 \begin{itemize}
137 \item{READ STAGE} 133 \item{READ STAGE}
138 \item{MUTATION STAGE} 134 \item{MUTATION STAGE}
139 \item{STREAM STAGE} 135 \item{STREAM STAGE}
140 \item{GOSSIP STAGE} 136 \item{GOSSIP STAGE}
144 \item{MIGRATION STAGE}\\ 140 \item{MIGRATION STAGE}\\
145 \end{itemize} 141 \end{itemize}
146 実際にはもっと多数のステージが存在し, この他にもクライアントの接続を待つスレッドプールやMemTableのFlushを行うスレッドプールがあり, 全部で40個程度のスレッドが動作している. 142 実際にはもっと多数のステージが存在し, この他にもクライアントの接続を待つスレッドプールやMemTableのFlushを行うスレッドプールがあり, 全部で40個程度のスレッドが動作している.
147 \subsection{YukiWiki on Cassandra} 143 \subsection{YukiWiki on Cassandra}
148 今回の検証のため, CMSのであるWikiクローンのYukiWikiをCassandra上で動作するように改造した.YukiWikiは文書の管理にTIEHASHを使用しており,Cassandra用のTIEHASHを作成することで簡単に実装することが出来る.\\ 144 今回の検証のため, CMSのであるWikiクローンのYukiWikiをCassandra上で動作するように改造した.YukiWikiは文書の管理にTIEHASHを使用しており,Cassandra用のTIEHASHを作成することで簡単に実装することが出来る.\\
149 Cassandra上で動作するため,このWikiで複数のサーバー上でデータを共有することが出来るようになった. 145 Cassandra上で動作するため,このWikiで複数のサーバー上でデータを共有することが出来るようになった.\\
146 ソースコードは以下のURLで参照することが出来る.
150 \section{実験} 147 \section{実験}
151 本研究では, Cassandraのスケーラビリティの検証の為にベンチマークテストを行う. 実験環境は以下のとおりである. 148 本研究では, Cassandraのスケーラビリティの検証の為にベンチマークテストを行う. 実験環境は以下のとおりである.
152 \subsection{実験環境} 149 \subsection{実験環境}
153 \begin{enumerate} 150 \begin{enumerate}
154 \item{クラスタ(クライアント)} 151 \item{クラスタ(クライアント)}