Dear Wiki user, You have subscribed to a wiki page or wiki category on "Cassandra Wiki" for change notification.
The "GettingStarted" page has been changed by JonathanEllis: https://wiki.apache.org/cassandra/GettingStarted?action=diff&rev1=110&rev2=111 Comment: Redirect to in-tree documentation - == Trying Cassandra in a VM == + #refresh 0 http://cassandra.apache.org/doc/latest/getting_started/index.html - Try Cassandra with [[http://www.planetcassandra.org/try-cassandra|these ten minute developer and admin walkthroughs]]. - - == Installing Cassandra Locally == - This document aims to provide a few easy to follow steps to take the first-time user from installation, to running single node Cassandra, and overview to configure multinode cluster. Cassandra is meant to run on a cluster of nodes, but will run equally well on a single machine. This is a handy way of getting familiar with the software while avoiding the complexities of a larger system. - - == Step 0: Prerequisites and Connecting to the Community == - Cassandra 3.0+ requires the most stable version of Java 8 you can deploy, preferably the [[http://www.oracle.com/technetwork/java/javase/downloads/index.html|Oracle/Sun JVM]]. Cassandra also runs on OpenJDK, Zing, and the IBM JVM. (It will NOT run on JRockit, which is only compatible with Java 6.) - - The best way to ensure you always have up to date information on the project, releases, stability, bugs, and features is to subscribe to the users mailing list ([[mailto:[email protected]|subscription required]]) and participate in the #cassandra channel on [[http://webchat.freenode.net/?channels=#cassandra|IRC]]. - - <<Anchor(picking_a_version)>> <<Anchor(download_a_kit)>> - - == Step 1: Download Cassandra == - * Download links for the latest stable release can always be found on the [[http://cassandra.apache.org/download|website]]. - * Users of Debian or Debian-based derivatives can install the latest stable release in package form, see DebianPackaging for details. - * Users of RPM-based distributions can get packages from [[www.datastax.com/documentation/latest-dsc-InsRhel|Datastax]]. - * If you are interested in building Cassandra from source, please refer to [[HowToBuild|How to Build]] page. - - For more details about misc builds, please refer to [[VersionsAndBuilds|Cassandra versions and builds]] page. - - <<Anchor(running_a_single_node)>> - - == Step 2: Basic Configuration == - The Cassandra configuration files can be found in the `conf` directory of binary and source distributions. If you have installed Cassandra from a deb or rpm package, the configuration files will be located in `/etc/cassandra`. - - === Step 2.1: Directories Used by Cassandra === - If you've installed Cassandra with a deb or rpm package, the directories that Cassandra will use should already be created an have the correct permissions. Otherwise, you will want to check the following config settings from `conf/cassandra.yaml`: `data_file_directories` (`/var/lib/cassandra/data`), `commitlog_directory` (`/var/lib/cassandra/commitlog`), and `saved_caches_directory` (`/var/lib/cassandra/saved_caches`). Make sure these directories exist and can be written to. - - By default, Cassandra will write its logs in `/var/log/cassandra/`. Make sure this directory exists and is writeable, or change this line in `conf/log4j-server.properies`: - - {{{ - log4j.appender.R.File=/var/log/cassandra/system.log - }}} - - Note that in Cassandra 2.1+, the logger in use is logback, so change this logging directory in your conf/logback.xml file such as: - - {{{ - <file>/var/log/cassandra/system.log</file> - }}} - - JVM-level settings such as heap size can be set in `conf/cassandra-env.sh`. - - == Step 3: Start Cassandra == - And now for the moment of truth, start up Cassandra by invoking '`bin/cassandra -f`' from the command line<<FootNote(To learn more about controlling the behavior of startup scripts, see RunningCassandra.)>>. The service should start in the foreground and log gratuitously to the console. Assuming you don't see messages with scary words like "error", or "fatal", or anything that looks like a Java stack trace, then everything should be working. - - Press "Control-C" to stop Cassandra. - - If you start up Cassandra without the "-f" option, it will run in the background. You can stop the process by killing it, using '`pkill -f CassandraDaemon`', for example. - - . Cassandra Users of recent Linux distributions and Mac OS X Snow Leopard should be able to start up Cassandra simply by untarring and invoking `bin/cassandra -f`. Since Cassandra 2.1, the tar.gz download has shipped with the log and data directories defaulting to the Cassandra directory. Versions prior defaulted to `/var/log/cassandra` and `/var/lib/cassandra/`. Due to this it is necessary to either start Cassandra with root privileges or change the `conf/cassandra.yaml` to use a directory owned by the current user. Snow Leopard ships with Java 1.6.0 and does not require changing the `JAVA_HOME` environment variable or adding any directory to your `PATH`. On Linux just make sure you have a working Java JDK package installed such as the `openjdk-6-jdk` on Ubuntu Lucid Lynx. - - == Step 4: Using cqlsh == - `bin/cqlsh` is an interactive command line interface for Cassandra. cqlsh allows you to execute CQL (Cassandra Query Language) statements against Cassandra. Using CQL, you can define a schema, insert data, execute queries. Run the following command to connect to your local Cassandra instance with cqlsh: - - {{{ - $ bin/cqlsh - }}} - You should see the following prompt, if successful: - - {{{ - Connected to Test Cluster at localhost:9160. - [cqlsh 2.3.0 | Cassandra 1.2.2 | CQL spec 3.0.0 | Thrift protocol 19.35.0] - Use HELP for help. - }}} - For clarity, we will omit the cqlsh prompt in the following examples. - - You can access the online help with 'help;' command. Commands are terminated with a semicolon (';') in cqlsh. - - First, create a keyspace -- a namespace of tables. - - {{{ - CREATE KEYSPACE mykeyspace - WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }; - }}} - Second, authenticate to the new keyspace: - - {{{ - USE mykeyspace; - }}} - Third, create a `users` table: - - {{{ - CREATE TABLE users ( - user_id int PRIMARY KEY, - fname text, - lname text - ); - }}} - Now you can store data into `users`: - - {{{ - INSERT INTO users (user_id, fname, lname) - VALUES (1745, 'john', 'smith'); - INSERT INTO users (user_id, fname, lname) - VALUES (1744, 'john', 'doe'); - INSERT INTO users (user_id, fname, lname) - VALUES (1746, 'john', 'smith'); - }}} - Now let's fetch the data you inserted: - - {{{ - SELECT * FROM users; - }}} - You should see output reflecting your new rows: - - {{{ - user_id | fname | lname - ---------+-------+------- - 1745 | john | smith - 1744 | john | doe - 1746 | john | smith - }}} - You can retrieve data about users whose last name is smith by creating an index, then querying the table as follows: - - {{{ - CREATE INDEX ON users (lname); - - SELECT * FROM users WHERE lname = 'smith'; - - user_id | fname | lname - ---------+-------+------- - 1745 | john | smith - 1746 | john | smith - }}} - - == Write your Application == - To connect to Cassandra, you'll need a database driver for your language of choice. A full list of CQL drivers can be found on the ClientOptions page. - - When deciding how to design your schema and layout your data, it will be helpful to review the resources on how to DataModel. - - You may also want to read the [[http://cassandra.apache.org/doc/cql3/CQL.html|full CQL documentation]]. - - == Configuring Multinode Clusters == - Now you have single working Cassandra node. It is a Cassandra cluster which has only one node. By adding more nodes, you can make it a multi node cluster. - - Setting up a Cassandra cluster is ''almost'' as simple as repeating the above procedures for each node in your cluster. There are a few minor exceptions though. - - Cassandra nodes exchange information about one another using a mechanism called Gossip, but to get the ball rolling a newly started node needs to know of at least one other, this is called a '''Seed'''. It's customary to pick a small number of relatively stable nodes to serve as your seeds, but there is no hard-and-fast rule here. Do make sure that each seed also knows of at least one other, remember, the goal is to avoid a chicken-and-egg scenario and provide an avenue for all nodes in the cluster to discover one another. - - In addition to seeds, you'll also need to configure the IP interface to listen on for Gossip and CQL, ('''listen_address''' and '''rpc_address''' respectively). Use a 'listen_address` that will be reachable from the `listen_address` used on all other nodes, and a `rpc_address` that will be accessible to clients. - - Once everything is configured and the nodes are running, use the `bin/nodetool status` utility to verify a properly connected cluster. For example: - - {{{ - $ bin/nodetool -host 192.168.0.10 -p 7199 status - Datacenter: datacenter1 - ======================= - Status=Up/Down - |/ State=Normal/Leaving/Joining/Moving - -- Address Load Tokens Owns Host ID Rack - UN 127.0.0.3 30.99 KB 256 32.4% 92b20e08-9ddd-4f55-9173-8516e74d27f5 rack1 - UN 127.0.0.2 31 KB 256 31.5% b9616658-c744-48fb-b64f-83f96b007d93 rack1 - UN 127.0.0.1 30.96 KB 256 36.1% f7a08973-85bd-460f-8176-d6f9df8c23f4 rack1 - }}} - Advanced cluster management is described in [[Operations]]. - - If you don't yet have access to hardware for a real Cassandra cluster, you can manage local clusters easily with [[https://github.com/pcmanus/ccm|ccm]] (Cassandra Cluster Manager). - - <<Anchor(if_something_goes_wrong)>> - == If Something Goes Wrong == - If you followed the steps in this guide and failed to get up and running, we'd love to help. Here's what we need. - - 1. If you are running anything other than a stable release, please upgrade first and see if you can still reproduce the problem. - 1. Make sure debug logging is enabled (hint: `conf/log4j.properties`) and save a copy of the output. - 1. Search the [[http://news.gmane.org/gmane.comp.db.cassandra.user|mailing list archive]] and see if anyone has reported a similar problem and what, if any resolution they received. - 1. Ditto for the [[https://issues.apache.org/jira/browse/CASSANDRA|bug tracking system]]. - 1. See if you can put together a unit test, script, or application that reproduces the problem. - - Finally, post a message with all relevant details to the list ([[mailto:[email protected]|subscription required]]), or hop onto [[http://webchat.freenode.net/?channels=#cassandra|IRC]] (network irc.freenode.net, channel #cassandra) and let us know. - - <<BR>> <<BR>> - - ---- - '''Footnotes:''' - - {{https://c.statcounter.com/9397521/0/fe557aad/1/|stats}} -
