2011-05-27

Cassandra0.7:クライアントからの転送サイズを増やす

Cassandra0.7.6に、自作プログラム(Perl)を使ってbacht_mutateを使用してデータを投入していたら、データ量が大きくなったところで、TSocketで以下のような例外が発生しました。
$VAR1 = bless( {
                 'code' => 0,
                 'message' => 'TSocket: Could not write 20039295 bytes localhost:localhost'
               }, 'Thrift::TException' );

この数字は、クライアンから送信しようとするデータサイズなので、どこかに転送データのサイズの最大値の設定があるはずだと思い、データ量を調整しながら、エラーの発生するサイズの閾値を調査したら、Cassandraの起動時のメッセージにあるTFastFramedTransportのフレームサイズを越えてしまったことが判明しました。

【Cassandra起動時のメッセージ TFastFramedTransportの最大フレームサイズ】
INFO 23:46:51,625 Using TFastFramedTransport with a max frame size of 15728640 bytes.

ということで、「cassandra.yaml」の「thrift_framed_transport_size_in_mb」のサイズを15から20に変更してCassandraを再起動したら、今度は、Cassandraで、ERRORが発生して起動に失敗しました。

【Cassandra起動時のERROR】
ERROR 23:58:00,812 Fatal configuration error
org.apache.cassandra.config.ConfigurationException: thrift_max_message_length_in_mb must be greater than thrift_framed_transport_size_in_mb when using TFramedTransport

ERRORの内容を読むと
『TFramedTransportを使う場合、thrift_max_message_length_in_mbは、thrift_framed_transport_size_in_mbより大きくなければならない。』
ということで、thrift_max_message_length_in_mbを21に変更し、Cassandraを再起動したら、Cassandraの起動に成功しました。

【Cassandra起動時のメッセージ TFastFramedTransportの最大フレームサイズ】
INFO 00:00:23,453 Using TFastFramedTransport with a max frame size of 20971520 bytes.

クライアントからのデータの投入にも成功しました。

■教訓
TSocketで転送サイズを増やしたい場合は、「cassandra.yaml」の
thrift_framed_transport_size_in_mb と thrift_max_message_length_in_mb
を調整しましょう。
(thrift_max_message_length_in_mb > thrift_framed_transport_size_in_mb)

【今回の変更(cassandra.yaml)】
thrift_framed_transport_size_in_mb: 20
thrift_max_message_length_in_mb: 21

2011-05-25

Cassandra0.7をWindowsのサービスで動かす

■目的
Cassandra0.7をWindowsのサービスで動かす。
Serveice化するコンポーネントは、「Apache Commons Daemon's procrun」を使用する。

■環境
OS Windows XP
Cassandra 0.7.6-2

■Cassandra用procrunのダウンロード
JIRA issueのCassandra / CASSANDRA-292に、
「Apache Commons Daemon's procrun」を使用してCssandraをWindowsのサービスで動作させる方法とインストーラーが紹介されています。
紹介されているのは、0.6用なので、0.7用にカスタマイズして使用しました。

https://issues.apache.org/jira/browse/CASSANDRA-292
から、「windows_u1.zip」をダウンロードし、解凍します。

解凍したファイル中にある「README.TXT」の手順にしたがって説明します。

●1.contribの作成

ここでは「cassandra-windows.jar」を作成します。
ダウンロードしたファイル内に「cassandra-windows.jar」が含まれていますが、log4jの設定がCassandra0.6の設定となっているので、0.7用にソースを修正してコンパイルして「cassandra-windows.jar」を作成します。

【Note】ダウンロードしたファイル内の「cassandra-windows.jar」をCassandra0.7で使用すると、サービス起動時にlog4jのプロパティファイルの読み込み失敗の警告がログに記録されますが起動させることはできました。警告を気にしないしコンパイルが面倒であれば、「2.CASSANDRA_HOMEとJAVA_HOMEの設定」に進んでください。

「cassandra-windows.jar」の作成には、jdk1.6とantが必要です。環境に合わせて、環境変数の%JAVA_HOME%と%ANT_HOME%を設定してください。

【今回のコンパイル環境】
JDK 1.6.0_21
ant 1.6.5
JAVA_HOME C:\Program Files\Java\jdk1.6.0_21
ANT_HOME C:\apache-ant-1.6.5

ダウンロードファイルを解凍してできたディレクトリ「contrib」をCassandaraのソースディストリビューションの「lib」ディレクトリと同じディレクトリに配置します。

【配置例】
D:\cassandra\apache-cassandra-0.7.6-2
├─bin
├─conf
├─contrib
│  └─windows
│      │
│      ├─bin
│      │  │
│      │  ├─amd64
│      │  │
│      │  └─ia64
│      │
│      └─src
├─lib

contrib\windows\src\main\java\org\apache\cassandra\contrib\windows\service
にある「WindowsService.java」を0.7用に修正します。
修正箇所は、main()メソッド内のlog4jのプロパティファイル名です。
【変更前のWindowsService.java】
String file = System.getProperty("storage-config") + File.separator + "log4j.properties";
【変更後のWindowsService.java】
String file = System.getProperty("storage-config") + File.separator + "log4j-server.properties";

ファイルを修正したら「contrib\windows」ディレクトリでantを実行し、jarファイルを作成します。
>ant jar

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\contrib\windows>ant jar
Buildfile: build.xml

init:
    [mkdir] Created dir: D:\cassandra\apache-cassandra-0.7.6-2\contrib\windows\build\classes

build:
    [javac] Compiling 1 source file to D:\cassandra\apache-cassandra-0.7.6-2\contrib\windows\build\classes

jar:
    [mkdir] Created dir: D:\cassandra\apache-cassandra-0.7.6-2\contrib\windows\build\classes\META-INF
      [jar] Building jar: D:\cassandra\apache-cassandra-0.7.6-2\contrib\windows\build\cassandra-windows.jar

BUILD SUCCESSFUL
Total time: 1 second

contrib\buildに「cassandra-windows.jar」が作成されます。

●2.CASSANDRA_HOMEとJAVA_HOMEの設定

環境変数にJAVA_HOMEとCASSANDRA_HOMEとJAVA_HOME設定します。
(Cassandraをサービスで動作させるときの環境変数です。)

