下載Cassandra
從 http://incubator.apache.org/cassandra/download/ 選擇二進制包下載,包名類似 apache-cassandra-incubating-x.y.z-bin.tar.gz 。
設置和運行
爲了方便,下面所有命令以root身份執行。
1.以一個獨立節點運行
- tar -zxvf cassandra-$VERSION.tar.gz
- mv cassandra-$VERSION /opt/cassandra
- sudo mkdir -p /var/log/cassandra
- sudo mkdir -p /var/lib/cassandra
- echo 'alias PATH=$PATH:/opt/cassandra/bin/' >> ~/.bashrc && source ~/.bashrc
創建start-cassandra.sh
- /opt/cassandra/bin/cassand
創 建stop-cassandra.sh
- kill `ps aux | fgrep $USER | grep cassandra | grep -v 'grep' | awk '{print $2}' `
創建show-cassandra.sh
- #/bin/bash
- echo "cassandra PID: `ps aux | fgrep $USER | grep cassandra | grep -v 'grep' | awk '{print $2}'`"
以後臺方式運行節點:
- ./start-cassandra.sh
或以前臺方式運行:
- cassandra -f
測試
- cassandra-cli --host localhost --port 9160
如果成功會顯示:
- Connected to localhost/9160
- Welcome to cassandra CLI.
- Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
- cassandra>
嘗試寫和讀鍵:
- set Keyspace1.Standard1[ 'shugelee' ][ 'first' ] = 'Lee'
- set Keyspace1.Standard1[ 'shugelee' ][ 'last' ] = 'Li'
- set Keyspace1.Standard1[ 'shugelee' ][ 'age' ] = '21'
- get Keyspace1.Standard1[ 'shugelee' ]
結果類似:
- (column=last, value=li; timestamp=1263050140529)
- (column=first, value=lee; timestamp=1263050117638)
- (column=age, value=18; timestamp=1263050155638)
- Returned 3 rows.
2.以一個簇(集羣)運行
假定兩臺debian均按上面安裝並初步設置了cassandra環境:
- A 192.168.1.101 [development server]
- B 192.168.1.105 [developer Lee Li]
將A 192.168.1.101 [development server]作爲主server運行。
development server的設置
- <Seed>127.0.0.1</Seed>
改爲:
- <Seed>192.168.1.101</Seed>
- <ListenAddress>localhost</ListenAddress>
改爲:
- <ListenAddress>192.168.1.105</ListenAddress>
- <ThriftAddress>localhost</ThriftAddress>
改爲:
- <ThriftAddress>0.0.0.0</ThriftAddress>
developer Lee Li的設置
- <Seed>127.0.0.1</Seed>
改爲:
- <Seed>192.168.1.101</Seed>
- <Seed>192.168.1.105</Seed>
- <ListenAddress>localhost</ListenAddress>
改爲:
- <ListenAddress>192.168.1.101</ListenAddress>
- <ThriftAddress>localhost</ThriftAddress>
改爲:
- <ThriftAddress>0.0.0.0</ThriftAddress>
分別運行A和B上的cassandra:
- canssandra -f
分別在A和B上測試:
- nodeprobe -host 192.168.1.101 ring
如果成功,結果類似:
- DEBUG - Loading settings from /opt/cassandra/bin/../conf/storage-conf.xml
- DEBUG - Syncing log with a period of 1000
- Starting Token Ending Token Size Address Ring
- 132617574668126261121070408499066554197 127319937893509951017249225297128612859 1 192.168.1.101 |<--|
- 127319937893509951017249225297128612859 132617574668126261121070408499066554197 1 192.168.1.105 |-->|
分別在A和B上測試鏈接到一個node:
- cassandra-cli --host 192.168.1.105 --port 9160
如果成功,結果類似:
- # cassandra-cli --host 192.168.1.105 --port 9160
- Connected to 192.168.1.105/9160
- Welcome to cassandra CLI.
- Type 'help' or '?' for help. Type 'quit' or 'exit' to quit.
- cassandra>
3.測試清單
測試清單一:
- A連接到自己的cassandra
- A連接到B的cassandra
- B連接到自己的cassandra
- B連接到A的cassandra
- A連接到自己的cassandra,寫入並讀取鍵值
- A連接到B的cassandra,寫入並讀取鍵值
- B連接到自己的cassandra,寫入並讀取鍵值
- B連接到A的cassandra,寫入並讀取鍵值
測試清單二:
- B停止Cassandra服務,B連接到A並寫入數據,重啓B的Cassandra服務,B連接到自身的Casssandra,查看剛剛在A寫入 的數據(以-f方式運行觀察,B重啓時,立即自動與A同步!非常好!)
4.在各個平臺下運行
Gentoo GNU/Linux + JRE6下運行成功
Windows XP SP3 + JRE6下運行成功