Cassandra技術介紹之配置

2021-09-19 20:15:39 字數 4516 閱讀 3762

所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的;

比較關鍵的幾個配置有:cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個cassandra的集群是由多個節點組成的,每乙個節點可以乙個物理機,虛擬機器,或者是乙個程序等等,由這些節點組成了cassandra的集群。那麼這個集群中的各個節點的cassandra.yaml裡的cluster name,partitoner,snitch都至少需要保持一致才可以,seed nodes 雖然不強制需要保持一致,但是建議最好是一致的,而且我們生產環境也是保持一致的。

配置項名字

配置項解釋

預設值建議值

cluster_name

集群的名字,在邏輯上隔離各個集群

test cluster

可以區別集群的唯一名稱

num_tokens

vnode的使用方式,集群中的這個配置節點將會被分配的token的數量,如果這個token數量越多,那麼這個節點將會儲存更多的資料,如果集群的各個節點的硬體配置一樣,那麼建議該配置token數量都一致。如果這個配置項沒有被配置的話,cassandra將會給這個節點分配預設的1個token,token的值由initial_token的配置確定。

256(預設配置)

256initial_token

非vnode使用方式,需要人工基於partitioner計算賦值,比如:如果是使用randompartitioner,那麼就需要計算md5值,4個節點的話,每個節點的md5 token值,建議均分0-2^128 -1 這個區間無無

seed_provider

seeds: 各個ip之間用,進行連線,seed 是可以選擇集群中的某個或者某幾個節點進行配置,所有的集群種的節點都會先和seed節點溝通,獲取集群狀態

需要基於集群ip做配置

partitioner

partitioner的意思就是允許你的partition key以何種方式在集群種放置,放置到哪個節點,而方式的方式會結合上面的num_tokens或者initial_token的配置來查詢;也就是集群配置了randompartitioner的放置策略,然後一條記錄在集群中會以md5方式進行計算其歸屬的節點,然後到對應節點進行讀寫

org.apache.cassandra.dht.murmur3partitioner

見下表endpoint_snitch

snitch的作用是:讓cassandra知道你的網路拓撲;讓cassandra可以放置副本:把機器歸類為datacenter以及rack

******snitch

見下面表

listen_address

本節點需要繫結的ip,這裡address和下面的inte***ce只能選乙個去設定

inetaddress.getlocalhost()函式獲取的ip

listen_inte***ce

網絡卡介面

native_transport_port

cql繫結的埠

9042

rpc_address

cql的服務繫結的ip

同listen_address

storage_port

內部節點間進行通訊的埠,比如gossip協議

7000

ssl_storage_port

與上述埠只能存乙個,如果是在公網環境下建議用這個埠

7001

資料儲存相關

data_file_directories

-儲存資料的目錄,如果是掛了多塊磁碟的話,各個磁碟路徑前加- ;

cassandra_home的目錄下預設建data目錄

基於自己的掛盤情況設定

commitlog_directory

commit log的配置目錄,也就是wal 的目錄,如果是hdd盤,建議與data目錄分開

cassandra_home下的data目錄下的commitlog目錄

disk_failure_policy

data disk failure的策略,當data資料盤出現磁碟故障的時候,我們的cassandra應該怎麼做

stop

見下表commit_failure_policy

當commitlog資料盤出現磁碟故障的時候,我們的cassandra應該怎麼做

stop

見下表partitioner

partitioner名稱

意義org.apache.cassandra.dht.murmur3partitioner

使用murmur的hash演算法進行值的計算具體演算法含義可以自行谷歌

org.apache.cassandra.dht.randompartitioner

計算md5 的hash;murmur3partitioner比randompartitioner計算hash會快很多。

org.apache.cassandra.dht.byteorderedpartitioner

把key以原生的byte儲存和下面的string 是大體一類,計算key效能比下面好一點點

org.apache.cassandra.dht.orderpreservingpartitioner

