Cassandra 簡易配置與啟動

Contents:

下載程式 (Downloads)

  • 可以在Apache Cassandra的下載網頁下載最新的穩定版本。這是最推薦的方式,下面其他的方法除非是Cassandra的開發人員或是發現bug必須使用最新版本才能修復時才會使用到。筆者撰稿的時候,最新版本的穩定版本0.7.0,接下來的範例也是以0.7.0版為主,此外指令系統環境預設是Ubuntu 10.10。
  • 可以到Apache Cassandra的SVN上下載最新的原始檔自行build, https://svn.apache.org/repos/asf/cassandra/trunk/
    • 或直接用SVN或git check out。
      • svn checkout https://svn.apache.org/repos/asf/cassandra/trunk cassandra
      • git clone git://git.apache.org/cassandra.git
  • 或者也可以在這裡找到 Nightly Build 版本,所謂Nightly Build版就是依據SVN上的最新程式碼每天Build出來的新版本,不過也因為程式碼都是最新的因此可能會有許多其他的問題。

簡單設置 (simple configuration)

Cassandra是利用Java所撰寫的因此在能夠運行JVM的平台就可以運行,此外根據Cassandra Wiki的說明,Cassandra必須在Java 1.6的版本才能運行推薦使用Sun JDK的 1.6 u19, u21或更新的版本。準備好JDK之後,解壓縮剛剛下載的檔案後可以修改下列檔案的設置:

  • conf/cassandra.yaml
    • 必須確認下列三個設置的目錄存在,如果不存在請手動修改該檔案或建立對應的目錄
      • data_file_directories
      • commitlog_directory
      • saved_caches_directory
    • 如果是Unix-Like的系統(如:Ubuntu Linux) 可以用下面的指令建立預設的目錄

      sudo mkdir /var/lib/cassandra
      sudo mkdir /var/lib/cassandra/data
      sudo mkdir /var/lib/cassandra/commitlog
      sudo mkdir /var/lib/cassandra/saved_caches
      sudo mkdir /var/log/cassandra

    • 如果是Windows系統,則一定要修改cassandra.yaml的內容,例如:
      • Windows cassandra settings
      • 用cmd開啟命令模式後,可以用下面的指令快速建立目錄

        mkdir datadata
        mkdir datacommitlog
        mkdir datasaved_caches
        mkdir log

  • conf/log4j.properties
    • 筆者下載的0.7.0壓縮包裡沒有這個檔案,可以將log4j-tools.properties複製到log4j.properties再加以修改。
    • 這個檔案預設的Log Level是INFO等級,如果有特殊需求可以改成更高(在log4j.rootLogger這邊)。
    • 另外log檔案的預設路徑是/var/log/cassandra/system.log。如果特殊需要也可以修改。
    • 如果是Windows的使用者的話,就一定要更改,否則log會寫不進去。

單一節點啟動(Running a single node)

啟動前須注意下面的事項:

  • 前面設置的三個路徑路徑是可以被寫入的。如果建立資料夾用sudo命令來建立時,這些資料夾的owner會是root,所以因此執行Cassandra也必須是root才可以寫入。
    • 或者下面執行的時候都用sudo使用root權限來運行。
    • 可以將上面資料夾的owner改為當前的使用者「sudo chown -Rv $(whoami) /var/lib/cassandra」

sudo chown -Rv $(whoami) /var/lib/cassandra
sudo chown -Rv $(whoami) /var/log/cassandra

  • 無法順利啟動時,請確認系統的JAVA_HOME路徑設置正確。

確認無誤後可以執行 「bin/cassandra -f」 來啟動系統(Windows系統請執行bincassandra.bat)。運行後可以利用「bin/nodetool -host <IP> ring」來查詢運行狀態。

啟動Cassandra叢集(Running a cluster)

一個Cassandra服務稱為一個節點(node),而Cassandra叢集(Cluster)即是啟動個node一起工作,node啟動時會依據seeds的設置來找到其它node,node間的溝通稱為Gossip,為了讓結點可以透過網路進行Gossip,因此也必須設置bind的網路位置。依照前面的說明與設置bind位址預設為localhost,因此只能啟動single node(單一節點)的Cassandra,但如果要啟動多個節點,則必須修改「conf/cassandra.yaml」中的設置。

  • seeds
    • 堤供node啟動時能找到其他node的服務。適合設置較為穩定的node作為seeds
  • listen_address
    • 即為Gossip使用的位址,可以用主機名稱或是用介面的IP位址,請勿使用0.0.0.0來bind所有的介面。
  • rpc_address
    • 即為Thrift,可以使用0.0.0.0來bind所有的介面。

啟動後可以用指令來查詢node的啟動狀態。

usr_name@your-hostname:~$ apache-cassandra-0.7.0/bin/nodetool -h 192.168.1.1 ring
Address         Status State   Load            Owns    Token
114370047407031585825716411201808513080
192.168.1.1 Up     Normal  17.64 KB        58.96%  44541738553819607218745010131931951155
192.168.1.2 Up     Normal  17.48 KB        41.04%  11437004740703158582571641120180851308

參考網頁