原文: http://www.36dsj.com/archives/24852html
本文一共分爲上下兩部分。咱們將針對大數據開源工具不一樣的用處來進行分類,而且附上了官網和部分下載連接,但願能給作大數據的朋友作個參考。下面是第一部分。java
1、Phoenixnode
貢獻者::Salesforcegit
簡介:這是一個Java中間層,可讓開發者在Apache HBase上執行SQL查詢。Phoenix徹底使用Java編寫,代碼位於GitHub上,而且提供了一個客戶端可嵌入的JDBC驅動。github
Phoenix查詢引擎會將SQL查詢轉換爲一個或多個HBase scan,並編排執行以生成標準的JDBC結果集。直接使用HBase API、協同處理器與自定義過濾器,對於簡單查詢來講,其性能量級是毫秒,對於百萬級別的行數來講,其性能量級是秒。web
Phoenix最值得關注的一些特性有:redis
❶嵌入式的JDBC驅動,實現了大部分的java.sql接口,包括元數據API
❷能夠經過多部行鍵或是鍵/值單元對列進行建模
❸完善的查詢支持,可使用多個謂詞以及優化的掃描鍵
❹DDL支持:經過CREATE TABLE、DROP TABLE及ALTER TABLE來添加/刪除列
❺版本化的模式倉庫:當寫入數據時,快照查詢會使用恰當的模式
❻DML支持:用於逐行插入的UPSERT VALUES、用於相同或不一樣表之間大量數據傳輸的UPSERT ❼SELECT、用於刪除行的DELETE
❽經過客戶端的批處理實現的有限的事務支持
❾單表——尚未鏈接,同時二級索引也在開發當中
➓緊跟ANSI SQL標準算法
2、Stingermongodb
貢獻者::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負載處理。
3、Presto
貢獻者::Facebook
簡介:Facebook開源的數據查詢引擎Presto ,可對250PB以上的數據進行快速地交互式分析。該項目始於 2012 年秋季開始開發,目前該項目已經在超過 1000 名 Facebook 僱員中使用,運行超過 30000 個查詢,每日數據在 1PB 級別。Facebook 稱 Presto 的性能比諸如 Hive 和 Map*Reduce 要好上 10 倍有多。
Presto 當前支持 ANSI SQL 的大多數特效,包括聯合查詢、左右聯接、子查詢以及一些聚合和計算函數;支持近似大相徑庭的計數(DISTINCT COUNT)等。
4、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的思路更加簡單明瞭些。
5、Pig
簡介:Pig是一種編程語言,它簡化了Hadoop常見的工做任務。Pig可加載數據、表達轉換數據以及存儲最終結果。Pig內置的操做使得半結構化數據變得有意義(如日誌文件)。同時Pig可擴展使用Java中添加的自定義數據類型並支持數據轉換。
Pig最大的做用就是對mapreduce算法(框架)實現了一套shell腳本 ,相似咱們一般熟悉的SQL語句,在Pig中稱之爲Pig Latin,在這套腳本中咱們能夠對加載出來的數據進行排序、過濾、求和、分組(group by)、關聯(Joining),Pig也能夠由用戶自定義一些函數對數據集進行操做,也就是傳說中的UDF(user-defined functions)。
6、Cloudera Impala
貢獻者::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
7、Apache Drill
貢獻者::MapR
簡介:Apache Drill是是一個可以對大數據進行交互分析、開源的分佈式系統,且基於Google Dremel實現,它可以運行在上千個節點的服務器集羣上,且能在幾秒內處理PB級或者萬億條的數據記錄。Drill可以幫助企業用戶快速、高效地進行Hadoop數據查詢和企業級大數據分析。Drill於2012年8月份由Apache推出。
從Drill官方對其架構的介紹中得知,其具備適於實時的分析和快速的應用開發、適於半結構化/嵌套數據的分析、兼容現有的SQL環境和Apache Hive等特徵。另外,Drill的核心模塊是Drillbit服務,該服務模塊包括遠程訪問子模塊、SQL解析器、查詢優化器、任務計劃執行引擎、存儲插件接口(DFS、HBase、Hive等的接口)、分佈式緩存模塊等幾部分,以下圖所示:
8、Apache Tajo
簡介:Apache Tajo項目的目的是在HDFS之上構建一個先進的數據倉庫系統。Tajo將本身標榜爲一個「大數據倉庫」,可是它好像和以前介紹的那些低延遲查詢引擎相似。雖然它支持外部表和Hive數據集(經過HCatalog),可是它的重點是數據管理,提供低延遲的數據訪問,以及爲更傳統的ETL提供工具。它也須要在數據節點上部署Tajo特定的工做進程。
Tajo的功能包括:
❶ANSI SQL兼容
❷JDBC 驅動
❸集成Hive metastore可以訪問Hive數據集
❹一個命令行客戶端
❺一個自定義函數API
9、Hive
簡介:hive是基於Hadoop的一個數據倉庫工具,能夠將結構化的數據文件映射爲一張數據庫表,並提供簡單的sql查詢功能,能夠將sql語句轉換爲MapReduce任務進行運行。 其優勢是學習成本低,能夠經過類SQL語句快速實現簡單的MapReduce統計,沒必要開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
1、Facebook Puma
貢獻者:Facebook
簡介:實時數據流分析
2、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能夠用於實時數據的統計:
❶統計網站中每個頁面,域名的點擊次數
❷內部系統的運行監控(統計被監控服務器的運行狀態)
❸記錄最大值和最小值
3、Yahoo S4
貢獻者:Yahoo
簡介:S4(Simple Scalable Streaming System)最初是Yahoo!爲提升搜索廣告有效點擊率的問題而開發的一個平臺,經過統計分析用戶對廣告的點擊率,排除相關度低的廣告,提高點擊率。目前該項目剛啓動不久,因此也能夠理解爲是他們提出的一個分佈式流計算(Distributed Stream Computing)的模型。
S4的設計目標是:
·提供一種簡單的編程接口來處理數據流
·設計一個能夠在普通硬件之上可擴展的高可用集羣。
·經過在每一個處理節點使用本地內存,避免磁盤I/O瓶頸達到最小化延遲
·使用一個去中心的,對等架構;全部節點提供相同的功能和職責。沒有擔負特殊責任的中心節點。這大大簡化了部署和維護。
·使用可插拔的架構,使設計儘量的即通用又可定製化。
·友好的設計理念,易於編程,具備靈活的彈性
4、Twitter Storm
貢獻者:Twitter
簡介:Storm是Twitter開源的一個相似於Hadoop的實時數據處理框架,它原來是由BackType開發,後BackType被Twitter收購,將Storm做爲Twitter的實時數據分析系統。
實時數據處理的應用場景很普遍,例如商品推薦,廣告投放,它能根據當前情景上下文(用戶偏好,地理位置,已發生的查詢和點擊等)來估計用戶點擊的可能性並實時作出調整。
storm的三大做用領域:
1.信息流處理(Stream Processing)
Storm能夠用來實時處理新數據和更新數據庫,兼具容錯性和可擴展性,它 能夠用來處理源源不斷的消息,並將處理以後的結果保存到持久化介質中。
2.連續計算(Continuous Computation)
Storm能夠進行連續查詢並把結果即時反饋給客戶,好比將Twitter上的熱門話題發送到客戶端。
3.分佈式遠程過程調用(Distributed RPC)
除此以外,Storm也被普遍用於如下方面:
1、Apache Hama
簡介:Apache Hama是一個純BSP(Bulk Synchronous Parallel)計算框架,模仿了Google的Pregel。用來處理大規模的科學計算,特別是矩陣和圖計算。
❶創建在Hadoop上的分佈式並行計算模型。
❷基於 Map/Reduce 和 Bulk Synchronous 的實現框架。
❸運行環境須要關聯 Zookeeper、HBase、HDFS 組件。
Hama中有2個主要的模型:
– 矩陣計算(Matrix package)
– 面向圖計算(Graph package)
2、Apache Giraph
代碼託管地址: GitHub
簡介:Apache Giraph是一個可伸縮的分佈式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的Pregel,與它們 區別於則是是開源、基於 Hadoop 的架構等。
Giraph處理平臺適用於運行大規模的邏輯計算,好比頁面排行、共享連接、基於個性化排行等。Giraph專一於社交圖計算,被Facebook做爲其Open Graph工具的核心,幾分鐘內處理數萬億次用戶及其行爲之間的鏈接。
3、HaLoop
簡介:迭代的MapReduce,HaLoop——適用於迭代計算的Hadoop 。
Hadoop與HaLoop的不一樣
與Hadoop比較的四點改變:
1.提供了一套新的編程接口,更加適用於迭代計算;
HaLoop給迭代計算一個抽象的遞歸公式:
2.HaLoop的master進行job內的循環控制,直到迭代計算結束;
3.Task Scheduler也進行了修改,使得任務可以儘可能知足data locality
4.slave nodes對數據進行cache並index索引,索引也以文件的形式保存在本地磁盤。
4、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。
1、Hadoop MapReduce
簡介:MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念」Map(映射)」和」Reduce(歸約)」,和它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。它極大地方便了編程人員在不會分佈式並行編程的狀況下,將本身的程序運行在分佈式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定併發的Reduce(歸約)函數,用來保證全部映射的鍵值對中的每個共享相同的鍵組。
2、Berkeley Spark
簡介:Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行,Spark,擁有Hadoop MapReduce所具備的優勢;但不一樣於MapReduce的是Job中間輸出結果能夠保存在內存中,從而再也不須要讀寫HDFS,所以Spark能更好地適用於數據挖掘與機器學習等須要迭代的map reduce的算法。
3、DataTorrent
簡介:DataTorrent基於Hadoop 2.x構建,是一個實時的、有容錯能力的數據流式處理和分析平臺,它使用本地Hadoop應用程序,而這些應用程序能夠與執行其它任務,如批處理,的應用程序共存。該平臺的架構以下圖所示:
相關文章:DataTorrent 1.0每秒處理超過10億個實時事件
DataTorrent 將數據分析速度從「實時」提高至「如今時」
1、LevelDB
貢獻者:Google
簡介:Leveldb是一個google實現的很是高效的kv數據庫,目前的版本1.2可以支持billion級別的數據量了。 在這個數量級別下還有着很是高的性能,主要歸功於它的良好的設計。特別是LMS算法。
LevelDB 是單進程的服務,性能很是之高,在一臺4核Q6600的CPU機器上,每秒鐘寫數據超過40w,而隨機讀的性能每秒鐘超過10w。
此處隨機讀是徹底命中內存的速度,若是是不命中 速度大大降低。
2、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是單線程合併的。
3、HyperDex
貢獻者:Facebook
HyperDex是一個分佈式、可搜索的鍵值存儲系統,特性以下:
4、TokyoCabinet
官網:http://project-voldemort.com/
9、Redis
Redis是一個高性能的key-value存儲系統,和Memcached相似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。與memcached同樣,爲了保證效率,數據都是緩存在內存中,區別的是Redis會週期性的把更新的數據寫入磁盤或者把修改操做寫入追加的記錄文件,而且在此基礎上實現了主從同步。
Redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合能夠對關係數據庫起到很好的補充做用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。
1、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/
2、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/
3、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/
4、Cassandra
貢獻者:facebook
相關文章:開源分佈式NoSQL數據庫系統——Cassandra Cassandra與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/
5、HyperTable
簡介:Hypertable是一個開源、高性能、可伸縮的數據庫,它採用與Google的Bigtable類似的模型。在過去數年中,Google爲在PC集羣 上運行的可伸縮計算基礎設施設計建造了三個關鍵部分。
第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的文件系統,提供了一個全局的命名空間。它經過跨機器(和跨機架)的文件數據複製來達到高可用性,並所以免受傳統 文件存儲系統沒法避免的許多失敗的影響,好比電源、內存和網絡端口等失敗。第二個基礎設施是名爲Map-Reduce的計算框架,它與GFS緊密協做,幫 助處理收集到的海量數據。第三個基礎設施是Bigtable,它是傳統數據庫的替代。Bigtable讓你能夠經過一些主鍵來組織海量數據,並實現高效的 查詢。Hypertable是Bigtable的一個開源實現,而且根據咱們的想法進行了一些改進。
HyperTable官網:http://hypertable.org/
6、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還包含了對監控支持的改善。這種監控機制不只僅是簡單的機器檢查,它添加了對多種潛在的硬件瓶頸的診斷,而且把那些高層級的信息整合到現有監控基礎架構中。
七:HBase
貢獻者: Fay Chang 所撰寫的「Bigtable
簡介:HBase是一個分佈式的、面向列的開源數據庫,該技術來源於 Fay Chang 所撰寫的Google論文「Bigtable:一個結構化數據的分佈式存儲系統」。就像Bigtable利用了Google文件系統(File System)所提供的分佈式數據存儲同樣,HBase在Hadoop之上提供了相似於Bigtable的能力。HBase是Apache的Hadoop項目的子項目。HBase不一樣於通常的關係數據庫,它是一個適合於非結構化數據存儲的數據庫。另外一個不一樣的是HBase基於列的而不是基於行的模式。
1、CouchDB
簡介:CouchDB是用Erlang開發的面向文檔的數據庫系統,最近剛剛發佈了1.0版本(2010年7月14日)。CouchDB不是一個傳統的關係數據庫,而是面向文檔的數據庫,其數據存儲方式有點相似lucene的index文件格式,CouchDB最大的意義在於它是一個面向web應用的新一代存儲系統,事實上,CouchDB的口號就是:下一代的Web應用存儲系統。
特色:
1、CouchDB是分佈式的數據庫,他能夠把存儲系統分佈到n臺物理的節點上面,而且很好的協調和同步節點之間的數據讀寫一致性。這固然也得靠Erlang無與倫比的併發特性才能作到。對於基於web的大規模應用文檔應用,分佈式可讓它沒必要像傳統的關係數據庫那樣分庫拆表,在應用代碼層進行大量的改動。
2、CouchDB是面向文檔的數據庫,存儲半結構化的數據,比較相似lucene的index結構,特別適合存儲文檔,所以很適合CMS,電話本,地址本等應用,在這些應用場合,文檔數據庫要比關係數據庫更加方便,性能更好。
3、CouchDB支持REST API,可讓用戶使用JavaScript來操做CouchDB數據庫,也能夠用JavaScript編寫查詢語句,咱們能夠想像一下,用AJAX技術結合CouchDB開發出來的CMS系統會是多麼的簡單和方便。
其實CouchDB只是Erlang應用的冰山一角,在最近幾年,基於Erlang的應用也獲得的蓬勃的發展,特別是在基於web的大規模,分佈式應用領域,幾乎都是Erlang的優點項目。
2、MongoDB
簡介:MongoDB 是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在爲WEB應用提供可擴展的高性能數據存儲解決方案。
MongoDB是一個介於關係數據庫和非關係數據庫之間的產品,是非關係數據庫當中功能最豐富,最像關係數據庫的。他支持的數據結構很是鬆散,是相似json的bson格式,所以能夠存儲比較複雜的數據類型。Mongo最大的特色是他支持的查詢語言很是強大,其語法有點相似於面向對象的查詢語言,幾乎能夠實現相似關係數據庫單表查詢的絕大部分功能,並且還支持對數據創建索引。
相關文章:MongoDB的基本特性與內部構造 大數據吃香 創業公司MongoDB估值達16億美圓
特色
它的特色是高性能、易部署、易使用,存儲數據很是方便。主要功能特性有:
*面向集合存儲,易存儲對象類型的數據。
mongodb集羣參考
mongodb集羣參考
*模式自由。
*支持動態查詢。
*支持徹底索引,包含內部對象。
*支持查詢。
*支持複製和故障恢復。
*使用高效的二進制數據存儲,包括大型對象(如視頻等)。
*自動處理碎片,以支持雲計算層次的擴展性。
*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。
*文件存儲格式爲BSON(一種JSON的擴展)。
*可經過網絡訪問。
3、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
4、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/
5、HDFS
簡介:Hadoop分佈式文件系統(HDFS)被設計成適合運行在通用硬件(commodity hardware)上的分佈式文件系統。它和現有的分佈式文件系統有不少共同點。但同時,它和其餘的分佈式文件系統的區別也是很明顯的。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,很是適合大規模數據集上的應用。HDFS放寬了一部分POSIX約束,來實現流式讀取文件系統數據的目的。HDFS在最開始是做爲Apache Nutch搜索引擎項目的基礎架構而開發的。HDFS是Apache Hadoop Core項目的一部分。
1、Twitter Mesos
開發者:Twitter研發人員John Oskasson
簡介:Apache Mesos是由加州大學伯克利分校的AMPLab首先開發的一款開源羣集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架構,因爲其開源性質愈來愈受到一些大型雲計算公司的青睞,例如Twitter、Facebook等。
參考文章:Mesos漸入主流,Twitter模式有望「無限複製」-CSDN.NET
2、Hadoop Yarn
Hadoop 新 MapReduce 框架 Yarn。爲從根本上解決舊 MapReduce 框架的性能瓶頸,促進 Hadoop 框架的更長遠發展,從 0.23.0 版本開始,Hadoop 的 MapReduce 框架徹底重構,發生了根本的變化。新的 Hadoop MapReduce 框架命名爲 MapReduceV2 或者叫 Yarn,其架構圖以下圖所示:
Yarn 框架相對於老的 MapReduce 框架什麼優點呢?咱們能夠看到:
一、這個設計大大減少了 JobTracker(也就是如今的 ResourceManager)的資源消耗,而且讓監測每個 Job 子任務 (tasks) 狀態的程序分佈式化了,更安全、更優美。
二、在新的 Yarn 中,ApplicationMaster 是一個可變動的部分,用戶能夠對不一樣的編程模型寫本身的 AppMst,讓更多類型的編程模型可以跑在 Hadoop 集羣中,能夠參考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
三、對於資源的表示之內存爲單位 ( 在目前版本的 Yarn 中,沒有考慮 cpu 的佔用 ),比以前以剩餘 slot 數目更合理。
四、老的框架中,JobTracker 一個很大的負擔就是監控 job 下的 tasks 的運行情況,如今,這個部分就扔給 ApplicationMaster 作了,而 ResourceManager 中有一個模塊叫作 ApplicationsMasters( 注意不是 ApplicationMaster),它是監測 ApplicationMaster 的行情況,若是出問題,會將其在其餘機器上重啓。
五、Container 是 Yarn 爲了未來做資源隔離而提出的一個框架。這一點應該借鑑了 Mesos 的工做,目前是一個框架,僅僅提供 java 虛擬機內存的隔離 ,hadoop 團隊的設計思路應該後續能支持更多的資源調度和控制 , 既然資源表示成內存量,那就沒有了以前的 map slot/reduce slot 分開形成集羣資源閒置的尷尬狀況。
第二部分將整合大數據日誌收集系統、消息系統、集羣管理、基礎設施、監控管理等開源工具。並將於3月12日發佈,盡請期待。
End.
轉載請註明來自36大數據(36dsj.com):36大數據 » 一共81個,開源大數據處理工具彙總(上)