一共81個,開源大數據處理工具匯總(上)

本文一共分為上下兩部分。我們將針對大數據開源工具不同的用處來進行分類,并且附上了官網和部分下載鏈接,希望能給做大數據的朋友做個參考。下面是第一部分。

查詢引擎

一、Phoenix

貢獻者::Salesforce

簡介:這是一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Phoenix完全使用Java編寫,代碼位于GitHub上,并且提供了一個客戶端可嵌入的JDBC驅動。

Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase scan,并編排執行以生成標準的JDBC結果集。直接使用HBase API、協同處理器與自定義過濾器,對于簡單查詢來說,其性能量級是毫秒,對于百萬級別的行數來說,其性能量級是秒。

Phoenix最值得關注的一些特性有:

?嵌入式的JDBC驅動,實現了大部分的java.sql接口,包括元數據API

?可以通過多部行鍵或是鍵/值單元對列進行建模

?完善的查詢支持,可以使用多個謂詞以及優化的掃描鍵

?DDL支持:通過CREATE TABLE、DROP TABLE及ALTER TABLE來添加/刪除列

?版本化的模式倉庫:當寫入數據時,快照查詢會使用恰當的模式

?DML支持:用于逐行插入的UPSERT VALUES、用于相同或不同表之間大量數據傳輸的UPSERT ?SELECT、用于刪除行的DELETE

?通過客戶端的批處理實現的有限的事務支持

?單表——還沒有連接,同時二級索引也在開發當中

?緊跟ANSI SQL標準

Phoenix官方網站>>>

二、Stinger

貢獻者::Hortonworks

簡介:原叫Tez,下一代Hive,Hortonworks主導開發,運行在YARN上的DAG計算框架。

某些測試下,Stinger能提升10倍左右的性能,同時會讓Hive支持更多的SQL,其主要優點包括:

?讓用戶在Hadoop獲得更多的查詢匹配。其中包括類似OVER的字句分析功能,支持WHERE查詢,讓Hive的樣式系統更符合SQL模型。

?優化了Hive請求執行計劃,優化后請求時間減少90%。改動了Hive執行引擎,增加單Hive任務的被秒處理記錄數。

?在Hive社區中引入了新的列式文件格式(如ORC文件),提供一種更現代、高效和高性能的方式來儲存Hive數據。

?引入了新的運行時框架——Tez,旨在消除Hive的延時和吞吐量限制。Tez通過消除不必要的task、障礙同步和對HDFS的讀寫作業來優化Hive job。這將優化Hadoop內部的執行鏈,徹底加速Hive負載處理。

Stinger官方網站>>>

三、Presto

貢獻者::Facebook

簡介:Facebook開源的數據查詢引擎Presto ,可對250PB以上的數據進行快速地交互式分析。該項目始于 2012 年秋季開始開發,目前該項目已經在超過 1000 名 Facebook 雇員中使用,運行超過 30000 個查詢,每日數據在 1PB 級別。Facebook 稱 Presto 的性能比諸如 Hive 和 Map*Reduce 要好上 10 倍有多。

Presto 當前支持 ANSI SQL 的大多數特效,包括聯合查詢、左右聯接、子查詢以及一些聚合和計算函數;支持近似截然不同的計數(DISTINCT COUNT)等。

github源代碼下載>>>


四、Shark

簡介:Shark即Hive on Spark,本質上是通過Hive的HQL解析,把HQL翻譯成Spark上的RDD操作,然后通過Hive的metadata獲取數據庫里的表信息,實際HDFS上的數據和文件,會由Shark獲取并放到Spark上運算。Shark的特點就是快,完全兼容Hive,且可以在shell模式下使用rdd2sql()這樣的API,把HQL得到的結果集,繼續在scala環境下運算,支持自己編寫簡單的機器學習或簡單分析處理函數,對HQL結果進一步分析計算。

?Shark速度快的原因除了Spark平臺提供的基于內存迭代計算外,在設計上還存在對Spark上進行了一定的改造,主要有

?partial DAG execution:對join優化,調節并行粒度,因為Spark本身的寬依賴和窄依賴會影響并行計算和速度

基于列的壓縮和存儲:把HQL表數據按列存,每列是一個array,存在JVM上,避免了JVM GC低效,而壓縮和解壓相關的技術是Yahoo!提供的。