【設定例】
項目 設定値
CASSANDRA_HOME D:\cassandra\apache-cassandra-0.7.6-2
JAVA_HOME C:\Program Files\Java\jre6

●3.ファイルの配置

サービスの起動には「contrib\bin」にある以下のファイルが必要です。
ファイル 役割
cassandra.exe Windows Service
cassandraw.exe Service Configuration Utility
cassandra-windows.jar(*1) Contains WindowsService class file
service.bat(*2) used to install and remove service

上記のファイルを%CASSANDRA_HOME%\binにコピーします。

(*1)1.で「cassandra-windows.jar」を作成した場合は作成した「cassandra-windows.jar」をコピーしてください。

(*2)ダウンロードしたファイルの「service.bat」は、サービスに登録する時のデフォルトの設定(Java Classpath や Java Optionが0.6の設定なので、サービスの登録はできますが、Cassandra0.7が正常に起動できません。
Cassandra0.7を動作させるためには、サービス登録後に「cassandraw.exe」を起動して Java Classpath や Java Option を0.7用に設定する必要がありますが、事前に「service.bat」に0.7用の設定を記述しておけば便利です。
0.7用のserivce.batは、後述の【0.7用service.bat】を参照してください。

【コピー後のファイルの配置】
D:\cassandra\apache-cassandra-0.7.6-2
├─bin
│      cassandra-windows.jar
│      cassandra.exe
│      cassandraw.exe
│      service.bat
│      :
│
├─conf
├─contrib
├─interface
├─javadoc
└─lib

●4. サービスのインストールとアンインストール

D:\cassandra\apache-cassandra-0.7.6-2\binで、コマンドプロンプトを開きます。

サービスのインストールは、以下のコマンドを実行します。
>service.bat install

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\bin>service.bat install

Setting JAVA_OPTS: -ea;-Xdebug;-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n;-XX:TargetSurvivorRatio=90;
-XX:+AggressiveOpts;-XX:+UseParNewGC;-XX:+UseConcMarkSweepGC;-XX:+CMSParallelRemarkEnabled;-XX:+HeapDumpOnOutOfMemoryErr
or;-XX:SurvivorRatio=128;-XX:MaxTenuringThreshold=0;-Dcom.sun.management.jmxremote.port=8080;-Dcom.sun.management.jmxrem
ote.ssl=false;-Dcom.sun.management.jmxremote.authenticate=false-Dlog4j.configuration=log4j-server.properties-Dlog4j.defa
ultInitOverride=true

Using Executable: D:\cassandra\apache-cassandra-0.7.6-2\bin\\cassandra.exe

Installing the service 'Cassandra' ...

Using CASSANDRA_HOME:    D:\cassandra\apache-cassandra-0.7.6-2

Using JAVA_HOME:        C:\Program Files\Java\jdk1.6.0_21

Using CASSANDRA_PARAMS:  -ea;-Xdebug;-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n;-XX:TargetSurvivorRat
io=90;-XX:+AggressiveOpts;-XX:+UseParNewGC;-XX:+UseConcMarkSweepGC;-XX:+CMSParallelRemarkEnabled;-XX:+HeapDumpOnOutOfMem
oryError;-XX:SurvivorRatio=128;-XX:MaxTenuringThreshold=0;-Dcom.sun.management.jmxremote.port=8080;-Dcom.sun.management.
jmxremote.ssl=false;-Dcom.sun.management.jmxremote.authenticate=false-Dlog4j.configuration=log4j-server.properties-Dlog4
j.defaultInitOverride=true;-Dcassandra;-Dcassandra-foreground=yes

Using JVM: C:\Program Files\Java\jdk1.6.0_21\jre\bin\server\jvm.dll

The service 'Cassandra' has been installed.
D:\cassandra\apache-cassandra-0.7.6-2\bin

D:\cassandra\apache-cassandra-0.7.6-2\bin>

コンピュータの管理のサービスとアプリケーションで確認してみましょう。
【サービスとアプリケーションの画面】

サービスのアンインストールは、以下のコマンドを実行します。
>service.bat remove

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\bin>service.bat remove

Setting JAVA_OPTS: -ea;-Xdebug;-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n;-XX:TargetSurvivorRatio=90;
-XX:+AggressiveOpts;-XX:+UseParNewGC;-XX:+UseConcMarkSweepGC;-XX:+CMSParallelRemarkEnabled;-XX:+HeapDumpOnOutOfMemoryErr
or;-XX:SurvivorRatio=128;-XX:MaxTenuringThreshold=0;-Dcom.sun.management.jmxremote.port=8080;-Dcom.sun.management.jmxrem
ote.ssl=false;-Dcom.sun.management.jmxremote.authenticate=false-Dlog4j.configuration=log4j-server.properties-Dlog4j.defa
ultInitOverride=true

Using Executable: D:\cassandra\apache-cassandra-0.7.6-2\bin\\cassandra.exe

The service 'Cassandra' has been removed
D:\cassandra\apache-cassandra-0.7.6-2\bin

D:\cassandra\apache-cassandra-0.7.6-2\bin>

●5.サービスの実行

サービスの実行はコマントプロンプトで、以下のコマンドを実行します。
(もちろんコンピュータの管理のサービスとアプリケーションで実行可能)
>net start cassandra

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\bin>net start cassandra
Cassandra サービスを開始します.
Cassandra サービスは正常に開始されました。

サービスのログは、「%CASSANDRA_HOME%\logs」に出力されます。
サービスのログ
jakarta_service_YYYYMMDD.log
stderr_YYYMMDD.log
stdout_YYYMMDD.log

以上で、サービスでの動作は完了です。
クライアントからアクセスして動作を確認してみてください。

●service.batの修正点
(1)Java Optionに以下の設定を追加します。(JAVA_OPTS)
-Dlog4j.configuration=log4j-server.properties
(2)Class PathにCassandraのconfディレクトリを追加します。(CLASSPATH)
set CLASSPATH=%CLASSPATH%;%CASSANDRA_CONF%

【0.7用に修正したservice.bat】
@echo off
@echo off
if "%OS%" == "Windows_NT" setlocal
rem ---------------------------------------------------------------------------
rem NT Service Install/Uninstall script for Cassandra
rem
rem Options
rem install                Install the service using Cassandra as service name.
rem                        Service is installed using default settings.
rem remove                 Remove the service from the System.
rem
rem name        (optional) If the second argument is present it is considered
rem                        to be new service name                                           
rem
rem ---------------------------------------------------------------------------

REM ***** Check/Set CASSANDRA_HOME *****
if NOT DEFINED CASSANDRA_HOME set CASSANDRA_HOME=%~dp0..\..\..

REM ***** Check/Set CASSANDRA_CONF *****
if NOT DEFINED CASSANDRA_CONF set CASSANDRA_CONF=%CASSANDRA_HOME%\conf

REM ***** Check/Set CASSANDRA_MAIN *****
if NOT DEFINED CASSANDRA_MAIN set CASSANDRA_MAIN=org.apache.cassandra.contrib.windows.service.WindowsService

REM ***** Check JAVA_HOME is defined *****
if DEFINED JAVA_HOME goto java_home_defined_ok
echo The JAVA_HOME environment variable was not found...
echo Make sure the JAVA_HOME environment variable is correclty defined.
echo This environment variable is needed to run this program.
goto end
:java_home_defined_ok

REM ***** Make sure JAVA_HOME is actually set *****
if not "%JAVA_HOME%" == "" goto java_home_actually_set_ok
echo The JAVA_HOME environment variable is not defined properly
echo This environment variable is needed to run this program
goto end
:java_home_actually_set_ok

REM ***** SET JAVA_OPTS *****
set JAVA_OPTS=-ea;^
-Xdebug;^
-Xrunjdwp:transport=dt_socket,server=y,address=8888,suspend=n;^
-XX:TargetSurvivorRatio=90;^
-XX:+AggressiveOpts;^
-XX:+UseParNewGC;^
-XX:+UseConcMarkSweepGC;^
-XX:+CMSParallelRemarkEnabled;^
-XX:+HeapDumpOnOutOfMemoryError;^
-XX:SurvivorRatio=128;^
-XX:MaxTenuringThreshold=0;^
-Dcom.sun.management.jmxremote.port=8080;^
-Dcom.sun.management.jmxremote.ssl=false;^
-Dcom.sun.management.jmxremote.authenticate=false^
-Dlog4j.configuration=log4j-server.properties

echo.
echo Setting JAVA_OPTS: %JAVA_OPTS%

REM ***** Check that cassandra.exe exists! *****
if exist "%~dp0\cassandra.exe" goto cassandra_home_ok
echo The cassandra.exe was not found...
goto end
:cassandra_home_ok


REM ***** Now we can setup all the PROCRUN variables!! *****
 
set EXECUTABLE=%~dp0\cassandra.exe
echo.
echo Using Executable: %EXECUTABLE%

REM ***** Set default Service name *****
set SERVICE_NAME=Cassandra
set PR_DISPLAYNAME=Cassandra

REM ***** Process batch parameters *****
if "%1" == "" goto displayUsage
if "%2" == "" goto setServiceName
set SERVICE_NAME=%2
set PR_DISPLAYNAME=%2
:setServiceName
if %1 == install goto doInstall
if %1 == remove goto doRemove
if %1 == uninstall goto doRemove
echo Unknown parameter "%1"

:displayUsage
echo.
echo Usage: service.bat install/remove [service_name]
goto end

REM ***** Remove the service *****
:doRemove
"%EXECUTABLE%" //DS//%SERVICE_NAME%
echo.
echo The service '%SERVICE_NAME%' has been removed
goto end

REM ***** Install the service *****
:doInstall
echo.
echo Installing the service '%SERVICE_NAME%' ...
echo.
echo Using CASSANDRA_HOME:    %CASSANDRA_HOME%
echo.
echo Using JAVA_HOME:        %JAVA_HOME%

REM ***** CLASSPATH library setting *****

REM ***** Ensure that any user defined CLASSPATH variables are not used on startup *****
set CLASSPATH=%~dp0cassandra-windows.jar
set CLASSPATH=%CLASSPATH%;%CASSANDRA_CONF%

REM ***** For each jar in the CASSANDRA_HOME lib directory call append to build the CLASSPATH variable.*****
for %%i in (%CASSANDRA_HOME%\lib\*.jar) do call :append %%~fi
goto okClasspath

:append
set CLASSPATH=%CLASSPATH%;%1%2
goto :eof

:okClasspath

REM ***** Include the build\classes directory so it works in development *****
set CASSANDRA_CLASSPATH=%CLASSPATH%;%CASSANDRA_HOME%\build\classes

REM ***** Set the CASSANDRA_PARMS to include JAVA_OPTS plus storage-config ****
set CASSANDRA_PARAMS=%JAVA_OPTS%;-Dcassandra;-Dstorage-config="%CASSANDRA_CONF%";-Dcassandra-foreground=yes

echo.
echo Using CASSANDRA_PARAMS:  %CASSANDRA_PARAMS%


rem ***** Each PROCRUN command line option is prefixed with PR_ *****

set PR_DESCRIPTION=Cassandra
set PR_INSTALL=%EXECUTABLE%
set PR_LOGPATH=%CASSANDRA_HOME%\log
set PR_CLASSPATH=%CASSANDRA_CLASSPATH%
set PR_STDOUTPUT=auto
set PR_STDERROR=auto
set PR_JVMMS=128
set PR_JVMMX=1024
set PR_STOPTIMEOUT=5

rem ***** Set the server jvm from JAVA_HOME *****
set PR_JVM=%JAVA_HOME%\jre\bin\server\jvm.dll
if exist "%PR_JVM%" goto foundJvm
rem Set the client jvm from JAVA_HOME
set PR_JVM=%JAVA_HOME%\jre\bin\client\jvm.dll
if exist "%PR_JVM%" goto foundJvm
set PR_JVM=auto
:foundJvm

echo.
echo Using JVM: %PR_JVM%

REM ***** Install the Service!!! *****
"%EXECUTABLE%" //IS//%SERVICE_NAME% --StartClass %CASSANDRA_MAIN% --StartParams start --StopClass %CASSANDRA_MAIN% --StopParams stop
if not errorlevel 1 goto installed
echo Failed installing '%SERVICE_NAME%' service
goto end

REM ***** Update the service with some extra paramters *****
:installed
rem Clear the environment variables. They are not needed any more.
set PR_DISPLAYNAME=
set PR_DESCRIPTION=
set PR_INSTALL=
set PR_LOGPATH=
set PR_CLASSPATH=
set PR_JVM=
SET PR_STDOUTPUT=
SET PR_STDERROR=
set PR_JVMMS=
set PR_JVMMX=

REM ***** Set some more extra parameters ****
REM ***** Note: Cassandra only seems start if using StartMode "java" *****
"%EXECUTABLE%" //US//%SERVICE_NAME% --JvmOptions "%CASSANDRA_PARAMS%" --StartMode jvm --StopMode jvm

echo.
echo The service '%SERVICE_NAME%' has been installed.

:end
cd %CURRENT_DIR%

2011-05-23

EmEditorでHTML Tidyを使用する

EmEditorでhtmlのコードのコーディングをしている時に、整形したいが、コマンドプロンプトでHTML Tidyを使って整形するのは面倒なので、EmEditorの外部ツールにHTML Tidyを組み込んでみました。
他のサイトのソースコードを見る時も整形して見れるので便利だと思います。

■目的
htmlのコードをEmEditor上で整形する。
整形には、HTML Tidyを使用する。

■環境
OS Windows XP
HTML Tidy vers 25 mar 2009
EmEditor EmEditor Professional (32-bit) 10.0.6

■HTML Tidyの準備

HTML Tidyは、HTML Tidy Project Pageで開発されています。
今回は、HTML Tidy Project Pageの「Executable binaries」からリンクされていた
HTML Tidy for Windowsから「EXE Version compiled 06 nov 2009」をダウンロードします。

ダウンロードしたファイルを解凍し「tidy.exe」を任意のディレクトリに配置します。
今回は「C:\Program Files\HtmlTidy」に配置しました。

■HTML TidyのEmEditr(外部ツール)への登録
[ツール]-[外部ツール]-[外部ツールの設定...]を選択し、外部ツールの設定画面を表示します。
外部ツールを新規作成し、HTML Tidy用の設定を登録します。

●外部ツールの設定で実行される処理
・編集中のファイルを保存する。
・保存したファイルをHTML Tidyに渡す。
・HTML Tidyの整形したコード(標準出力)をアウトプットバーに出力する。
・編集中の文書をアウトプットバーの情報(整形したコード)に置換する。

【htmltidy用の設定】
項目 設定値
タイトル HTML Tidy
コマンド C:\Program Files\HtmlTidy\tidy.exe
引数 -utf8 -i --wrap 0 --tidy-mark n $(Path)
初期ディレクトリ $(Dir)
アイコン パス (任意の設定)
現在のアイコン (任意の設定)
ファイルを保存する On
アウトプット バーを使用する On
終了時に閉じる On
入力 無し
カスタム (設定不可)
EOF を追加 (設定不可)
出力 文章と置換
エンコード アクティブな文章と同じ
標準エラー 破棄

引数の「-utf8 -i --wrap 0 --tidy-mark n 」は、HTML Tidyの整形用のオプションですので必要なオプションに変更してください。
詳しくは、
tidy -help
tidy -help-config
で調べられます。

参考までに上記の設定で指定しているオプション
【HTML Tidyのオプション例】
項目 設定値
-utf8 エンコーディングにUFT8を使用
-i インデントする
--wrap 0 ワードラップしない(0でワードラップなし)
--tidy-mark n htmltidyで作成したというコメントを出力しない

■EmEditor上でHTML Tidyの実行
EmEditorでhtmlのコードを開いている状態で、外部ツールに登録した「HTML Tidy」を選択します。
(ツール ツールバーのボタンでもよい。)

EmEditorでPerlを実行する

EmEditorでPerlのコーディングをしている時に、コードを実行するのに、コマンドプロンプトに移動するのが面倒なので、EmEditorの外部ツールにPerlを組み込んでEmEditor上で実行できるようにしてみました。

■目的
PerlのコードをEmEditor上で実行する。
Perlの出力結果は、アウトプットバーに出力する。

■環境
OS Windows XP
Perl Active Perl 5.12.3
ActivePerlのインストール先 D:\Perl
EmEditor EmEditor Professional (32-bit) 10.0.6

■PerlのEmEditr(外部ツール)への登録
[ツール]-[外部ツール]-[外部ツールの設定...]を選択し、外部ツールの設定画面を表示します。
外部ツールを新規作成し、Perl用の設定を登録します。

●外部ツールの設定で実行される処理
・編集中のファイルを保存する。
・保存したファイルをPerlに渡す。
・Perlの出力結果を(標準出力)をアウトプットバーに出力する。
・編集中の文書をアウトプットバーの情報に置換する。

【Perl用の設定】
項目 設定値
タイトル Perl
コマンド D:\Perl\bin\perl.exe
引数 $(Path)
初期ディレクトリ $(Dir)
アイコン パス (任意の設定)
現在のアイコン (任意の設定)
ファイルを保存する On
アウトプット バーを使用する On
終了時に閉じる On
入力 無し
カスタム (設定不可)
EOF を追加 (設定不可)
出力 破棄
エンコード システム既定
標準エラー 破棄

■EmEditor上でPerltidyの実行
EmEditorでPerlコードを開いている状態で、外部ツールに登録した「Perl」を選択します。
(ツール ツールバーのボタンでもよい。)
【画面例】

2011-05-22

CassandraのPerl実行環境を構築する(ActivePerl)

■目的

Windows上のPerl(ActivePerl)でCassandraに接続するための環境を構築する。

■環境
OS Windows XP
Cassandra 0.7.6-2
CASSANDRA_HOME D:\cassandra\apache-cassandra-0.7.6-2
Perl Active Perl 5.12.3
ActivePerlのインストール先 D:\PERL

■「Thrift」と「Thrift compiler for Windows」のダウンロード
Apache Thriftから「Thrift」と「Thrift compiler for Windows」をダウンロードします。

今回は以下のバージョンのファイルをダウンロードしました。
Thrift thrift-0.6.0.tar.gz
Thrift compiler for Windows thrift-0.6.0.exe

■ThriftのPerl用ライブラリの配置

ダウンロードしたThriftのファイルを解凍します。
以下のディレクトリとファイルを「D:\Perl\site\lib」に配置します。

lib\perl\lib\Thrift
lib\perl\Thrift.pm

【ディレクトリ構成】
D:\PERL\SITE
└─lib
    │  Thrift.pm
    │  
    ├─Thrift
    │      BinaryProtocol.pm
    │      BufferedTransport.pm
    │      FramedTransport.pm
    │      HttpClient.pm
    │      MemoryBuffer.pm
    │      Protocol.pm
    │      Server.pm
    │      Socket.pm
    │      Transport.pm
    │      

■Cassandra用のPerlパッケージ作成

今回は、作業ディレクトリとして、D:\cassandra\Thriftを準備しました。
ダウンロードしたファイルを「D:\cassandra\Thrift」にコピーします。
「D:\cassandra\Thrift」で以下のコマンドを実行します。
>thrift-0.6.0 --gen perl D:\cassandra\apache-cassandra-0.7.6-2\interface\cassandra.thrift

「D:\cassandra\Thrift」に、「gen-perl」ディレクトリが作成され、その配下にパッケージファイルが作成されます。
D:\cassandra\Thrift\gen-perl
└─Cassandra
        Cassandra.pm
        Constants.pm
        Types.pm

gen-perlディレクトリに作成されたディレクトリを「D:\Perl\site\lib」に配置します。
先に作成したThriftのパッケージと併せて以下のようなディレクトリ構成になります。
【ディレクトリ構成】
D:\PERL\SITE
└─lib
    │  Thrift.pm
    ├─Cassandra
    │      Cassandra.pm
    │      Constants.pm
    │      Types.pm
    ├─Thrift
    │      BinaryProtocol.pm
    │      BufferedTransport.pm
    │      FramedTransport.pm
    │      HttpClient.pm
    │      MemoryBuffer.pm
    │      Protocol.pm
    │      Server.pm
    │      Socket.pm
    │      Transport.pm

■Perlでアクセス

PerlでCassandraにデータを挿入するプログラム(SimpleInsert.pl)で、動作を確認します。
スキーマは、Cassandra0.7のスキーマサンプルのスキーマを使用します。

SimpleInsert.plは、
キースペース:Keyspace1,カラムファミリー:Standard1
に、
キー:sample1,カラム:hoge,カラム:sample_value
を挿入するプログラムです。

キースペース Keyspace1
カラムファミリー Standard1

キー カラム
sample1 hoge sample_value

【実行結果】
D:\cassandra\Thrift>perl SimpleInsert.pl
1件インサート完了.

「Cassandra CLI」で、データが挿入されたことを確認します。
[default@unknown] use Keyspace1;
Authenticated to keyspace: Keyspace1
[default@Keyspace1] list Standard1;
Using default limit of 100
-------------------
RowKey: sample1
=> (column=686f6765, value=73616d706c655f76616c7565, timestamp=1306068102)

columnとvaluseがバイト文字列で表示されますが、コードで挿入した文字列であることを確認するために、以下のコードで確認してみます。
【バイト文字列を確認するプログラム(CassndraByteData.pl)】
@data = ( 'hoge', 'sample_value' );
foreach $d (@data) {
    print "$d:" . unpack( "H*", $d ) . "\n";
}
【実行結果】
D:\cassandra\Thrift>perl CassndraByteData.pl
hoge:686f6765
sample_value:73616d706c655f76616c7565

【SimpleInsert.plのコード】
サンプルコードは、「Cassandraのはじめ方─手を動かしてNoSQLを体感しよう」のサンプルコード(Java)を参考に作成しました。

#!/usr/bin/perl -w
use strict;
use warnings;

# Change for your environment
use Cassandra::Cassandra;
use Cassandra::Constants;
use Cassandra::Types;

use Thrift;
use Thrift::BinaryProtocol;
use Thrift::Socket;
use Thrift::FramedTransport;

use Data::Dumper;

my $socket = new Thrift::Socket( 'localhost', 9160 );
my $transport = new Thrift::FramedTransport( $socket, 1024, 1024 );
my $protocol  = new Thrift::BinaryProtocol($transport);
my $client    = new Cassandra::CassandraClient($protocol);

my $keyspace      = 'Keyspace1';
my $column_family = 'Standard1';

eval {
    $transport->open();
    my $auth_request = new Cassandra::AuthenticationRequest();

    $auth_request->{credentials} = { username => 'user', password => 'pass' };
    $client->login($auth_request);
    $client->set_keyspace($keyspace);

    my $key               = 'sample1';
    my $timestamp         = time;
    my $consistency_level = Cassandra::ConsistencyLevel::ONE;

    my $column_parent =
      new Cassandra::ColumnParent( { column_family => $column_family } );

    my $column = new Cassandra::Column(
        {
            name      => 'hoge',
            value     => 'sample_value',
            timestamp => $timestamp
        }
    );

    # 1件カラムをインサート
    $client->insert( $key, $column_parent, $column, $consistency_level );
    $transport->close();

};

if ($@) {
    warn( Dumper($@) );
}

print "1件インサート完了.\n";

1;

Cassandra0.7のスキーマを構築する(スキーマサンプル)

■目的

Cassandra0.7のスキーマを操作する。
Cassandra0.7に付属のサンプルのスキーマを構築する。

■環境

OS Windows XP
Cassandra 0.7.6-2

CASSANDRA_HOME D:\cassandra\apache-cassandra-0.7.6-2

※特に説明がないかぎり、コマンドは%CASSNDEA_HOME%で実行しています。

■サンプルのスキーマの構築

Cassaandra0.7では、「Cassandra CLI」にスキーマを操作するコマンドが用意されました。
また、「Cassandra CLI」では、コマンドを記載したファイルを読み込み実行することができるので、Cassandra0.7に付属しているサンプルスキーマのファイルを読み込んでスキーマを作成してみます。
(スキーマサンプルのコメントにも記載されています。)

スキーマサンプルファイル conf/schema-sample.txt

【Cassandra CLIのusage抜粋】
>bin\cassandra-cli.bat -help
Starting Cassandra Client
usage: cassandra-cli
:
 -f,--file         load statements from the specific file
:

Cassandra CLIで、スキーマサンプルのファイルをロードします。
bin\cassandra-cli.bat -h localhost -f conf\schema-sample.txt

【実行例】
>bin\cassandra-cli.bat -h localhost -f conf\schema-sample.txt
Starting Cassandra Client
Connected to: "Test Cluster" on localhost/9160
a874f6d2-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
Authenticated to keyspace: Keyspace1
a8abe553-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a8b7cc34-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a8c14215-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a8cf99f6-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a8f5bf97-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a8ff5c88-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
a914b949-845c-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster

■スキーマの確認

「Cassandra CLI」を使用して構築されたスキーマを確認します。
「Cassandra CLI」で、Cassandraに接続します。
>bin\cassandra-cli.bat -h localhost
Starting Cassandra Client
Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.

Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
[default@unknown]

「show keyspaces」で、キースペースを確認します。
show keyspaces;

【実行例】
[default@unknown] show keyspaces;
Keyspace: Keyspace1:
  Replication Strategy: org.apache.cassandra.locator.SimpleStrategy
    Replication Factor: 1
  Column Families:
    ColumnFamily: Indexed1
:
    ColumnFamily: Standard1
:
    ColumnFamily: Standard2
:
    ColumnFamily: StandardByUUID1
:
    ColumnFamily: Super1 (Super)
:
    ColumnFamily: Super2 (Super)
:
    ColumnFamily: Super3 (Super)
:
Keyspace: system:
:
キースペース「Keyapace1」が作成され、「Keyapace1」の中に、「Indexed1」~「Super3」のカラムファミリーが作成されました。

■作成したキースペースへのアクセス

作成したキースペースとカラムファミリに簡単にアクセスしてみます。
作成したキースペース(Keyspace1)にスイッチし、カラムファミリ(Standard1)を表示してみます。
カラムファミリのデータの表示は「list [カラムファミリー]」コマンドを使用します。
[default@unknown] use Keyspace1;
Authenticated to keyspace: Keyspace1
[default@Keyspace1] list Standard1;
Using default limit of 100

0 Row Returned.

Keyspace1にスイッチしました。
listコマンドでStandard1を表示すると、0件であることが表示されます。
プロンプトも「Keyspace1」に変更されます。

■カラムファミリの削除

カラムファミリを削除して、削除されたことを確認します。
カラムファミリ(Standard1)を削除し、カララムファミリ(Standard1)の件数を表示してみます。
カラムファミリの削除は「drop column family [カラムファミリー]」を使用します。
[default@Keyspace1] drop column family Standard1;
e92bdc4a-845f-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
[default@Keyspace1] list Standard1;
Using default limit of 100
unconfigured columnfamily Standard1

Standard1が削除されます。
listコマンドででStandard1を表示すると、Standard1が定義されていないことが表示さます。

■キースペースの削除

キースペースも削除してみます。
キースペースの削除は、「drop keyspace [キースペース]」を使用します。
[default@Keyspace1] drop keyspace Keyspace1;
5a5aed7b-8460-11e0-ab0d-e700f669bcfc
Waiting for schema agreement...
... schemas agree across the cluster
[default@Keyspace1] use Keyspace1;
Keyspace 'Keyspace1' not found.
[default@Keyspace1]

Keyspace1が削除されました。
Keyspace1へスイッチしようとすると、Keyspace1が見つからない事が表示されます。
(プロンプトには、Keyspace1が表示されていますが...)
「show Keyspaces;」コマンドで確認してもKeyspace1は表示されません。

Cassandra0.7をWindowsXPにインストールする

■目的
WindowsXPにCassandra0.7をインストールする

■環境
OS Windows XP
Cassandra 0.7.6-2

■JREのインストール

事前にJRE1.6をインストールし、環境変数JAVA_HOMEが設定します。
インストール手順は割愛します。

項目 設定値
JAVA_HOME JAVA_HOME=C:\Program Files\Java\jre6

■Cassandraのダウンロード
The Apache Cassandra Projectから、Cassandraをダウンロードします。

今回、ダウンロードしたファイル
apache-cassandra-0.7.6-2-bin.tar.gz

■Cassandraのインストール
ダウンロードしたファイルを解凍します。
解凍したファイルを任意のディレクトリに配置します。

【配置例】
D:\cassandra\apache-cassandra-0.7.6-2
D:\cassandra
└─apache-cassandra-0.7.6-2
    ├─bin
    ├─conf
    ├─interface
    ├─javadoc
    └─lib

■CASSANDAR_HOMEの設定

環境変数に「CASSANDRA_HOME」を設定します。
項目 設定値
CASSANDRA_HOME D:\cassandra\apache-cassandra-0.7.4

■Cassandraの動作環境

Cassandraの動作環境を決めておきます。

【動作環境例】
項目 設定値
データファイルディレクトリ D:/var/lib/cassandra/data
コミットログディレクトリ D:/var/lib/cassandra/commitlog
保存キャッシュディレクトリ D:/var/lib/cassandra/saved_caches
システムログ D:/var/log/cassandra/system.log

■Cassandraの設定

confディレクトリ内の「cassandra.yaml」と「log4j-server.properties」を編集します。

【cassandra.yaml】の設定
項目 設定値
data_file_directories D:/var/lib/cassandra/data
commitlog_directory D:/var/lib/cassandra/commitlog
saved caches D:/var/lib/cassandra/saved_caches

【log4j-server.properties】の設定
項目 設定値
log4j.appender.R.File D:/var/log/cassandra/system.log

■Cassandraの起動

Casandaraの起動は、binディレクトリの「cassandra.bat」を使用します。
フォラグラウンドで起動するので、「cassandra.bat -f」を実行します。
(Windows用のBATでは-fは見ていないので、-fは無くてもよい)
D:\cassandra\apache-cassandra-0.7.6-2\bin>cassandra.bat -f
Starting Cassandra Server
INFO 18:05:40,468 Logging initialized
INFO 18:05:40,515 Heap size: 1070399488/1070399488
:
:
INFO 18:05:41,156 Will not load MX4J, mx4j-tools.jar is not in the classpath
INFO 18:05:41,187 Binding thrift service to localhost/127.0.0.1:9160
INFO 18:05:41,203 Using TFastFramedTransport with a max frame size of 15728640 bytes.
INFO 18:05:41,203 Listening for thrift clients...

■Cassandraへの接続を確認する
Cassandraのクライアントアプリ「cassandra CLI」でCassandraへの接続を確認します。
「cassandra CLI」は、binディレクトリに配置されています。
cassandra-cli.bat -h localhost

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\bin>cassandra-cli.bat -h localhost
Starting Cassandra Client
Connected to: "Test Cluster" on localhost/9160
Welcome to cassandra CLI.

Type 'help;' or '?' for help. Type 'quit;' or 'exit;' to quit.
[default@unknown]

「cassandra CLI」を終了するには、「exit;」または、「quit;」で終了します。
[default@unknown] exit;

■動作環境(ディレクトリ)を確認する
データ、コミットログ、保存キャッシュのディレクトリ、システムログを確認します。
【ディレクトリ構成】
D:\var
├─lib
│  └─cassandra
│      ├─commitlog
│      │      CommitLog-1306055140921.log
│      │      CommitLog-1306055140921.log.header
│      │
│      ├─data
│      │  └─system
│      │          LocationInfo-f-1-Data.db
│      │          LocationInfo-f-1-Filter.db
│      │          LocationInfo-f-1-Index.db
│      │          LocationInfo-f-1-Statistics.db
│      │          LocationInfo-f-2-Data.db
│      │          LocationInfo-f-2-Filter.db
│      │          LocationInfo-f-2-Index.db
│      │          LocationInfo-f-2-Statistics.db
│      │
│      └─saved_caches
└─log
    └─cassandra
            system.log

■リングを確認する
「NodeTool」を使用して、リングの状態を確認します。
「NodeTool」は、binディレクトリに配置されています。
nodetool -h localhost ring

【実行例】
D:\cassandra\apache-cassandra-0.7.6-2\bin>nodetool -h localhost ring
Starting NodeTool
Address         Status State   Load            Owns    Token
127.0.0.1       Up     Normal  8.9 KB          100.00% 137616360023789515052192705177259668719

EmEditorでPerltidyを使用する

EmEditorでPerlのコーディングをしている時に、整形したいが、コマンドプロンプトでPerltidyを使って整形するのは面倒なので、EmEditorの外部ツールにPerltidyを組み込んでみました。

■目的
PerlのコードをEmEditor上で整形する。
整形には、Perltidyを使用する。

■環境
OS Windows XP
Perl Active Perl 5.12.3
EmEditor EmEditor Professional (32-bit) 10.0.6

■Perltidyのインストール
Windows上でActivePerlを使っている場合は、PPMパッケージとしてインストールします。
>ppm install Perl-Tidy
Downloading Perl-Tidy-20101217...done
Unpacking Perl-Tidy-20101217...done
Generating HTML for Perl-Tidy-20101217...done
Updating files in site area...done
5 files installed

D:\Perl\site\binに、PerltidyのPerlスクリプトとbatファイルが存在するはず。
(ActivePerlのインストール先 D:\Perl)
perltidy
perltidy.bat

「perltidy.bat」をEmEditorの外部ツールとして使用します。

■PerltidyのEmEditr(外部ツール)への登録
[ツール]-[外部ツール]-[外部ツールの設定...]を選択し、外部ツールの設定画面を表示します。
外部ツールを新規作成し、Perltidy用の設定を登録します。

●外部ツールの設定で実行される処理
・編集中のファイルを保存する。
・保存したファイルをPerltidyに渡す。
・Perltidyの整形したコード(標準出力)をアウトプットバーに出力する。
・編集中の文書をアウトプットバーの情報に置換する。

【Perltidy用の設定】
項目 設定値
タイトル Perltidy
コマンド D:\Perl\site\bin\perltidy.bat
引数 $(Path) -st
初期ディレクトリ $(Dir)
アイコン パス (任意の設定)
現在のアイコン (任意の設定)
ファイルを保存する On
アウトプット バーを使用する On
終了時に閉じる On
入力 無し
カスタム (設定不可)
EOF を追加 (設定不可)
出力 文章と置換
エンコード アクティブな文章と同じ
標準エラー 破棄

■EmEditor上でPerltidyの実行
EmEditorでPerlコードを開いている状態で、外部ツールに登録した「Perltidy」を選択します。
(ツール ツールバーのボタンでもよい。)

2011-05-21

仮想マシンで、Cassandra クラスタ環境を構築する

Cassandraのクラスタの環境を構築したいが家にはノートPCが2台しかないので、構築は難しい。
そこで、3台の仮想マシンを使用して構築することにしました。

■目的
Cassandraの3ノード以上のクラスタの環境を構築する。
3台の仮想マシンを使用して構築する。

■環境
ホストOS Windows Vista Ultimate SP2 (32bit)
仮想環境用ソフト VMWare Player 3.1.4 build-385536
仮想マシンOS Ubuntu 8.04 LTS
Cassandra 0.7.x

■「VMWare Player」のダウンロードとインストール
VMware Player 3.0

■ubuntuの準備
ubuntu は、「ubuntu Japanese team」が提供している「VMware用仮想マシン(Ubuntu 8.04 LTS)」をダウンロードして使用しました。
VMware用仮想マシン

仮想マシンの起動も、同ページに記載されていた手順で起動しました。

【Cassandra用PCの構成】
ノードのPC ホスト名 IPアドレス
PC1 cas1 172.25.0.31
PC2 cas2 172.25.0.32
PC3 cas3 172.25.0.33

■Cassandraのインストール
PC1,PC2,PC3にCassandraをインストールします。
インストールは、Cassandra 0.7をUbuntuにインストールするを参照してください。
インストール後に、Cassandra.yamlを変更しません。
もちろん各ノードで、Cassandaraが正常に動作していることを確認しておきます。

■PC1での操作
cassandra.yamlを編集します。
【PC1のcassandra.yamlの設定】
auto_bootstrap false
seeds 172.25.0.31
listen_address 172.25.0.31
rpc_address 0.0.0.0

最初のノードでブートストラップしないので、auto_bootstrapをfalseに設定します。

Cassandraを再起動します。
$ sudo /etc/init.d/cassandra restart

nodetoolでリングを確認します。
$ nodetool -h localhost ring
Address         Status State   Load            Owns    Token
172.25.0.31     Up     Normal  15.17 KB        100.00% 70409899430563219284798751869237800915

■PC3での操作

cassandra.yamlを編集します。
【PC3のcassandra.yamlの設定】
auto_bootstrap true
seeds 172.25.0.31
listen_address 172.25.0.33
rpc_address 0.0.0.0

ブートストラップでノードに参加するので、auto_bootstrapをtrueに設定します。
参加するリングのノードであるPC1のアドレスをseedに設定します。

Cassandraを再起動します。
$ sudo /etc/init.d/cassandra restart

nodetoolでリングを確認します。
$ nodetool -h localhost ring
Address         Status State   Load            Owns    Token
                                                       70409899430563219284798751869237800915
172.25.0.33     Down   Normal  6.54 KB         72.46%  23553458790910585615865889452289005374
172.25.0.31     Up     Normal  10.91 KB        27.54%  70409899430563219284798751869237800915

■PC2での操作

cassandra.yamlを編集します。
【PC2のcassandra.yamlの設定】
auto_bootstrap true
seeds 172.25.0.31
listen_address 172.25.0.32
rpc_address 0.0.0.0

ブートストラップでノードに参加するので、auto_bootstrapをtrueに設定します。
参加するリングのノードであるPC1のアドレスをseedに設定します。
seedに設定するノードは、既にクラスタに参加しているノードであればよいです。

Cassandraを再起動する。
$ sudo /etc/init.d/cassandra restart

$ nodetool -h localhost ring
Address         Status State   Load            Owns    Token
                                                       70409899430563219284798751869237800915
172.25.0.33     Up     Normal  11.01 KB        72.46%  23553458790910585615865889452289005374
172.25.0.32     Up     Normal  10.91 KB        3.27%   29115843588644070930161253639320793841
172.25.0.31     Up     Normal  11.01 KB        24.27%  70409899430563219284798751869237800915

これで、3ノードのクラスタ環境構築完了しました。
やった!

Cassandra 0.7をUbuntuにインストールする

仮想マシン上でCassandraを構築しようしたが、Ubantuの仮想マシンのファイルが手軽に入手できたので、UbantuにCassandaraをインストールしてみました。

■目的
UbantuにCassandra0.7をインストールする。

■環境
Ubuntu 8.04(VMware用仮想マシン)
Cassandra 0.7.x

jdkをインストールします。
$ sudo apt-get install openjdk-6-jdk

Cassandraをインストールするためにsources.listにCassandraの設定を追加します。
sources.listを編集します。
$ sudo gedit /etc/apt/sources.list

【sources.listに追加した内容】
#Cassandra 0.7.x
deb http://www.apache.org/dist/cassandra/debian 07x main
deb-src http://www.apache.org/dist/cassandra/debian 07x main

apt-getで更新します。

$ sudo apt-get update

しかし、以下の警告が表示されました。
W: GPG error: http://www.apache.org 07x Release: 公開鍵を利用できないため、以下の署名は検証できませんでした: NO_PUBKEY 4BD736A82B5C1B00
W: これらの問題を解決するためには apt-get update を実行する必要があるかもしれません

ということで、公開鍵を設定しました。

$ gpg --keyserver pgp.mit.edu --recv-keys 4BD736A82B5C1B00

gpg: 鍵2B5C1B00をhkpからサーバーpgp.mit.eduに要求
gpg: 鍵2B5C1B00: 公開鍵“Sylvain Lebresne (pcmanus) ”を読み込みました
gpg: 処理数の合計: 1
gpg:               読込み: 1  (RSA: 1)

$ gpg --export --armor 4BD736A82B5C1B00 | sudo apt-key add -

OK

再度aptで更新し、Cassandraをインストールします。
$ sudo apt-get update
$ sudo apt-get install cassandra

途中でインストールの続行の確認があるので続行を選択します。
【cassandraインストール時の画面表示】
$ sudo apt-get install cassandra
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています                
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
oem-config-gtk ipamonafont ttf-ipamonafont libestraier8 libqdbm14
opfc-modulehp-ipamonafont-source localechooser-data oem-config opfc-modulehp
これらを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
jsvc libcommons-daemon-java
推奨パッケージ:
libjna-java
以下のパッケージが新たにインストールされます:
cassandra jsvc libcommons-daemon-java
アップグレード: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
8672kB のアーカイブを取得する必要があります。
この操作後に追加で 10.1MB のディスク容量が消費されます。
続行しますか [Y/n]? 

取得:1 http://ubuntutym.u-toyama.ac.jp hardy/universe libcommons-daemon-java 1.0.2~svn20061127-6 [38.9kB]
取得:2 http://www.apache.org 07x/main cassandra 0.7.6-2 [8609kB]          
取得:3 http://ubuntutym.u-toyama.ac.jp hardy/universe jsvc 1.0.2~svn20061127-6 [23.7kB]
8672kB を 19s で取得しました (449kB/s)                                         
未選択パッケージ libcommons-daemon-java を選択しています。
(データベースを読み込んでいます ... 現在 114421 個のファイルとディレクトリがインストールされています。)
(.../libcommons-daemon-java_1.0.2~svn20061127-6_all.deb から) libcommons-daemon-java を展開しています...
未選択パッケージ jsvc を選択しています。
(.../jsvc_1.0.2~svn20061127-6_i386.deb から) jsvc を展開しています...
未選択パッケージ cassandra を選択しています。
(.../cassandra_0.7.6-2_all.deb から) cassandra を展開しています...
libcommons-daemon-java (1.0.2~svn20061127-6) を設定しています ...

jsvc (1.0.2~svn20061127-6) を設定しています ...
cassandra (0.7.6-2) を設定しています ...
グループ `cassandra' (GID 124) を追加しています...
終了。

これでインストールは完了です。

■Cassandraの起動・停止・状態確認・再起動

Cassandoraの起動
$sudo /etc/init.d/cassandra start

Cassandraの状態確認
$ sudo /etc/init.d/cassandra status
* Cassandra is running

Cassandraの停止
$sudo /etc/init.d/cassandra stop

Cassandraの状態確認
$ sudo /etc/init.d/cassandra status
* Cassandra is not running

Cassandraの再起動
$ sudo /etc/init.d/cassandra restart
* Restarting Cassandra cassandra

■《ちょいメモ》
※sysytem.logをtailsで監視しているとわかりやすいです。
$ sudo tail -f /var/log/cassandra/system.log