您好,登錄后才能下訂單哦!
隨著互聯網技術的發展,對數據存儲的要求越來越高,在容量、安全性、備份、高可用性等方面都有很高的需求,很受歡迎的關系型數據庫有SQLServer、MySQL、Orcale等,非關系型數據庫有key、value型的Redis,Memcached,文檔型數據庫有MongoDB、CouchDB,還有列簇類型的Hbase、Cassandra。種類繁多,要學習的知識點越來越多,我們在技術選型時,必須遵循“沒有最好的技術,只有最適合的技術”。因為業務的需要有的折騰新的技術,接下來將初步研究Cassandra的過程做一下筆記,以便后期查閱。
1、初識Cassandra
Apache Cassandra是高度可擴展的,高性能的分布式NoSQL數據庫。 Cassandra旨在處理許多服務器上的大量數據,提供高可用性而無需擔心單點故障。
Cassandra具有能夠處理大量數據的分布式架構。 數據放置在具有多個復制因子的不同機器上,以獲得高可用性,而無需擔心單點故障。
官網:http://cassandra.apache.org/ 幫助文檔:http://cassandra.apache.org/doc/latest/contactus.html
目前主流的版本:Apache Cassandra 3.11 Apache Cassandra 3.0
Apache Cassandra 2.2 Apache Cassandra 2.1
目前沒發現Cassandra比較新書籍,網上能搜到的Cassandra 實戰 Cassandra 權威指南 是基于0.6與0.7,相對目前常用的版本已經很陳舊,所以當我們學習Cassandra 時,最好的方式是研究官方文檔。
1.1 Cassandra與關系數據庫比較
Cassandra | 關系數據庫 |
---|---|
Cassandra用于處理非結構化數據。 | RDBMS用于處理結構化數據。 |
Cassandra具有靈活的模式。 | RDBMS具有固定的模式。 |
在Cassandra中,表是“嵌套鍵值對”列表(行x 列鍵x 列值)。 | 在RDBMS中,表是數組的數組(一行x 列) |
在Cassandra中,keyspace 是包含與應用對應的數據的最外層的容器。 | 在RDBMS中,數據庫是包含與應用程序對應的數據的最外層的容器。 |
在Cassandra中,表或列族是鍵空間的實體。 | 在RDBMS中,表是數據庫的實體。 |
在Cassandra中,行是一個復制單元。 | 在RDBMS中,行是單條記錄。 |
在Cassandra中,列是一個存儲單元。 | 在RDBMS中,列是表示關系的屬性。 |
在Cassandra中,使用集合來表示關系。 | 在RDBMS中,有外鍵,連接等的概念。 |
在MySQL等關系型數據庫中,都有表和庫的概念,不同類型的數據庫中庫的創建等方式都是不一樣的,MySQL等關系型數據庫必須先用CREATE語句創建數據庫和表結構才能插入數據,而Redis中根據配置文件中數據庫的個數,已經生成若干個數據庫,只需要用SELECT切換即可。MongoDB又是特殊的一種特殊的數據庫,里面沒有表的概念是庫和集合,在一定的情形下,不用自己創建,可以直接插入數據非常的便捷。Cassandra里面沒有庫的概念,里面是keyspace
和表的實體。有些使用方法和MySQL等關系型數據庫相似,有些地方兩者又有很大的差距。
1.2 Cassandra與HBase比較
HBase | Cassandra |
---|---|
HBase是基于Bigtable(Google) | Cassandra基于DynamoDB(亞馬遜)。 它最初是由前亞馬遜工程師在Facebook開發的。 這是Cassandra支持多數據中心的原因之一。 |
HBase使用Hadoop基礎架構(Zookeeper,NameNode,HDFS)。 部署Hadoop的組織必須具備Hadoop和HBase的知識。 | Cassandra與Hadoop分開開發,其基礎工具和操作知識的要求與Hadoop不同。 然而,對于分析,許多Cassandra部署使用Cassandra + Storm(使用zookeeper)和/或Cassandra + Hadoop。 |
HBase-Hadoop基礎工具有幾個由Zookeeper,Name Node,HBase master和數據節點組成的“移動部件”,Zookeeper是集群的,自然是容錯的。名稱節點需要集群為容錯。 | Cassandra使用單個節點類型。 所有節點相等并執行所有功能。 任何節點都可以作為協調器,確保沒有Spof。 添加Storm或Hadoop當然會增加基礎設施的復雜性。 |
HBase非常適合進行基于范圍的掃描。 | Cassandra不支持基于范圍的行掃描,這可能在某些用例中是有限制的。 |
HBase提供跨越一個HBase集群的異步復制。 | Cassandra隨機分區提供了跨越單行的行復制。 |
HBase僅支持有序分區。 | Cassandra正式支持有序分區,但Cassandra沒有生產用戶使用有序分配,由于“熱點”創建并操作困難等熱點引起。 |
由于有序分區,HBase可以輕松地水平放置,同時還支持Rowkey范圍掃描。 | 如果數據存儲在Cassandra的列中以支持范圍掃描,Cassandra中行大小的實際限制是10 兆字節。 |
HBase支持原子比較和設置,HBase支持一行內的事務。 | Cassandra不支持原子比較和設置。 |
HBase不支持單行讀取負載平衡,一行只有一個區域服務器一次提供。 | Cassandra將支持單行讀取負載平衡。 |
Bloom過濾器可用于HBase作為另一種形式的索引。 | Cassandra使用bloom過濾器進行鍵查找。 |
觸發器由HBase中的協處理器功能支持。 | Cassandra不支持協處理器功能 |
近年來隨著大數據技術與產業鏈的發展,Hadoop、Spark、Storm等技術發展迅速,同時,好多做大數據相關的技術人員供不應求,身價翻了好多,讓我這種屌絲好生羨慕。而HBase是大數據存儲領域里的先鋒和基石。扮演著非常重要的角色。但是整體架構的體量確實不小,整體的架構比Cassandra復雜很多,無形中加大了系統的復雜度和可維護性。
1.3 使用Cassandra的互聯網公司
國外:
eBay:200+TB,400+M寫,100+M讀,應用場景:商品詳情頁上的Social Signals,如Like,Want,Own,Favorites等;用戶和商品的hunch taste graph;時間序列如移動通知,反作弊,soa,監控,日志服務等;
Netflix:包含288+96+60個實例的大規模集群,每秒110萬的寫操作,3個AWS EC2 美國東部region的zone自動復制副本,總計330萬寫操作/秒;
Apple:75000+ nodes, 10s of PBs,Millions ops/s, largest cluster 1000+ nodes
國內:
360 從公開的資料看,應該有至少1500臺服務器的集群。360選用cassandra的原因如下:團隊人員少,需求緊,選擇開源項目;無單點,無中心,適合在線業務;代碼易懂,團隊成員有代碼基礎;社區比較活躍。
杭州同盾科技 具體使用量暫不清楚,只知道底層的數據存儲等架構主要基于Cassandra,是一家大數據風控、反欺詐公司,發展非常迅速。
2、安裝與實踐
1、環境需求
Installing Cassandra Prerequisites The latest version of Java 8, either the Oracle Java Standard Edition 8 or OpenJDK 8. To verify that you have the correct version of java installed, type java -version. For using cqlsh, the latest version of Python 2.7. To verify that you have the correct version of Python installed, type python --version 根據官網知道文檔需要java8以及python2.7的支持 現在好多生產環境已經都在使用CentOS7.X操作系 統了,而CentOS7.X是自帶python2.7,我們自行檢查一下,缺少python2.7和java8的情況,請自己安裝 即可。
2、常見安裝方式
二進制安裝
源碼安裝
yum 等包管理器安裝
安裝指導網頁:http://cassandra.apache.org/download/
二進制安裝方式簡答快捷,不需要編譯,安裝包下載后,對網絡依賴比較低。
3、單機安裝測試
操作系統:CentOS 7.1
Cassandra:Cassandra 3.11.1
安裝方式:yum安裝 能夠上網,
yum源信息:
/etc/yum.repos.d/cassandra.repo [cassandra] name=Apache Cassandra baseurl= gpgcheck=1 repo_gpgcheck=1 gpgkey= 安裝 sudo yum install cassandra 啟動服務 service cassandra start 服務開機啟動 chkconfig cassandra on
Cassandra的相關內容比較多,后續再介紹常見的對keyspace的操作,以及對表操作,增刪改查,日常監控、安全與備份、高可用性集群等相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。