結來說,Shark是一個插件式的東西,在我現有的Spark和Hive及hadoop-client之間,在這兩套都可用的情況下,Shark只要獲取Hive的配置(還有metastore和exec等關鍵包),Spark的路徑,Shark就能利用Hive和Spark,把HQL解析成RDD的轉換,把數據取到Spark上運算和分析。在SQL on Hadoop這塊,Shark有別于Impala,Stringer,而這些系統各有自己的設計思路,相對于對MR進行優化和改進的思路,Shark的思路更加簡單明了些。

Shark官方網站>>>

五、Pig

簡介:Pig是一種編程語言,它簡化了Hadoop常見的工作任務。Pig可加載數據、表達轉換數據以及存儲最終結果。Pig內置的操作使得半結構化數據變得有意義(如日志文件)。同時Pig可擴展使用Java中添加的自定義數據類型并支持數據轉換。

Pig最大的作用就是對mapreduce算法(框架)實現了一套shell腳本 ,類似我們通常熟悉的SQL語句,在Pig中稱之為Pig Latin,在這套腳本中我們可以對加載出來的數據進行排序、過濾、求和、分組(group by)、關聯(Joining),Pig也可以由用戶自定義一些函數對數據集進行操作,也就是傳說中的UDF(user-defined functions)。

Pig官方網站>>>

六、ClouderaImpala

貢獻者::Cloudera

簡介:Cloudera Impala 可以直接為存儲在HDFS或HBase中的Hadoop數據提供快速,交互式的SQL查詢。除了使用相同的存儲平臺外, Impala和Apache Hive一樣也使用了相同的元數據,SQL語法(Hive SQL),ODBC驅動和用戶接口(Hue Beeswax),這就很方便的為用戶提供了一個相似并且統一的平臺來進行批量或實時查詢。

Cloudera Impala 是用來進行大數據查詢的補充工具。 Impala 并沒有取代像Hive這樣基于MapReduce的分布式處理框架。Hive和其它基于MapReduce的計算框架非常適合長時間運行的批處理作業,例如那些涉及到批量 Extract、Transform、Load ,即需要進行ETL作業。

Impala 提供了

?數據科學家或數據分析師已經熟知的SQL接口

?能夠在Apache Hadoop 的大數據中進行交互式數據查詢

? Single system for big data processing and analytics so customers can avoid costly modeling and ETL just for analytics

ClouderaImpala官方網站>>>

七、ApacheDrill

貢獻者::MapR

簡介:Apache Drill是是一個能夠對大數據進行交互分析、開源的分布式系統,且基于Google Dremel實現,它能夠運行在上千個節點的服務器集群上,且能在幾秒內處理PB級或者萬億條的數據記錄。Drill能夠幫助企業用戶快速、高效地進行Hadoop數據查詢和企業級大數據分析。Drill于2012年8月份由Apache推出。

從Drill官方對其架構的介紹中得知,其具有適于實時的分析和快速的應用開發、適于半結構化/嵌套數據的分析、兼容現有的SQL環境和Apache Hive等特征。另外,Drill的核心模塊是Drillbit服務,該服務模塊包括遠程訪問子模塊、SQL解析器、查詢優化器、任務計劃執行引擎、存儲插件接口(DFS、HBase、Hive等的接口)、分布式緩存模塊等幾部分,如下圖所示:


ApacheDrill官方網站>>>

八、Apache?Tajo

簡介:Apache Tajo項目的目的是在HDFS之上構建一個先進的數據倉庫系統。Tajo將自己標榜為一個“大數據倉庫”,但是它好像和之前介紹的那些低延遲查詢引擎類似。雖然它支持外部表和Hive數據集(通過HCatalog),但是它的重點是數據管理,提供低延遲的數據訪問,以及為更傳統的ETL提供工具。它也需要在數據節點上部署Tajo特定的工作進程。

Tajo的功能包括:

?ANSI SQL兼容

?JDBC 驅動

?集成Hive metastore能夠訪問Hive數據集

?一個命令行客戶端

?一個自定義函數API

Apache?Tajo官方網站>>>

九、Hive

簡介:hive是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。

Hive官方網站>>>

流式計算

一、Facebook?Puma

貢獻者:Facebook

簡介:實時數據流分析

二、Twitter Rainbird

貢獻者:Twitter