所有的key的hash計算就是計算成乙個utf-8的字串,但是這種方式只是可以提供較好的key排序操作。但是會造成一些key的傾斜,比如某些node的key儲存量比別的node多;

endpoint_snitch

snitch名稱

意義******snitch

沒有機架感知的一種snitch,在多dc的環境下不適合部署,選擇這種方式的話,那麼副本策略:replication strategy 應該選擇******strategy

gossipingpropertyfilesnitch

yaml裡面寫的是建議在生產環境部署的,本節點的dc以及rack資訊在cassandra-rackdc.properties配置,別的節點可以通過gossip獲取得到該節點的dc rack資訊,這是一種機架感知的snitch,這裡是只需要配置自己的節點資訊

propertyfilesnitch

一種機架感知snitch之一,需要在cassandra-rackdc.properties配置上所有的ip對應的機架 dc等資訊;如果不配置就是認為是預設的dc1,rac1,一般副本策略建議是networktopology strategy

rackinferringsnitch

認為使用這種snitch的都是在一直的網路環境中,主要是通過ip的二進位制分組做比較,如果2個ip的第二個8bit的組的數字是一樣的就認為是在乙個dc下面,如果是第三個8bit組是一樣的就認為是乙個機架上。

ec2multiregionsnitch

用於在公網環境下的多region下的snitch,這時候需要為公網環境下的埠開防火牆

ec2snitch

適用於aws的ec2的部署,在乙個region下,region以及az的資訊是通過ec2的api獲取的,region被當做dc,az當做機架;

failure_policy

failure policy名稱

disk_failure_policy意義

commit_failure_policy意義

die當出現檔案系統error或者單個sstable的error的實時,停止gossip互動client的請求以及kill jvm

停止節點程序,kill jvm

stop_paranoid

單個sstable出現error的時候,會停掉gossip互動,以及拒絕client請求;如果是啟動的時候,會kill jvm

無此配置

stop

如果出現fs問題的時候會停掉gossip互動以及拒絕client請求,但是節點可以接收jmx的觀測;啟動的時候出現error則會kill jvm

停掉節點,但是節點可以接收jmx的觀測

best_effort

暫停使用出現問題的磁碟,且盡可能的返回資料給使用者,這就表明可能會出現造成讀到過期資料,比如使用one這個一致性的時候

無此配置

ignore

忽略檔案系統或者磁碟故障,讓請求失敗

忽略error,讓comit 失敗

stop_commit

讓commit log操作失敗,但是依舊提供讀

注意

class可以有******strategy和networktopologystrategy,其中******strategy意思是:test_keyspace的副本的放置是在乙個dc內部,擺放的規則是簡單策略,一般是按照node的ip adress的順序擺放;networktopologystrategy:副本會穿過多個dc進行擺放,詳細的規則後續會介紹;

釘釘群:

Cassandra技術介紹之配置

所有的配置都在cassandra的安裝目錄下面的conf裡,conf目錄下面有cassandra.yaml這個檔案,所有的配置都可以通過修改這個檔案而達到目的 比較關鍵的幾個配置有 cluster name,partitioner,snitch,以及seed nodes的配置。如上圖,我們知道乙個c...

cassandra技術分享

背景 cassandras是由facebook的兩位工程開發出來的一款nosql資料庫。它兼有dynamo和bigtable的優點。主要有下面一些特點 安裝與配置 cassandra的安裝和配置都比較簡單。如果不做集群,直接把下下來的壓縮包解壓後,就可以使用。如果要做集群,那就需要配置conf目錄下...

密碼技術之基本介紹

想象一下 alice 和 bob 傳送郵件的場景,傳送的郵件稱作訊息,傳送訊息的 alice 稱為傳送者,接收訊息的 bob 稱為接收者,當經過網路時,訊息有可能會被第三方竊聽,竊聽訊息的稱為竊聽者。為了不被竊聽者知道內容,alice 傳送者 可以將訊息加密傳送出去,加密前的訊息稱為明文,加密後的訊...