大資料開源框架特點大總結

JeemyJohn發表於2016-12-06

1. ElasticSearch

1.1 ElasticSearch的優點:

  • 高併發。實測es單機分配10g記憶體單例項,寫入能力1200qps,60g記憶體、12核CPU起3個例項預計可達到6000qps。
  • 同機房單條資料寫入平均3ms(比mysql慢,mg不清楚)
  • 容錯能力比mg強。比如1主多從,主片掛了從片會自動頂上
  • 滿足大資料下實時讀寫需求,無需分庫(不存在庫的概念)。
  • 易擴充套件。例項間做下配置即可擴充套件併發性和容積,自動分配的寫入機制,無需操心傳統db中多主同步的詬病
  • 支援較複雜的條件查詢,group by、排序都不是問題
  • 具有一定的關係性,但不用擔心大欄位的問題

1.2 ElasticSearch的缺點:

  • 不支援事務;
  • 讀寫有一定延時;
  • 無許可權管理.

2. Lucene

       Lucene 是一個 JAVA 搜尋類庫,它本身並不是一個完整的解決方案,需要額外的開發工作。

2.1 Lucene的優點

       成熟的解決方案,有很多的成功案例。apache 頂級專案,正在持續快速的進步。龐大而活躍的開發社群,大量的開發人員。它只是一個類庫,有足夠的定製和優化空間:經過簡單定製,就可以滿足絕大部分常見的需求;經過優化,可以支援 10億+ 量級的搜尋。

2.2 Lucene的缺點

       需要額外的開發工作。所有的擴充套件,分散式,可靠性等都需要自己實現;非實時,從建索引到可以搜尋中間有一個時間延遲,而當前的“近實時”(Lucene Near Real Time search)搜尋方案的可擴充套件性有待進一步完善。

3. Redis

3.1 Redis的優點

  • 讀寫效能優異
  • 支援資料持久化,支援AOF和RDB兩種持久化方式
  • 支援主從複製,主機會自動將資料同步到從機,可以進行讀寫分離。
  • 資料結構豐富:除了支援string型別的value外還支援string、hash、set、sortedset、list等資料結構。

3.2 Redis的缺點

  • Redis不具備自動容錯和恢復功能,主機從機的當機都會導致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的IP才能恢復。
  • 主機當機,當機前有部分資料未能及時同步到從機,切換IP後還會引入資料不一致的問題,降低了系統的可用性。
  • Redis的主從複製採用全量複製,複製過程中主機會fork出一個子程式對記憶體做一份快照,並將子程式的記憶體快照儲存為檔案傳送給從機,這一過程需要確保主機有足夠多的空餘記憶體。若快照檔案較大,對叢集的服務能力會產生較大的影響,而且複製過程是在從機新加入叢集或者從機和主機網路斷開重連時都會進行,也就是網路波動都會造成主機和從機間的一次全量的資料複製,這對實際的系統運營造成了不小的麻煩。
  • Redis較難支援線上擴容,在叢集容量達到上限時線上擴容會變得很複雜。為避免這一問題,運維人員在系統上線時必須確保有足夠的空間,這對資源造成了很大的浪費。

4. HBase

4.1 HBase的優點

  • 列的可以動態增加,並且列為空就不儲存資料,節省儲存空間.

  • Hbase自動切分資料,使得資料儲存自動具有水平scalability.

  • Hbase可以提供高併發讀寫操作的支援

4.2 HBase的缺點

  • 不能支援條件查詢,只支援按照Row key來查詢。

  • 暫時不能支援Master server的故障切換,當Master當機後,整個儲存系統就會掛掉。

5. Hadoop

5.1 Hadoop的優點

  • Hadoop叢集的擴充套件性是其一大特點,Hadoop可以擴充套件至數千個節點,對資料持續增長,資料量特別巨大的需求很合適。
  • Hadoop的成本是其另一大優勢,由於Hadoop是開源專案,而且不僅從軟體上節約成本,硬體上的要求也不高。目前去IOE潮流風行,低成本的Hadoop也是一大推手。
  • Hadoop生態群活躍,其周邊開源專案豐富,HBase, Hive,Impala等等基礎開源專案眾多。

5.2 Hadoop的缺點

  • 全量場景,任務內序列
  • 重吞吐量,響應時間完全沒有保證
  • 中間結果不可見,不可分享
  • 單輸入單輸出,鏈式浪費嚴重
  • 鏈式MR不能並行
  • 粗粒度容錯,可能會造成陷阱
  • 圖計算不友好
  • 迭代計算不友好
  • 不能支援秒級計算,只適合做離線資料分析任務

持續更新中……

相關文章