簡介:Rainbird一款基于Zookeeper, Cassandra, Scribe, Thrift的分布式實時統計系統,這些基礎組件的基本功能如下:

? Zookeeper,Hadoop子項目中的一款分布式協調系統,用于控制分布式系統中各個組件中的一致性。

?Cassandra,NoSQL中一款非常出色的產品,集合了Dynamo和Bigtable特性的分布式存儲系統,用于存儲需要進行統計的數據,統計數據,并且提供客戶端進行統計數據的查詢。(需要使用分布式Counter補丁CASSANDRA-1072)

??Scribe,Facebook開源的一款分布式日志收集系統,用于在系統中將各個需要統計的數據源收集到Cassandra中。

??Thrift,Facebook開源的一款跨語言C/S網絡通信框架,開發人員基于這個框架可以輕易地開發C/S應用。

用處

Rainbird可以用于實時數據的統計:

?統計網站中每一個頁面,域名的點擊次數

?內部系統的運行監控(統計被監控服務器的運行狀態)

?記錄最大值和最小值


三、Yahoo S4

貢獻者:Yahoo

簡介:S4(Simple Scalable Streaming System)最初是Yahoo!為提高搜索廣告有效點擊率的問題而開發的一個平臺,通過統計分析用戶對廣告的點擊率,排除相關度低的廣告,提升點擊率。目前該項目剛啟動不久,所以也可以理解為是他們提出的一個分布式流計算(Distributed Stream Computing)的模型。

S4的設計目標是:

·提供一種簡單的編程接口來處理數據流

·設計一個可以在普通硬件之上可擴展的高可用集群。

·通過在每個處理節點使用本地內存,避免磁盤I/O瓶頸達到最小化延遲

·使用一個去中心的,對等架構;所有節點提供相同的功能和職責。沒有擔負特殊責任的中心節點。這大大簡化了部署和維護。

·使用可插拔的架構,使設計盡可能的即通用又可定制化。

·友好的設計理念,易于編程,具有靈活的彈性

Yahoo S4官方網站>>>

四、TwitterStorm

貢獻者:Twitter

簡介:Storm是Twitter開源的一個類似于Hadoop的實時數據處理框架,它原來是由BackType開發,后BackType被Twitter收購,將Storm作為Twitter的實時數據分析系統。

實時數據處理的應用場景很廣泛,例如商品推薦,廣告投放,它能根據當前情景上下文(用戶偏好,地理位置,已發生的查詢和點擊等)來估計用戶點擊的可能性并實時做出調整。

storm的三大作用領域:

1.信息流處理(Stream Processing)

Storm可以用來實時處理新數據和更新數據庫,兼具容錯性和可擴展性,它 可以用來處理源源不斷的消息,并將處理之后的結果保存到持久化介質中。

2.連續計算(Continuous Computation)

Storm可以進行連續查詢并把結果即時反饋給客戶,比如將Twitter上的熱門話題發送到客戶端。

3.分布式遠程過程調用(Distributed RPC)

除此之外,Storm也被廣泛用于以下方面:

精確的廣告推送

實時日志的處理

TwitterStorm官方網站>>>

迭代計算

一、Apache Hama

簡介:Apache Hama是一個純BSP(Bulk Synchronous Parallel)計算框架,模仿了Google的Pregel。用來處理大規模的科學計算,特別是矩陣和圖計算。

?建立在Hadoop上的分布式并行計算模型。

?基于 Map/Reduce 和 Bulk Synchronous 的實現框架。

?運行環境需要關聯 Zookeeper、HBase、HDFS 組件。

Hama中有2個主要的模型:

– 矩陣計算(Matrix package)

– 面向圖計算(Graph package)

Apache?Hama官方網站>>>

二、Apache?Giraph

代碼托管地址GitHub

簡介:Apache Giraph是一個可伸縮的分布式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的Pregel,與它們 區別于則是是開源、基于 Hadoop 的架構等。

Giraph處理平臺適用于運行大規模的邏輯計算,比如頁面排行、共享鏈接、基于個性化排行等。Giraph專注于社交圖計算,被Facebook作為其Open Graph工具的核心,幾分鐘內處理數萬億次用戶及其行為之間的連接。

三、HaLoop

簡介:迭代的MapReduce,HaLoop——適用于迭代計算的Hadoop 。

