GithubHelp home page GithubHelp logo

ozzie00 / ccm Goto Github PK

View Code? Open in Web Editor NEW

This project forked from riptano/ccm

1.0 3.0 0.0 201 KB

A script to easily create and destroy an Apache Cassandra cluster on localhost

License: Apache License 2.0

ccm's Introduction

CCM (for Cassandra Cluster Manager ... or something)
====================================================

A script/library to create, launch and remove a Apache Cassandra cluster on
localhost.

The goal of ccm and ccmlib is to make is easy to create, manage and destroy a
small cluster on a local box. It is meant for testing of a Cassandra cluster.


Requirements
------------

- A working python installation (tested to work with python 2.7).
- pyYAML (http://pyyaml.org/ -- 'sudo easy_install pyYaml')
- ccm works on localhost only for now. So if you want to create more than one
  node clusters the simplest way is to use multiple loopback aliases. On
  modern linux distribution you will probably have nothing to do, but
  on mac os x, you would have to create such aliases with
    sudo ifconfig lo0 alias 127.0.0.2 up
    sudo ifconfig lo0 alias 127.0.0.3 up
    ...
  Note that the usage section assumes that at least 127.0.0.1, 127.0.0.2 and
  127.0.0.3 are available.
- I'm pretty sure this doesn't work under Windows, but I accept pull requests


Installation
------------

ccm uses python distutils so from the source directory:
sudo ./setup.py install


Usage
-----

Let's say you want to fire up a 3 nodes Cassandra cluster.

* Short version *

ccm create test -v 0.8.6
ccm populate -n 3
ccm start

* Longer version *

ccm works from a Cassandra source tree (not the jars). There is two way to
tell ccm how to find the sources:
  1. if you have downloaded *and* compiled Cassandra sources, you can ask ccm
     to use that by initiating a new cluster with:
        ccm create test --cassandra-dir=<path/to/cassandra-sources>
     or, from that source tree directory, simply
        ccm create test
  2. you can ask ccm to use a released version of Cassandra. For instance to
     use Cassandra 0.8.6, do
        ccm create test -v 0.8.6
     When doing so, ccm will download the source (from http://archive.apache.org/dist/cassandra),
     compile them and set the new cluster to use those. This means in
     particular that this command can take a few minutes the first time you
     create a cluster for a given version. After the first time, ccm keeps the
     sources compile in ~/.ccm/repository/, so the same command will be fast
     the next times (note however that if you create cluster with a lot of
     different versions, this will take you disk space).

Once the cluster is created, you can populate it (with 3 nodes) and start all
the nodes with:
  ccm populate -n 3
  ccm start

That will start 3 nodes on IP 127.0.0.[1, 2, 3] on port 9160 for thrift, port
7000 for the internal cluster communication and ports 7100, 7200 and 7300 for JMX.
You can check that the cluster is correctly set up with
  ccm node1 ring


You can then boostrap a 4th node with
  ccm add node4 -i 127.0.0.4 -j 7400 -b
(populate is just a shortcut for adding multiple nodes initially)

ccm then provides a number of conveniences, like flushing all of the nodes of
the cluster:
  ccm flush
or only one node:
  ccm node2 flush

You can also easily look at the log file of a given node with:
  ccm node1 showlog

Finally, you can get rid of the whole cluster (which will stop the node and
remove all the data) with
  ccm remove

The list of other provided command is available through
  ccm
then each command is then documented through the -h (or --help) flag. For
instance 'ccm add -h' describe the options for 'ccm add'.


Where are things stored
-----------------------

By default, ccm stores all the node data and configuration files under ~/.ccm/cluster_name/.
This can be overridden using the --config-dir option with each command.


CCM Lib
-------

The ccm facilities are available programmatically through ccmlib. This could
be use to implement automated tests again Cassandra. An hopefully self
explanatory simple example of use of ccmlib could be:

  import ccmlib

  CLUSTER_PATH="."
  cluster = ccmlib.Cluster(CLUSTER_PATH, 'test', cassandra_version='0.8.6')
  cluster.populate(3).start()
  [node1, node2, node3] = cluster.nodelist()

  # do some test on the cluster/nodes. To connect to a node through thrift,
  # the host and port to a node is available through
  #   node.network_interfaces['thrift']

  cluster.flush()
  node2.compact()

  # do some other test

  # after the test, you can leave the cluster running, you can stop all nodes
  # using cluster.stop() but keep the data around (in CLUSTER_PATH/test), or
  # you can remove everything with cluster.remove()


--
Sylvain Lebresne <[email protected]>

ccm's People

Contributors

byronclark avatar driftx avatar jbellis avatar jfenwick avatar pcmanus avatar yukim avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.