大資料分析工具(下)
查詢引擎
一、Phoenix
簡介:這是一個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標準
二、Stinger
簡介:原叫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負載處理。
三、Presto
貢獻者::Facebook
簡介:Facebook開源的資料查詢引擎Presto ,可對250PB以上的資料進行快速地互動式分析。該專案始於 2012 年秋季開始開發,目前該專案已經在超過 1000 名 Facebook 僱員中使用,執行超過 30000 個查詢,每日資料在 1PB 級別。Facebook 稱 Presto 的效能比諸如 Hive 和 Map*Reduce 要好上 10 倍有多。
Presto 當前支援 ANSI SQL 的大多數特效,包括聯合查詢、左右聯接、子查詢以及一些聚合和計算函式;支援近似截然不同的計數(DISTINCT COUNT)等。
四、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的思路更加簡單明瞭些。
五、Pig
簡介:Pig是一種程式語言,它簡化了Hadoop常見的工作任務。Pig可載入資料、表達轉換資料以及儲存最終結果。Pig內建的操作使得半結構化資料變得有意義(如日誌檔案)。同時Pig可擴充套件使用Java中新增的自定義資料型別並支援資料轉換。
Pig最大的作用就是對mapreduce演算法(框架)實現了一套shell指令碼 ,類似我們通常熟悉的SQL語句,在Pig中稱之為Pig Latin,在這套指令碼中我們可以對加載出來的資料進行排序、過濾、求和、分組(group by)、關聯(Joining),Pig也可以由使用者自定義一些函式對資料集進行操作,也就是傳說中的UDF(user-defined functions)。
六、Cloudera Impala
簡介: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
七、Apache Drill
貢獻者::MapR
簡介:Apache Drill是是一個能夠對大資料進行互動分析、開源的分散式系統,且基於Google Dremel實現,它能夠執行在上千個節點的伺服器叢集上,且能在幾秒內處理PB級或者萬億條的資料記錄。Drill能夠幫助企業使用者快速、高效地進行Hadoop資料查詢和企業級大資料分析。Drill於2012年8月份由Apache推出。
從Drill官方對其架構的介紹中得知,其具有適於實時的分析和快速的應用開發、適於半結構化/巢狀資料的分析、相容現有的SQL環境和Apache Hive等特徵。另外,Drill的核心模組是Drillbit服務,該服務模組包括遠端訪問子模組、SQL解析器、查詢優化器、任務計劃執行引擎、儲存外掛介面(DFS、HBase、Hive等的介面)、分散式快取模組等幾部分,如下圖所示:
八、Apache Tajo
簡介:Apache Tajo專案的目的是在HDFS之上構建一個先進的資料倉庫系統。Tajo將自己標榜為一個“大資料倉庫”,但是它好像和之前介紹的那些低延遲查詢引擎類似。雖然它支援外部表和Hive資料集(通過HCatalog),但是它的重點是資料管理,提供低延遲的資料訪問,以及為更傳統的ETL提供工具。它也需要在資料節點上部署Tajo特定的工作程序。
Tajo的功能包括:
❶ANSI SQL相容
❷JDBC 驅動
❸整合Hive metastore能夠訪問Hive資料集
❹一個命令列客戶端
❺一個自定義函式API
九、Hive
簡介:hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行執行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。
流式計算
一、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瓶頸達到最小化延遲
·使用一個去中心的,對等架構;所有節點提供相同的功能和職責。沒有擔負特殊責任的中心節點。這大大簡化了部署和維護。
·使用可插拔的架構,使設計儘可能的即通用又可定製化。
·友好的設計理念,易於程式設計,具有靈活的彈性
四、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也被廣泛用於以下方面:
- 精確的廣告推送
- 實時日誌的處理
迭代計算
一、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 Giraph
簡介:Apache Giraph是一個可伸縮的分散式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的Pregel,與它們 區別於則是是開源、基於 Hadoop 的架構等。
Giraph處理平臺適用於執行大規模的邏輯計算,比如頁面排行、共享連結、基於個性化排行等。Giraph專注於社交圖計算,被Facebook作為其Open Graph工具的核心,幾分鐘內處理數萬億次使用者及其行為之間的連線。
三、HaLoop
簡介:迭代的MapReduce,HaLoop——適用於迭代計算的Hadoop 。
與Hadoop比較的四點改變:
1.提供了一套新的程式設計介面,更加適用於迭代計算;
HaLoop給迭代計算一個抽象的遞迴公式:
2.HaLoop的master進行job內的迴圈控制,直到迭代計算結束;
3.Task Scheduler也進行了修改,使得任務能夠儘量滿足data locality
4.slave nodes對資料進行cache並index索引,索引也以檔案的形式儲存在本地磁碟。
四、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。
離線計算
一、Hadoop MapReduce
簡介:MapReduce是一種程式設計模型,用於大規模資料集(大於1TB)的並行運算。概念”Map(對映)”和”Reduce(歸約)”,和它們的主要思想,都是從函數語言程式設計語言裡借來的,還有從向量程式語言裡借來的特性。它極大地方便了程式設計人員在不會分散式並行程式設計的情況下,將自己的程式執行在分散式系統上。 當前的軟體實現是指定一個Map(對映)函式,用來把一組鍵值對對映成一組新的鍵值對,指定併發的Reduce(歸約)函式,用來保證所有對映的鍵值對中的每一個共享相同的鍵組。
二、Berkeley Spark
簡介:Spark是UC Berkeley AMP lab所開源的類Hadoop MapReduce的通用的並行,Spark,擁有Hadoop MapReduce所具有的優點;但不同於MapReduce的是Job中間輸出結果可以儲存在記憶體中,從而不再需要讀寫HDFS,因此Spark能更好地適用於資料探勘與機器學習等需要迭代的map reduce的演算法。
三、DataTorrent
簡介:DataTorrent基於Hadoop 2.x構建,是一個實時的、有容錯能力的資料流式處理和分析平臺,它使用本地Hadoop應用程式,而這些應用程式可以與執行其它任務,如批處理,的應用程式共存。該平臺的架構如下圖所示:
鍵值儲存
一、LevelDB
貢獻者:Google
簡介:Leveldb是一個google實現的非常高效的kv資料庫,目前的版本1.2能夠支援billion級別的資料量了。 在這個數量級別下還有著非常高的效能,主要歸功於它的良好的設計。特別是LMS演算法。
LevelDB 是單程序的服務,效能非常之高,在一臺4核Q6600的CPU機器上,每秒鐘寫資料超過40w,而隨機讀的效能每秒鐘超過10w。
此處隨機讀是完全命中記憶體的速度,如果是不命中 速度大大下降。
二、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是單執行緒合併的。
三、HyperDex
貢獻者:Facebook
HyperDex是一個分散式、可搜尋的鍵值儲存系統,特性如下:
- 分散式KV儲存,系統性能能夠隨節點數目線性擴充套件
- 吞吐和延時都能秒殺現在風頭正勁的MonogDB,吞吐甚至強於Redis
- 使用了hyperspace hashing技術,使得對儲存的K-V的任意屬性進行查詢成為可能
四、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等豐富的資料型別。 五、Voldemort Voldemort是一個分散式鍵值儲存系統,是Amazon’s Dynamo的一個開源克隆。特性如下:
- 支援自動複製資料到多個伺服器上。
- 支援資料自動分割所以每個伺服器只包含總資料的一個子集。
- 提供伺服器故障透明處理功能。
- 支援可撥插的序化支援,以實現複雜的鍵-值儲存,它能夠很好的5.整合常用的序化框架如:Protocol Buffers、Thrift、Avro和Java Serialization。
- 資料項都被標識版本能夠在發生故障時儘量保持資料的完整性而不會影響系統的可用性。
- 每個節點相互獨立,互不影響。
- 支援可插拔的資料放置策略
九、Redis
Redis是一個高效能的key-value儲存系統,和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)和zset(有序集合)。與memcached一樣,為了保證效率,資料都是快取在記憶體中,區別的是Redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了主從同步。
Redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關係資料庫起到很好的補充作用。它提供了Python、Ruby、Erlang、PHP客戶端,使用很方便。
表格儲存
一、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。
二、Amazon SimpleDB
貢獻者:亞馬遜
Amazon SimpleDB是一個分散式資料庫,以Erlang撰寫。同與Amazon EC2和亞馬遜的S3一樣作為一項Web 服務,屬於亞馬遜網路服務的一部分。
正如EC2和S3,SimpleDB的按照儲存量,在網際網路上的傳輸量和吞吐量收取費用。 在2008年12月1日,亞馬遜推出了新的定價策略,提供了免費1 GB的資料和25機器小時的自由層(Free Tire)。 將其中的資料轉移到其他亞馬遜網路服務是免費的。
它是一個可大規模伸縮、用 Erlang 編寫的高可用資料儲存。
三、Vertica
貢獻者:惠普
簡介:惠普2011年2月份起始3月21號完成收購Vertica。Vertica基於列儲存。基於列儲存的設計相比傳統面向行儲存的資料庫具有巨大的優勢。同時Vertica支援MPP(massively parallel processing)等技術,查詢資料時Vertica只需取得需要的列,而不是被選擇行的所有資料,其平均效能可提高50x-1000x倍。(查詢效能高速度快)
Vertica的設計者多次表示他們的產品圍繞著高效能和高可用性設計。由於對MPP技術的支援,可提供對粒度,可伸縮性和可用性的優勢。每個節點完全獨立運作,完全無共享架構,降低對共享資源的系統競爭。
Vertica的資料庫使用標準的SQL查詢,同時Vertica的架構非常適合雲端計算,包括虛擬化,分散式多節點執行等,並且可以和Hadoop/MapReduce進行整合。
四、Cassandra
貢獻者:facebook
簡介: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。
五、HyperTable
簡介:Hypertable是一個開源、高效能、可伸縮的資料庫,它採用與Google的Bigtable相似的模型。在過去數年中,Google為在PC叢集 上執行的可伸縮計算基礎設施設計建造了三個關鍵部分。
第一個關鍵的基礎設施是Google File System(GFS),這是一個高可用的檔案系統,提供了一個全域性的名稱空間。它通過跨機器(和跨機架)的檔案資料複製來達到高可用性,並因此免受傳統 檔案儲存系統無法避免的許多失敗的影響,比如電源、記憶體和網路埠等失敗。第二個基礎設施是名為Map-Reduce的計算框架,它與GFS緊密協作,幫 助處理收集到的海量資料。第三個基礎設施是Bigtable,它是傳統資料庫的替代。Bigtable讓你可以通過一些主鍵來組織海量資料,並實現高效的 查詢。Hypertable是Bigtable的一個開源實現,並且根據我們的想法進行了一些改進。
六、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基於列的而不是基於行的模式。
檔案儲存
一、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的優勢專案。
二、MongoDB
簡介:MongoDB 是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是他支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
相關推薦
大資料分析工具(下)
查詢引擎 一、Phoenix 簡介:這是一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Phoenix完全使用Java編寫,程式碼位於GitHub上,並且提供了一個客戶端可嵌入的JDBC驅動。 Phoenix查詢引擎會將SQL查詢轉換為
電商大資料分析平臺(三)nginx配置及flume讀取日誌資訊
一、nginx配置 在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式 1.地址配置 server { listen
我們為什麼要學習大資料分析?(二)
在前面我們給大家說了為什麼要學習大資料分析的原因,比如大資料分析能夠增加從業人員的工資、可以獲得更多的就業機會、大資料分析滲透的領域越來越廣泛等。當然我們學習大資料分析的原因不只是這些,還有很多其他的原因。不過估計大家一時半會想不到更多的學習大資料分析的理由或原因吧?下面就由小編接著給大家講一下這個問題,
大資料進階(二):22個免費的資料視覺化和分析工具推薦
22個免費的資料視覺化和分析工具推薦 本文總結推薦22個免費的資料視覺化和分析工具。列表如下: 資料清理(Data cleaning) 當你分析和視覺化資料前,常需要“清理”工作。比如一些輸入性列表“New York City” ,同時其他人會
大資料之Spark(三)--- Spark核心API,Spark術語,Spark三級排程流程原始碼分析
一、Spark核心API ----------------------------------------------- [SparkContext] 連線到spark叢集,入口點. [HadoopRDD] extends RDD 讀取hadoop
大資料之Spark(一)--- Spark簡介,模組,安裝,使用,一句話實現WorldCount,API,scala程式設計,提交作業到spark叢集,指令碼分析
一、Spark簡介 ---------------------------------------------------------- 1.快如閃電的叢集計算 2.大規模快速通用的計算引擎 3.速度: 比hadoop 100x,磁碟計算快10x 4.使用: java
大資料之Spark(八)--- Spark閉包處理,部署模式和叢集模式,SparkOnYarn模式,高可用,Spark整合Hive訪問hbase類載入等異常解決,使用spark下的thriftserv
一、Spark閉包處理 ------------------------------------------------------------ RDD,resilient distributed dataset,彈性(容錯)分散式資料集。 分割槽列表,function,dep Op
大資料之storm(一) --- storm簡介,核心元件,工作流程,安裝和部署,電話通訊案例分析,叢集執行,單詞統計案例分析,調整併發度
一、storm簡介 --------------------------------------------------------- 1.開源,分散式,實時計算 2.實時可靠的處理無限資料流,可以使用任何語言開發 3.適用於實時分析,線上機器學習
Windows10下配置大資料開發環境(1)
一 準備工作 如果安裝的Hadoop是3.1.1版本,應選擇jdk1.8以上版本 3. 搜尋HADOOP在Windows環境需要的工具 二 安裝JDK 安裝JDK後,需要配置JDK的環境,這裡可以自行百度。 三 安裝和配置Hapood環境
【自然語言處理入門】03:利用線性迴歸對資料集進行分析預測(下)
上一篇中我們簡單的介紹了利用線性迴歸分析並預測波士頓房價資料集,那麼在這一篇中,將使用相同的模型來對紅酒資料集進行分析。 1 基本要求 利用線性迴歸,對紅酒資料集進行分析。資料集下載地址。 2 完整程式碼 #-*- codin
安全測試===8大前端安全問題(下)
log 快速開發 想要 自己的 應用 左右 支持 jquer 客戶端 在《8大前端安全問題(上)》這篇文章裏我們談到了什麽是前端安全問題,並且介紹了其中的4大典型安全問題,本篇文章將介紹剩下的4大前端安全問題,它們分別是: 防火防盜防豬隊友:不安全的第三方依賴包 用
vim工具(下)
發生 ear oss 常用快捷鍵 文檔 特殊用法 color 光標 加密 5.5vim進入編輯模式5.6vim命令模式5.7vim實踐5.5vim進入編輯模式 進入編輯模式後輸入的東西都是在光標的前面輸入的 按“i”光標進入當前位置的編輯模式。 按“I(shift+i
安裝軟件包工具(下)
edi 源碼包 curl stc ack tool rec dir total 更換yum倉庫源 1.首先刪除原來的源2.網絡下載獲取163源,可以通過兩種方式: [root@weix-01 yum.repos.d]# curl -O http://mirrors.163.
容器領域的十大監控系統對比(下)
容器 監控 容器監測環境有多種形態和大小,而監控解決方案的數量之多亦令人望而生畏。在這一系列文章中,我將對容器領域的10個監控解決方案進行全面的分析對比。 上篇文章中,我介紹了此次對比測評的方法架構,並分析了五種容器監控解決方案:原生Docker、cAdvisor、Scout、Pingdom和Data
批量下載網站圖片的Python小工具(下)
深度 amp ted 講解 ati online 工作 rul 進程池 引子 在 批量下載網站圖片的Python實用小工具 一文中,講解了開發一個Python小工具來實現網站圖片的並發批量拉取。不過那個工具僅限於特定網站的特定規則,本文將基於其代碼實現,開發一個更加通用的圖
大資料重新定義未來,2018 中國大資料技術大會(BDTC)豪華盛宴搶先看!
隨著資訊科技的迅猛發展,資料的重要性和價值已毋庸置疑,資料正在改變競爭格局,成為重要的生產因素,更被定義為“21世紀的新石油”。在資訊高速傳播的今天,資料已經滲透到每一個行業和業務職能領域,指數級的速度增長將我們帶入大資料時代。作為年度技術趨勢與行業應用的風向標,2018 中國大資料技術大會(BDT
大資料之Spark(五)--- Spark的SQL模組,Spark的JDBC實現,SparkSQL整合MySQL,SparkSQL整合Hive和Beeline
一、Spqrk的SQL模組 ---------------------------------------------------------- 1.該模組能在Spack上執行Sql語句 2.可以處理廣泛的資料來源 3.DataFrame --- RDD --- tabl
大資料之Spark(四)--- Dependency依賴,啟動模式,shuffle,RDD持久化,變數傳遞,共享變數,分散式計算PI的值
一、Dependency:依賴:RDD分割槽之間的依存關係 --------------------------------------------------------- 1.NarrowDependency: 子RDD的每個分割槽依賴於父RDD的少量分割槽。 |
大資料之Spark(二)--- RDD,RDD變換,RDD的Action,解決spark的資料傾斜問題,spark整合hadoop的HA
一、Spark叢集執行 ------------------------------------------------------- 1.local //本地模式 2.standalone //獨立模式 3.yarn //yarn模式
大資料之scala(四) --- 模式匹配,變數宣告模式,樣例類,偏函式,泛型,型變,逆變,隱式轉換,隱式引數
一、模式匹配:當滿足case條件,就終止 ---------------------------------------------------------- 1.更好的switch var x = '9'; x match{ case