Hadoop與HaLoop的不同

與Hadoop比較的四點改變:

1.提供了一套新的編程接口,更加適用于迭代計算;

HaLoop給迭代計算一個抽象的遞歸公式:

2.HaLoop的master進行job內的循環控制,直到迭代計算結束;

3.Task Scheduler也進行了修改,使得任務能夠盡量滿足data locality

4.slave nodes對數據進行cache并index索引,索引也以文件的形式保存在本地磁盤。

HaLoop官網>>>

四、Twister

簡介:Twister, 迭代式MapReduce框架,Twister是由一個印度人開發的,其架構如下:


在Twister中,大文件不會自動被切割成一個一個block,因而用戶需提前把文件分成一個一個小文件,以供每個task處理。在map階段,經過map()處理完的結果被放在分布式內存中,然后通過一個broker network(NaradaBroking系統)將數據push給各個reduce task(Twister假設內存足夠大,中間數據可以全部放在內存中);在reduce階段,所有reduce task產生的結果通過一個combine操作進行歸并,此時,用戶可以進行條件判定, 確定迭代是否結束。combine后的數據直接被送給map task,開始新一輪的迭代。為了提高容錯性,Twister每隔一段時間會將map task和reduce task產生的結果寫到磁盤上,這樣,一旦某個task失敗,它可以從最近的備份中獲取輸入,重新計算。

為了避免每次迭代重新創建task,Twister維護了一個task pool,每次需要task時直接從pool中取。在Twister中,所有消息和數據都是通過broker network傳遞的,該broker network是一個獨立的模塊,目前支持NaradaBroking和ActiveMQ。

離線計算

一、HadoopMapReduce

簡介:MapReduce是一種編程模型,用于大規模數據集(大于1TB)的并行運算。概念”Map(映射)”和”Reduce(歸約)”,和它們的主要思想,都是從函數式編程語言里借來的,還有從矢量編程語言里借來的特性。它極大地方便了編程人員在不會分布式并行編程的情況下,將自己的程序運行在分布式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定并發的Reduce(歸約)函數,用來保證所有映射的鍵值對中的每一個共享相同的鍵組。

HadoopMapReduce官方網站>>>

二、Berkeley Spark

簡介:Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的并行,Spark,擁有Hadoop MapReduce所具有的優點;但不同于MapReduce的是Job中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的map reduce的算法。

三、DataTorrent

簡介:DataTorrent基于Hadoop 2.x構建,是一個實時的、有容錯能力的數據流式處理和分析平臺,它使用本地Hadoop應用程序,而這些應用程序可以與執行其它任務,如批處理,的應用程序共存。該平臺的架構如下圖所示:


相關文章:DataTorrent 1.0每秒處理超過10億個實時事件

DataTorrent 將數據分析速度從“實時”提升至“現在時”

鍵值存儲

一、LevelDB


貢獻者:Google

簡介:Leveldb是一個google實現的非常高效的kv數據庫,目前的版本1.2能夠支持billion級別的數據量了。 在這個數量級別下還有著非常高的性能,主要歸功于它的良好的設計。特別是LMS算法。

LevelDB 是單進程的服務,性能非常之高,在一臺4核Q6600的CPU機器上,每秒鐘寫數據超過40w,而隨機讀的性能每秒鐘超過10w。

此處隨機讀是完全命中內存的速度,如果是不命中 速度大大下降。

LevelDB官方網站>>>

二、RocksDB

貢獻者:facebook

簡介:RocksDB雖然在代碼層面上是在LevelDB原有的代碼上進行開發的,但卻借鑒了Apache HBase的一些好的idea。在云計算橫行的年代,開口不離Hadoop,RocksDB也開始支持HDFS,允許從HDFS讀取數據。RocksDB支持一次獲取多個K-V,還支持Key范圍查找。LevelDB只能獲取單個Key。

RocksDB除了簡單的Put、Delete操作,還提供了一個Merge操作,說是為了對多個Put操作進行合并。

RocksDB提供一些方便的工具,這些工具包含解析sst文件中的K-V記錄、解析MANIFEST文件的內容等。RocksDB支持多線程合并,而LevelDB是單線程合并的。

RocksDB官方網站>>>

三、HyperDex

貢獻者:Facebook


HyperDex是一個分布式、可搜索的鍵值存儲系統,特性如下:

