메뉴 건너뛰기

Cloudera, BigData, Semantic IoT, Hadoop, NoSQL

Cloudera CDH/CDP 및 Hadoop EcoSystem, Semantic IoT등의 개발/운영 기술을 정리합니다. gooper@gooper.com로 문의 주세요.


1. 다운로드

  http://cassandra.apache.org/download/

  http://www.apache.org/dyn/closer.lua/cassandra/3.4/apache-cassandra-3.4-bin.tar.gz


2. 압축풀기

  tar xvfz apache-cassandra-3.4-bin.tar.gz


3. 링크생성

  ln -s apache-cassandra-3.4 cassandra


4. 환경변수 추가(카산드라가 설치되는 모든 서버에 설정함, root로 실행)

   vi /etc/profile


   #classandra

   export CASSANDRA_HOME=$HOME/cassandra


   *변경사항 반영 

   source /etc/profile


5. ./conf/cassandra.yaml 정보수정(각 노드 모두 수정필요함)

  가. cluster_name: 'GSDA Cluster'

  나. data_file_directories:

    - /data/cassandra/data

  다. commitlog_directory: /data/cassandra/commitlog

  라. saved_caches_directory: /data/cassandra/saved_caches

  라-1. hints_directory: /data/cassandra/hints

  마. listen_address: sda1  (각 서버에 고유한 주소지정)

  바. rpc_address: 0.0.0.0(대표(마스타) 서버는 0.0.0.0으로 하고 나머지 서버도 모두 0.0.0.0으로 지정)

  사. endpoint_snitch: RackInferringSnitch

  아. broadcast_rpc_address: sda1 (각 서버에 고유한 주소지정) <- 1.2.11에서는 지원되지 않음

  자. - seeds: "sda1"로 지정함(cluster에서 대표가 되는 서버의 주소로 지정함)

  차. start_rpc: true로 변경함(defalt는 false) <= 활성화 시켜줘야 client program에서 접근하여 명령을 실행할 수 있다.

       (혹은 start_rpc값을 변경하지 않고, bin/nodetool enablethrift명령를 실행하여 직접 작동시킬 수도 있다)

       => 대표(마스타)서버에서만 실행할것(?)

  카. listen_on_broadcast_address: true

  하. broadcast_address: gsda1(각 서버에 고유한 주소지정)


5-1. 각 서버에 scp로 복사(서버에 특화된 설정값(listen_address, broadcast_address, broadcast_rpc_address)을 바꿀것)

scp -r -P 22 apache-cassandra-3.10 root@gsda2:$HOME

scp -r -P 22 apache-cassandra-3.10 root@gsda3:$HOME

scp -r -P 22 apache-cassandra-3.10 root@gsda4:$HOME

scp -r -P 22 apache-cassandra-3.10 root@gsda5:$HOME

6. cassandra기동(설치된 모든 서버에서 실행, -f는 background가 아닌 foreground로 기동,-R을쓰면 root로 기동할 수 있음(비추천))

  bin/cassandra -R (필요시 -f)


 * cassandra내리기 : ps -ef | grep cassandra해서 pid를 찾고 kill pid로 데몬을 죽여서 cassandra데몬을 내린다.


7. 각종 정보 확인

  가. 디스크 강제 쓰기 : bin/nodetool -h localhost flush  (-h localhost 생략가능)

  나. 요청작업 상태보기 : bin/nodetool -h localhost tpstats (-h localhost 생략가능)

  다. thrift 상태보기 : bin/nodetool -h localhost statusthrift (-h localhost 생략가능)

  라. cfg 상태보기(db크기등) : bin/nodetool -h localhost cfstats (-h localhost 생략가능)

  마. 클러스터 구성 정보 : bin/nodetool status (rpc_address를 0.0.0.0으로 지정햔 서버에서 명령을 주면 데몬이 죽어버림(?))

root@gsda4:~/cassandra/bin# nodetool status
Datacenter: 251
===============
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
--  Address          Load       Tokens       Owns (effective)  Host ID                               Rack
UN  104.251.212.191  282.33 KiB  256          49.1%             1de4b4b4-ac78-45c0-9009-051fd09634e6  212
UN  104.251.212.146  219.62 KiB  256          48.0%             0ec06870-f209-4dd8-8013-cc0fe101e57c  212
UN  104.251.212.192  206.73 KiB  256          50.5%             95f9daf7-6b66-435f-9d0d-9bb0b81e4327  212
UN  104.251.212.183  311.93 KiB  256          52.4%             4060b53b-c4e1-42ef-a166-81c44f0bceaf  212

* jps로 데몬이 확인되지 않을 수 있는데 이때는 "ps -ef |grep cass"를 이용하여 확인한다.

* cassandra관련 포트

 7199 JMX monitoring port

 7000 Inter-node cluster

 7001 SSL inter-node cluster

 9042 CQL native Transport Port

 9160 Thrift

 1024-65355  Random port required by JMX, com.sun.management.jmxremote.rmi.port(cassandra-env.sh)를 지정하면

 랜덤하게 부여하지 않고 고정할 수 있다.


위로