跳至主要内容

博文

目前显示的是 四月, 2011的博文

Apache Cassandra 0.7 的集群配置

Hadoop/HBase 一样,Apache Cassandra 也是 NoSQL 产品中最为重要的成员之一,跟 HBase 相比,因为 Cassandra 使用了一种去中心化的模式(类似memcached集群), 使用 Cassandra 搭建 NoSQL 集群更为简单容易,特别是在 0.7 版本之后,下面简述使用 Cassandra 0.7 搭建一个集群。@ivarptr

前提条件
a、准备3台或以上的计算机。下面假设有3台运行Linux操作系统的计算机,局域网的IP地址分别为 192.168.0.100, 192.168.0.101 和 192.168.0.102。
b、Java 1.6。
c、到这里下载 0.7.x 版本的Cassandra 二进制发行包。

1、基本配置

挑选其中的一台机开始配置,先展开 cassandra 发行包:
$ tar -zxvf apache-cassandra-$VERSION.tar.gz
$ cd apache-cassandra-$VERSION

其中的 conf/cassandra.yaml 文件为主要配置文件,由于 0.7 版不再采用XML格式配置文件,如果对 YAML 格式不熟悉的话最好先到这里了解一下。

Cassandra 在配置文件里默认设定了几个目录:

data_file_directories: /var/lib/cassandra/data
commitlog_directory: /var/lib/cassandra/commitlog
saved_caches_directory: /var/lib/cassandra/saved_caches

data_file_directories 可以一次同时设置几个不同目录,cassandra 会自动同步所有目录。另外在日志配置文件 log4j-server.properties 也有一个默认设定日志文件的目录:
log4j.appender.R.File=/var/log/cassandra/system.log

一般情况下采用默认的配置即可,除非你有特殊的数据储存要求,所以现在有两种方案:一是按照默认配置创建相关的目录,二是修改配置文件采用自己指定的目录。
下面为了简单起见采用第一种方案:

$ sudo mkdir -p /var/log/cassand…

如何在应用程序里使用 Hadoop HDFS ——分布式计算Hadoop配置及实践(二)

上一篇讲到 Hadoop 的配置,我们在搭建分布式计算系统的同时也已经搭建好分布式储存系统了。下面简述如何在应用程序(可以是 Console Application,也可以是 Web Application)调用 Hadoop HDFS。

我们除了可以使用 Hadoop 命令行管理里面的文件和目录之外,也可以通过 Hadoop API 管理。

1、先创建一个Java Application (Console) 程序,然后引用 hadoop-core-0.20.2.jar ,因为这个包同时引用非常多其他包,所以最好使用 Maven 引用这个包。

2、在项目根目录创建 core-site.xml :

<?xml version="1.0"?>
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://192.168.0.10:9000</value>
</property>
</configuration>

程序会自动寻找 CLASS_PATH 里面的 core-site.xml 文件,假如缺少这个文件的话,程序会使用本地文件系统。

3、创建 Helloworld.java:


import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FSDataOutputStream;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;


public class HelloWorld {


public static void main(String[] args) {
try {
HelloWorld helloWorld = new HelloWorld();
helloWorld.run();
} catch (IOException e) {
e.printStackTra…