分布式KV存儲,系統性能能夠隨節點數目線性擴展

吞吐和延時都能秒殺現在風頭正勁的MonogDB,吞吐甚至強于Redis

使用了hyperspace hashing技術,使得對存儲的K-V的任意屬性進行查詢成為可能

官網:http://hyperdex.org/

四、TokyoCabinet


日本人Mikio?Hirabayashi(平林干雄)開發的一款DBM數據庫。Tokyo Cabinet 是一個DBM的實現。這里的數據庫由一系列key-value對的記錄構成。key和value都可以是任意長度的字節序列,既可以是二進制也可以是字符串。這里沒有數據類型和數據表的概念。

當 做為Hash表數據庫使用時,每個key必須是不同的,因此無法存儲兩個key相同的值。提供了以下訪問方法:提供key,value參數來存儲,按 key刪除記錄,按key來讀取記錄,另外,遍歷key也被支持,雖然順序是任意的不能被保證。這些方法跟Unix標準的DBM,例如GDBM,NDBM 等等是相同的,但是比它們的性能要好得多(因此可以替代它們) 。下一代KV存儲系統,支持strings、integers、floats、lists、maps和sets等豐富的數據類型。

TokyoCabinet官方網站>>>

五、Voldemort


Voldemort是一個分布式鍵值存儲系統,是Amazon’s Dynamo的一個開源克隆。特性如下:

支持自動復制數據到多個服務器上。

支持數據自動分割所以每個服務器只包含總數據的一個子集。

提供服務器故障透明處理功能。

支持可撥插的序化支持,以實現復雜的鍵-值存儲,它能夠很好的5.集成常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。

數據項都被標識版本能夠在發生故障時盡量保持數據的完整性而不會影響系統的可用性。

每個節點相互獨立,互不影響。

支持可插拔的數據放置策略

官網:http://project-voldemort.com/

六、Amazon?Dynamo

貢獻者:亞馬遜

簡介:Amazon Dynamo 是一個經典的分布式Key-Value 存儲系統,具備去中心化,高可用性,高擴展性的特點,但是為了達到這個目標在很多場景中犧牲了一致性。Dynamo在Amazon中得到了成功的應用,能夠跨數據中心部署于上萬個結點上提供服務,它的設計思想也被后續的許多分布式系統借鑒。如近來火熱的Cassandra,實際上就是基本照搬了Dynamo的P2P架構,同時融合了BigTable的數據模型及存儲算法。

Amazon Dynamo官方網站>>>

七、Tair

貢獻者:淘寶

簡介:tair 是淘寶自己開發的一個分布式 key/value 存儲引擎. tair 分為持久化和非持久化兩種使用方式. 非持久化的 tair 可以看成是一個分布式緩存. 持久化的 tair 將數據存放于磁盤中. 為了解決磁盤損壞導致數據丟失, tair 可以配置數據的備份數目, tair 自動將一份數據的不同備份放到不同的主機上, 當有主機發生異常, 無法正常提供服務的時候, 其于的備份會繼續提供服務.tair 的總體結構


tair 作為一個分布式系統, 是由一個中心控制節點和一系列的服務節點組成. 我們稱中心控制節點為config server. 服務節點是data server. config server 負責管理所有的data server, 維護data server的狀態信息. data server 對外提供各種數據服務, 并以心跳的形式將自身狀況匯報給config server. config server是控制點, 而且是單點, 目前采用一主一備的形式來保證其可靠性. 所有的 data server 地位都是等價的.

八、Apache?Accumulo


Apache Accumulo 是一個可靠的、可伸縮的、高性能的排序分布式的 Key-Value 存儲解決方案,基于單元訪問控制以及可定制的服務器端處理。Accumulo使用 Google BigTable 設計思路,基于 Apache Hadoop、Zookeeper 和 Thrift 構建。

官網http://accumulo.apache.org/

九、Redis

Redis是一個高性能的key-value存儲系統,和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。與memcached一樣,為了保證效率,數據都是緩存在內存中,區別的是Redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了主從同步。

Redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。

官網http://redis.io/

表格存儲

一、OceanBase

貢獻者:阿里巴巴

相關文章26頁PPT解密支撐支付寶交易的分布式數據庫系統——OceanBase

