You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by Apache Wiki <wi...@apache.org> on 2016/08/10 22:53:35 UTC

[Cassandra Wiki] Update of "GettingStarted" by JonathanEllis

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:user-subscribe@cassandra.apache.org|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:user-subscribe@cassandra.apache.org|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}}
-