2018年1月27日 星期六

[Cassandra] 基本安裝方式


介紹Cassandra基本安裝方式

依照此Cassandra安裝方式, 就可以建立起叢集, 但像Cassandra這種分散式系統還是建議用container(例如docker)的方式才可以快速建立或移除, 用docker建立時有幾個要注意的地方

  • docker若使用軟體定義路由的方式會降低50%吞吐量, 建議使用本機網路, 但會限制每個container只能部屬一台節點
  • 從資料管理角度來說會希望資料目錄設定在docker外部, 這讓升級或是關閉容器仍可保留資料


在此是使用一般安裝方式的, 版本是apache cassandra(環境為Ubuntu Linux)

Cassandra
Cassandra Spark Connector
pip install cqlsh

使用
Spark-submit …
--driver-class-path /usr/local/spark2/jars/sqljdbc42.jar --packages datastax:spark-cassandra-connector:2.0.0-M2-s_2.11

安裝
需要安裝jdk1.8以上(對應cassandra版本)
tar -xvf apache-cassandra-3.9-bin.tar.gz Cassandra
sudo mkdir /usr/local/cassandra
sudo mv cassandra3.X /usr/local/cassandra
測試
bin目錄下 cassandra -f
bin/nodetool status
bin/nodetool gossipinfo
bin/nodetool repair 修改REPLICATION 要做repair讓兩邊資料同步
cqlsh 192.168.0.41
指令
SimpleStrategy:單一數據中心
NetworkTopologyStrategy:多數據中心
replication factor 2表示一行數據有2份副本,每份副本保存在不同的節點上
CREATE KEYSPACE mykeyspace WITH REPLICATION = {
    'class' : 'SimpleStrategy',
'replication_factor' : 2
};
create keyspace if not exists cycling with replication = {
    'class' : 'NetworkTopologyStrategy',
    'datacenter1' : 2
};
alter keyspace system_auth with replication = {
    'class' : 'NetworkTopologyStrategy',
    'dc1'  : 3, 'dc2' : 2
} ;
USE mykeyspace;
CREATE TABLE users (  user_id int PRIMARY KEY,  fname text,  lname text);
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');

SELECT * FROM users;
describe tables;
修改cassandra.yaml
修改cassandra.yaml(/usr/local/cassandra/conf)
listen address定義了叢集中其他節點的連線方式。所以多節點的叢集必須將這個改成他實際的網絡卡地址。rpc address定義了這個節點在哪裡監聽客戶端。所以可以跟nodeIP地址一樣
seed: node啟動時能找到其他node的服務。適合設置較為穩定的node,叢集環境下可多個seeds

cluster_name 'TestCluster'
-seeds 192.168.0.41(要當成seed的那台,也可以多節點)
listen_address 192.168.0.41(42)
rpc_address 192.168.0.41(42)
endpoint_snitch GossipingPropertyFileSnitch
auto_bootstrap false(要當成seed的那台設定就好,空的叢集起來時)

*/etc/cassandra/cassandra-rackdc.properties
dc1 to datacenter1
兩台設定不同rack1,2


===========常用配置===========
1cluster_name
同一集群需要配置成相同的名字才可以
2data_file_directories
數據文件存放的文件。預設是$CASSANDRA_HOME/data/data
3commitlog_directory
commitlog_directorydata_file_directories可配置於不同的目的地,充分利用多硬碟的IO能力。
4seed_provider.seeds
外面系統呼叫的server就改成seeds
5listen_address : listen to other C* node 的位址
6rpc_address : listen to client call的位址, cqlsh的入口, 預設為listen_address
安裝的IP
7)各種timeout
如果你需要Cassandra集群用於數據分析,那么你就需要各种timeout的值。比如:
# How long the coordinator should wait for read operations to complete
read_request_timeout_in_ms: 100000

建立cassandra 叢集
移動到data1叢集
ssh data1
sudo mkdir /usr/local/cassandra
sudo chown charles:charles /usr/local/cassandra
exit
or
sudo scp -r /usr/local/cassandra charles@data1:/usr/local
再針對參數個別修改

cassandra UI tool
企業版才支援nosql free but no open source
http://dbeaver.jkiss.org/download/enterprise/
cassandra .net
Datastax cassandra driver
工具 -> nuget管理套件 -> nuget主控台
cassandra程序已開啟錯誤處理
Port already in use: 7199
sudo pkill -f CassandraDaemon

沒有留言:

張貼留言