簡介:OceanBase是一個支持海量數據的高性能分布式數據庫系統,實現了數千億條記錄、數百TB數據上的跨行跨表事務,由淘寶核心系統研發部、運維、DBA、廣告、應用研發等部門共同完成。在設計和實現OceanBase的時候暫時摒棄了不緊急的DBMS的功能,例如臨時表,視圖(view),研發團隊把有限的資源集中到關鍵點上,當前 OceanBase主要解決數據更新一致性、高性能的跨表讀事務、范圍查詢、join、數據全量及增量dump、批量數據導入。

目前OceanBase已經應用于淘寶收藏夾,用于存儲淘寶用戶收藏條目和具體的商品、店鋪信息,每天支持4~5千萬的更新操作。等待上線的應用還包括CTU、SNS等,每天更新超過20億,更新數據量超過2.5TB,并會逐步在淘寶內部推廣。

OceanBase 0.3.1在Github開源,開源版本為Revision:12336。

官網http://alibaba.github.io/oceanbase/

二、Amazon?SimpleDB

貢獻者:亞馬遜

Amazon SimpleDB是一個分散式數據庫,以Erlang撰寫。同與Amazon EC2和亞馬遜的S3一樣作為一項Web 服務,屬于亞馬遜網絡服務的一部分。


正如EC2和S3,SimpleDB的按照存儲量,在互聯網上的傳輸量和吞吐量收取費用。 在2008年12月1日,亞馬遜推出了新的定價策略,提供了免費1 GB的數據和25機器小時的自由層(Free Tire)。 將其中的數據轉移到其他亞馬遜網絡服務是免費的。

它是一個可大規模伸縮、用 Erlang 編寫的高可用數據存儲。

官網http://aws.amazon.com/cn/simpledb/

三、Vertica

貢獻者:惠普

簡介:惠普2011年2月份起始3月21號完成收購Vertica。Vertica基于列存儲。基于列存儲的設計相比傳統面向行存儲的數據庫具有巨大的優勢。同時Vertica支持MPP(massively parallel processing)等技術,查詢數據時Vertica只需取得需要的列,而不是被選擇行的所有數據,其平均性能可提高50x-1000x倍。(查詢性能高速度快)

Vertica的設計者多次表示他們的產品圍繞著高性能和高可用性設計。由于對MPP技術的支持,可提供對粒度,可伸縮性和可用性的優勢。每個節點完全獨立運作,完全無共享架構,降低對共享資源的系統競爭。

Vertica的數據庫使用標準的SQL查詢,同時Vertica的架構非常適合云計算,包括虛擬化,分布式多節點運行等,并且可以和Hadoop/MapReduce進行集成。

Vertica官網http://www.vertica.com/

四、Cassandra

貢獻者:facebook

相關文章開源分布式NoSQL數據庫系統——CassandraCassandra與HBase的大數據對決 誰是勝者?

簡介:Cassandra是一套開源分布式NoSQL數據庫系統。它最初由Facebook開發,用于儲存收件箱等簡單格式數據,集GoogleBigTable的數據模型與Amazon Dynamo的完全分布式的架構于一身Facebook于2008將 Cassandra 開源,此后,由于Cassandra良好的可擴放性,被Digg、Twitter等知名Web 2.0網站所采納,成為了一種流行的分布式結構化數據存儲方案。


Cassandra是一個混合型的非關系的數據庫,類似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存儲系統)更豐富,但支持度卻不如文檔存儲MongoDB(介于關系數據庫和非關系數據庫之間的開源產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。支持的數據結構非常松散,是類似json的bjson格式,因此可以存儲比較復雜的數據類型)。Cassandra最初由Facebook開發,后轉變成了開源項目。它是一個網絡社交云計算方面理想的數據庫。以Amazon專有的完全分布式的Dynamo為基礎,結合了Google BigTable基于列族(Column Family)的數據模型。P2P去中心化的存儲。很多方面都可以稱之為Dynamo 2.0。

Cassandra官網http://cassandra.apache.org/

五、HyperTable


簡介:Hypertable是一個開源、高性能、可伸縮的數據庫,它采用與Google的Bigtable相似的模型。在過去數年中,Google為在PC集群 上運行的可伸縮計算基礎設施設計建造了三個關鍵部分。


第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的文件系統,提供了一個全局的命名空間。它通過跨機器(和跨機架)的文件數據復制來達到高可用性,并因此免受傳統 文件存儲系統無法避免的許多失敗的影響,比如電源、內存和網絡端口等失敗。第二個基礎設施是名為Map-Reduce的計算框架,它與GFS緊密協作,幫 助處理收集到的海量數據。第三個基礎設施是Bigtable,它是傳統數據庫的替代。Bigtable讓你可以通過一些主鍵來組織海量數據,并實現高效的 查詢。Hypertable是Bigtable的一個開源實現,并且根據我們的想法進行了一些改進。

HyperTable官網http://hypertable.org/

六、FoundationDB

簡介:支持ACID事務處理的NoSQL數據庫,提供非常好的性能、數據一致性和操作彈性。

2015年1月2日,FoundationDB已經發布了其key-value數據庫的3.0版本,主要專注于可伸縮性和性能上的改善。FoundationDB的CEO David Rosenthal在一篇博客上宣布了新的版本,其中展示了FoundationDB 3.0在可伸縮性方面的數據,它可以在一個32位的c3.8xlarge EC2實例上每秒寫入1440萬次;這在性能上是之前版本的36倍。

除了性能和可伸縮性的改善之外,FoundationDB 3.0還包含了對監控支持的改善。這種監控機制不僅僅是簡單的機器檢查,它添加了對多種潛在的硬件瓶頸的診斷,并且把那些高層級的信息整合到現有監控基礎架構中。

官網https://foundationdb.com/

七:HBase

貢獻者:?Fay Chang 所撰寫的“Bigtable


簡介:HBase是一個分布式的、面向列的開源數據庫,該技術來源于 Fay Chang 所撰寫的Google論文“Bigtable:一個結構化數據的分布式存儲系統”。就像Bigtable利用了Google文件系統(File System)所提供的分布式數據存儲一樣,HBase在Hadoop之上提供了類似于Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不同于一般的關系數據庫,它是一個適合于非結構化數據存儲的數據庫。另一個不同的是HBase基于列的而不是基于行的模式。

官網http://hbase.apache.org/

文件存儲

一、CouchDB

簡介:CouchDB是用Erlang開發的面向文檔的數據庫系統,最近剛剛發布了1.0版本(2010年7月14日)。CouchDB不是一個傳統的關系數據庫,而是面向文檔的數據庫,其數據存儲方式有點類似lucene的index文件格式,CouchDB最大的意義在于它是一個面向web應用的新一代存儲系統,事實上,CouchDB的口號就是:下一代的Web應用存儲系統。


特點:

一、CouchDB是分布式的數據庫,他可以把存儲系統分布到n臺物理的節點上面,并且很好的協調和同步節點之間的數據讀寫一致性。這當然也得靠Erlang無與倫比的并發特性才能做到。對于基于web的大規模應用文檔應用,分布式可以讓它不必像傳統的關系數據庫那樣分庫拆表,在應用代碼層進行大量的改動。

二、CouchDB是面向文檔的數據庫,存儲半結構化的數據,比較類似lucene的index結構,特別適合存儲文檔,因此很適合CMS,電話本,地址本等應用,在這些應用場合,文檔數據庫要比關系數據庫更加方便,性能更好。

三、CouchDB支持REST API,可以讓用戶使用JavaScript來操作CouchDB數據庫,也可以用JavaScript編寫查詢語句,我們可以想像一下,用AJAX技術結合CouchDB開發出來的CMS系統會是多么的簡單和方便。

其實CouchDB只是Erlang應用的冰山一角,在最近幾年,基于Erlang的應用也得到的蓬勃的發展,特別是在基于web的大規模,分布式應用領域,幾乎都是Erlang的優勢項目。

官網http://couchdb.apache.org/

二、MongoDB

簡介:MongoDB 是一個基于分布式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。

相關文章MongoDB的基本特性與內部構造大數據吃香 創業公司MongoDB估值達16億美元


特點

它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:

*面向集合存儲,易存儲對象類型的數據。

mongodb集群參考

mongodb集群參考

*模式自由。

*支持動態查詢。

*支持完全索引,包含內部對象。

*支持查詢。

*支持復制和故障恢復。

*使用高效的二進制數據存儲,包括大型對象(如視頻等)。

*自動處理碎片,以支持云計算層次的擴展性。

*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。

*文件存儲格式為BSON(一種JSON的擴展)。

*可通過網絡訪問。

官網https://www.mongodb.org/

三、Tachyon

貢獻者:Haoyuan Li(李浩源)

簡介:Tachyon是一個分布式內存文件系統,可以在集群里以訪問內存的速度來訪問存在tachyon里的文件。把Tachyon是架構在最底層的分布式文件存儲和上層的各種計算框架之間的一種中間件。主要職責是將那些不需要落地到DFS里的文件,落地到分布式內存文件系統中,來達到共享內存,從而提高效率。同時可以減少內存冗余,GC時間等。


Tachyon架構

Tachyon的架構是傳統的Master—slave架構,這里和Hadoop類似,TachyonMaster里WorkflowManager是 Master進程,因為是為了防止單點問題,通過Zookeeper做了HA,可以部署多臺Standby Master。Slave是由Worker Daemon和Ramdisk構成。這里個人理解只有Worker Daemon是基于JVM的,Ramdisk是一個off heap memory。Master和Worker直接的通訊協議是Thrift。

下圖來自Tachyon的作者Haoyuan Li:


下載地址https://github.com/amplab/tachyon

四、KFS

簡介:GFS的C++開源版本,Kosmos distributed file system (KFS)是一個專門為數據密集型應用(搜索引擎,數據挖掘等)而設計的存儲系統,類似于Google的GFS和Hadoop的HDFS分布式文件系統。 KFS使用C++實現,支持的客戶端包括C++,Java和Python。KFS系統由三部分組成,分別是metaserver、chunkserver和client library。

官網:http://code.google.com/p/kosmosfs/

五、HDFS


簡介:Hadoop分布式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware)上的分布式文件系統。它和現有的分布式文件系統有很多共同點。但同時,它和其他的分布式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。HDFS在最開始是作為Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。

官網http://hadoop.apache.org/

資源管理

一、TwitterMesos

開發者:Twitter研發人員John Oskasson


簡介:Apache Mesos是由加州大學伯克利分校的AMPLab首先開發的一款開源群集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架構,由于其開源性質越來越受到一些大型云計算公司的青睞,例如Twitter、Facebook等。

參考文章Mesos漸入主流,Twitter模式有望“無限復制”-CSDN.NET

官網http://mesos.apache.org/

二、Hadoop Yarn

Hadoop 新 MapReduce 框架 Yarn。為從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架完全重構,發生了根本的變化。新的 Hadoop MapReduce 框架命名為 MapReduceV2 或者叫 Yarn,其架構圖如下圖所示:


Yarn 框架相對于老的 MapReduce 框架什么優勢呢?我們可以看到:

1、這個設計大大減小了 JobTracker(也就是現在的 ResourceManager)的資源消耗,并且讓監測每一個 Job 子任務 (tasks) 狀態的程序分布式化了,更安全、更優美。

2、在新的 Yarn 中,ApplicationMaster 是一個可變更的部分,用戶可以對不同的編程模型寫自己的 AppMst,讓更多類型的編程模型能夠跑在 Hadoop 集群中,可以參考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。

3、對于資源的表示以內存為單位 ( 在目前版本的 Yarn 中,沒有考慮 cpu 的占用 ),比之前以剩余 slot 數目更合理。

4、老的框架中,JobTracker 一個很大的負擔就是監控 job 下的 tasks 的運行狀況,現在,這個部分就扔給 ApplicationMaster 做了,而 ResourceManager 中有一個模塊叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是監測 ApplicationMaster 的行狀況,如果出問題,會將其在其他機器上重啟。

5、Container 是 Yarn 為了將來作資源隔離而提出的一個框架。這一點應該借鑒了 Mesos 的工作,目前是一個框架,僅僅提供 java 虛擬機內存的隔離 ,hadoop 團隊的設計思路應該后續能支持更多的資源調度和控制 , 既然資源表示成內存量,那就沒有了之前的 map slot/reduce slot 分開造成集群資源閑置的尷尬情況。

官網:http://hadoop.apache.org/

36大數據?一共81個,開源大數據處理工具匯總(上)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,401評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,011評論 3 413
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,263評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,543評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,323評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,874評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,968評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,095評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,605評論 1 331
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,551評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,720評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,242評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,961評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,358評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,612評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,330評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,690評論 2 370

推薦閱讀更多精彩內容