1. 程式人生 > >一篇文讀懂19款資料分析軟體,解救選擇困難症!

一篇文讀懂19款資料分析軟體,解救選擇困難症!

作者介紹

歐陽辰超過15年的軟體開發和設計經驗,目前就職於小米公司,負責小米廣告平臺的架構研發。曾為微軟公司工作10年,擔任高階軟體開發主管。熱愛架構設計和高可用性系統,特別對於大規模網際網路軟體的開發,具有豐富的理論知識和實踐經驗。個人公眾號:互聯居。

資料分析(Data Analytics)從來都不是一個寂寞的領域,每一個時代都賦予其新的內容。在大資料盛行之時,各種大資料分析軟體如雨後春筍一般湧現出來,整個市場一片繁花似錦、欣欣向榮。本篇文章主要介紹一些常用的大資料分析軟體,幫助大家望盡天涯路,如對某軟體有興趣的話,可另找資料。

一、什麼是資料分析?

資料分析既是一門藝術,所謂藝術就是結合技術、想象、經驗和意願等綜合因素的平衡和融合。資料分析的目的就是幫助我們把資料(Data)變成資訊(Information),再從資訊變成知識(Knowledge),最後從知識變成智慧(Wisdom)。

資料分析

在資料分析的領域,商務智慧(BI:Business Intelligence)、資料探勘(DM:Data Mining)、聯機分析處理(OLAP:On-Line Analytical Processing)等概念在名稱上和資料分析字面非常接近,容易混淆,如下做個簡單介紹。

  • 商務智慧(BI):商務智慧是在商業資料上進行價值挖掘的過程,BI的歷史很長,很多時候會特別指通過資料倉庫的技術進行業務報表製作和分析的過程,分析方法上通常使用聚合(Aggregation)、分片(Slice)等方式進行資料處理。技術上,BI包括ETL(資料的抽取、轉換、載入),資料倉庫(Data Warehouse),OLAP(聯機分析處理),資料探勘(Data Mining)等技術。
  • 資料探勘:資料探勘是指在大量資料中自動搜尋隱藏於其中的有著特殊關係性(屬於Association rule learning)的資訊的過程。相比商務智慧,資料探勘是一種更加學術的說法,範圍也廣,深淺皆宜,強調技術和方法。
  • 聯機分析處理:聯機分析處理(OLAP)是一個建立資料系統的方法,其核心思想即建立多維度的資料立方體,以維度(Dimension)和度量(Measure)為基本概念,輔以元資料實現可以鑽取(Drill-down/up)、切片(Slice)、切塊(Dice)等靈活、系統和直觀的資料展現。

資料分析就是以業務為導向,從資料中發掘提升業務能力的洞察。

二、資料分析軟體的發展

資料分析軟體市場從來都是活躍的市場,從兩個視角來看,一個是商業軟體市場,充滿了大魚吃小魚的故事;另一個是開源資料儲存處理軟體,在網際網路精神和開源情懷的引導下,各種專業領域的開源軟體日益壯大,通用資料儲存系統也不斷升級。

舉例來說,2011年,Teradata收購了Aster Data 公司, 同年惠普收購實時分析平臺Vertica等;2012年,EMC收購資料倉庫軟體廠商Greenplum;2013年,IBM宣佈以17億美元收購資料分析公司Netezza;這些收購事件指向的是同一個目標市場———大資料分析。傳統的資料庫軟體,處理TB級資料非常費勁,而這些新興的資料庫正式瞄準TB級別,乃至PB級別的資料分析。

在開源世界,Hadoop將人們引入了大資料時代,處理TB級別大資料成為一種可能,但實時效能一直是Hadoop的一個傷痛。2014年,Spark橫空出世,通過最大利用記憶體處理資料的方式,大大改進了資料處理的響應時間,快速發展出一個較為完備的生態系統。另外,大量日誌資料都存放在HDFS中,如何提高資料處理效能,支援實時查詢功能則成為了不少開源資料軟體的核心目標。例如Hive利用MapReduce作為計算引擎,Presto自己開發計算引擎,Druid使用自己開發索引和計算引擎等,都是為了一個目標:處理更多資料,獲取更高效能。

Hadoop

三、資料分析軟體的分類

為了全面瞭解分類資料分析軟體,我們按照以下幾個分類來介紹。

  • 商業資料庫
  • 開源時序資料庫
  • 開源計算框架
  • 開源資料分析軟體
  • 開源SQL on Hadoop
  • 雲端資料分析SaaS

四、商業軟體

商用資料庫軟體種類繁多,但是真正能夠支援TB級別以上的資料儲存和分析並不太多,這裡介紹幾個有特點的支援大資料的商用資料庫軟體。

1、HP Vertica

Vertica公司成立於2005年,創立者為資料庫巨擘Michael Stonebraker(2014年圖靈獎獲得者,INGRES,PostgreSQL,VoltDB等資料庫發明人)。2011年Vertica被惠普收購。Vertica軟體是能提供高效資料儲存和快速查詢的列儲存資料庫實時分析平臺,還支援大規模並行處理(MPP)。產品廣泛應用於高階數字營銷、網際網路客戶(比如Facebook、AOL、Twitter、 Groupon)分析處理,資料達到PB級。Facebook利用Vertica進行快速的使用者資料分析,據稱Facebook超過300節點(Node)和處理超過6PB資料。

Vertica有以下幾個特點:

  • 面向列的儲存
  • 靈活的壓縮演算法,根據資料的排序性和基數決定壓縮演算法
  • 高可用資料庫和查詢
  • MPP架構,分散式儲存和任務負載,Share Nothing架構
  • 支援標準的SQL查詢,ODBC/JDBC等
  • 支援Projection(資料投射)功能

Vertica

Vertica的Projection技術,原理是將資料的某些列提取出來進行專門的儲存,以加快後期的訪問資料,同一個列可以在不同的Projection中。

Projection

2、Oracle Exadata

Oracle Exadata是資料庫發展史上一個傳奇,它是資料庫軟體和最新硬體的完美結合。其提供最快最可靠的資料庫平臺,不僅支援常規的資料庫應用,也支援聯機分析處理(OLAP)和資料倉庫(DW)的場景。

Exadata採用了多種最新的硬體技術,例如40Gb/秒的InfiniBand網路( InfiniBand 是超高速的專用資料網路協議,主要專用硬體支援),3.2TB PCI快閃記憶體卡(每個快閃記憶體卡都配有Exadata智慧快取,X6型號)。Oracle Exadata 資料庫雲伺服器允許將新一代伺服器和儲存無縫部署到現有Oracle Exadata 資料庫雲伺服器中。它包含兩套子系統,一套處理計算密集型的查詢,一套處理儲存密集型的查詢,Exadata能夠做到智慧查詢分配。

Oracle Exadata

Oracle Exadata有如下幾個技術特點:

  • 採用InfiniBand高速網路 採用極速快閃記憶體方案。
  • 全面的Oracle資料庫相容性。
  • 針對所有資料庫負載進行了優化,包括智慧掃描。
  • Oracle Exadata支援混合列壓縮。

Oracle Exadata2008年推出,軟硬體一體,不斷髮展壯大,漸漸形成高效能資料庫的代名詞。

高效能資料庫

Oracle Exadata混合列儲存是介於行儲存和列儲存之間的一個方案,主要思想是對列進行分段處理,每一段都使用列式儲存放在Block中,而後按照不同的壓縮策略處理。

3、Teredata

Teradata(天睿)公司專注於大資料分析、資料倉庫和整合營銷管理解決方案的供應商。Teredata採用純粹的Share Nothing架構,支援MPP。對於多維度的查詢更加靈活,專注與資料倉庫的應用領域。下面是TereData的架構,其中PE用於查詢的分析引擎,分析SQL查詢,制定查詢計劃,聚合查詢結果等;BYNET是一個高速的互聯層,是一個軟體和硬體結合的解決方案。

AMP(Access Module Processor)是儲存和查詢資料的節點,支援排序和聚合等操作。

Teredata

另外Teredata還提出了一個統一的資料資料分析框架,其中包括兩個核心產品,一個是Teredata資料倉庫,另外是一個Teredata Aster資料分析產品。這兩個產品分別走不同的路線:Teredata是傳統資料倉庫,滿足通用的資料需求,Aster實際上是一種基於MapReduce的資料分析解決方案,可以支援更加靈活的資料結構的處理,例如非結構化資料的處理。

Teredata Aster資料分析產品

Teredata提供了一個完整的資料解決方案,包括資料倉庫和MapReduce。

五、時序資料庫

時序資料庫用於記錄在過去時間的各個資料點的資訊,典型的應用是伺服器的各種效能指標,例如CPU,記憶體使用情況等等。目前也廣泛應用於各種感測器的資料收集分析工作,這些資料的收集都有一個特點,對時間的依賴非常大,每天產生的資料量都非常大,因此寫入的量非常大,一般的關係資料庫無法滿足這些場景因此時序資料庫,在設計上需要支援高吞吐,高效資料壓縮,支援歷史查詢,分散式部署等特點。

1、OpenTSDB

OpenTSDB是一個開源的時序資料庫,支援儲存數千億的資料點,並提供精確查詢功能。它採用Java語言編寫,通過基於HBase的儲存實現橫向擴充套件。它廣泛用於伺服器效能的監控和度量,包括網路和伺服器,感測器,IoT,金融資料的實時監控領域。OpenTSDB應用於很多網際網路公司的運維繫統,例如Pinterest公司有超過100個節點的部署,Yahoo!公司也有超過50節點的部署。它的設計思路是利用HBase的Key儲存一些tag資訊,將同一個小時資料放在一行儲存,方便查詢的速度。

OpenTSDB

2、InfluxDB

InfluxDB是最近非常流行的一個時序資料庫,由GoLang語言開發,目前社群非常活躍,它也是GoLang的一個非常成功的開源應用。其技術特點包括:支援任意數量的列、支援方便強大的查詢語言、集成了資料採集、儲存和視覺化功能。它支援高效儲存,使用高壓縮比的演算法等。早期設計中,儲存部分使用LevelDB為儲存,後來改成Time Series Merge Tree作為內部儲存,支援SQL類似的查詢語言。

六、開源分散式計算平臺

1、Hadoop

Hadoop 是一個分散式系統基礎架構,由Apache基金會開發。使用者可以在不瞭解分散式底層細節的情況下,開發分散式程式。充分利用叢集的威力高速運算和儲存。Hadoop實現了一個分散式檔案系統(Hadoop Distributed File System),簡稱HDFS。除了檔案儲存,Hadoop還有最完整的大資料生態,包括機器管理、NoSQL KeyValue儲存(如HBase)、協調服務(Zookeeper等)、SQL on Hadoop(Hive)等。

Hadoop

Hadoop基於可靠的分散式儲存,通過MapReduce進行迭代計算,查詢批量的資料。Hadoop是高吞吐的批處理系統,適合大型任務的執行,但對任務響應時間和實時性上有嚴格要求的需求方面Hadoop並不擅長。

2、Spark

Spark是UC Berkeley AMP lab開源的類Hadoop MapReduce的通用的平行計算框架,Spark同樣也是基於分散式計算,擁有Hadoop MapReduce的所有優點;不同的是Spark任務的中間計算結果可以快取在記憶體中,這樣迭代計算時可從記憶體直接獲取中間結果而不需要頻繁讀寫HDFS,因此Spark執行速度更快,適用於對效能有要求的資料探勘與資料分析的場景。

Spark

Spark是實現彈性的分散式資料集概念的計算集群系統,可以看做商業分析平臺。 RDDs能複用持久化到記憶體中的資料,從而為迭代演算法提供更快的計算速度。這對一些工作流例如機器學習格外有用,比如有些操作需要重複執行很多次才能達到結果的最終收斂。同時,Spark也提供了大量的演算法用來查詢和分析大量資料,其開發語言採用scala,因此直接在上面做資料處理和分析,開發成本會比較高,適合非結構化的資料查詢處理。

七、開源大資料實時分析資料庫

1、Druid

Druid是我非常喜歡的一個開源分析資料庫:簡單,高效,穩定支援大型資料集上進行實時查詢的開源資料分析和儲存系統。它提供了低成本,高效能,高可靠性的解決方案,整個系統支援水平擴充套件,管理方便。實際上,Druid的很多設計思想來源於Google的祕密分析武器PowerDrill,從功能上,和Apache開源的Dremel也有幾分相似。

Druid被設計成支援PB級別資料量,現實中有數百TB級別的資料應用例項,每天處理數十億流式事件。Druid廣泛應用在網際網路公司中,例如阿里,百度,騰訊,小米,愛奇藝,優酷等,特別是使用者行為分析,個性化推薦的資料分析,物聯網的實時資料分析,網際網路廣告交易分析等領域。

從架構上解釋,Druid是一個典型的Lambda架構,分為實時資料流和批處理資料流。全部節點使用MySQL管理MetaData,並且使用Zookeeper管理狀態等。

開源大資料

Druid的架構圖顯示Druid自身包含以下四類節點:

  • 實時節點(Realtime Node):及時攝入實時資料,以及生成Segment資料檔案。
  • 歷史節點(Historical Node):載入已生成好的資料檔案以供資料查詢。
  • 查詢節點(Broker Node):對外提供資料查詢服務,並同時從實時節點與歷史節點查詢資料、合併後返回給呼叫方。
  • 協調節點(Coordinator Node):負責歷史節點的資料負載均衡,以及通過Rules管理資料的生命週期。

同時,叢集還包含以下三類外部依賴:

  • 元資料庫(Metastore):儲存Druid叢集的原資料資訊,比如segment的相關資訊,一般用MySQL或PostgreSQL。
  • 分散式協調服務(Coordination):為Druid叢集提供一致性協調服務的元件,通常為Zookeeper。
  • 資料檔案儲存庫(DeepStorage):存放生成的Segment資料檔案,並供歷史節點下載。

對於單節點叢集來說可以是本地磁碟,而對於分散式叢集一般來說是HDFS或NFS。

從資料流轉的角度來看,資料從架構圖的左側進入系統,分為實時流資料與批量資料。實時流資料會被實時節點消費,然後實時節點將生成的Segment資料檔案上傳到資料檔案儲存庫;而批量資料經過Druid叢集消費後(具體方法後面的章節會做介紹)會被直接上傳到資料檔案儲存庫。同時,查詢節點會響應外部的查詢請求,並將分別從實時節點與歷史節點查詢到的結果合併後返回。

2、Pinot

如果要找一個與Druid最接近的系統,那麼非LinkedIn Pinot莫屬。Pinot是Linkedin公司於2015年底開源的一個分散式列式資料儲存系統。Linkedin在開源界頗有盛名,大名鼎鼎的Kafka就是來源於LinkedIn,因此Pinot在推出後就備受關注和追捧。

Pinot的技術特點如下:

  • 一個面向列式儲存的資料庫,支援多種壓縮技術
  • 可插入的索引技術 – SortedIndex、Bitmap Index、Inverted Index
  • 可以根據Query和Segment元資料進行查詢和執行計劃的優化
  • 從kafka的準實時資料灌入和從hadoop的批量資料灌入
  • 類似於SQL的查詢語言和各種常用聚合
  • 支援多值欄位
  • 水平擴充套件和容錯

在架構上,Pinot也採用了Lambda的架構,將實時資料流和批處理資料分開處理。其中Realtime Node 處理實時資料查詢,Historical Nodes處理歷史資料。

Pinot

3、Kylin

Kylin是一個Apache開源的分散式分析引擎,提供了Hadoop之上的SQL查詢介面及多維分析(OLAP)能力,可以支援超大規模資料。最初由eBay公司開發並於2015年貢獻至開源社群。它能在亞秒內查詢巨大的Hive表。

Kylin的優勢很明顯,它支援標準的ANSI SQL介面,可以複用很多傳統的資料整合系統,支援標準的OLAP Cube,資料查詢更加方便,與大量BI工具無縫整合。另外它提供很多管理功能,例如Web管理,訪問控制,支援LDAP,支援HyperLoglog的近似演算法。

從技術上理解,Kylin在Hadoop Hive表上做了一層快取,通過預計算和定期任務,把很多資料事先儲存在HBase為基礎的OLAP Cube中,大部分查詢可以直接訪問HBase拿到結果,而不需訪問Hive原始資料。雖然資料快取、預計算可以提高查詢效率,另外一個方面,這種方式的缺點也很明顯,查詢缺乏靈活性,需要預先定義好查詢的一些模式,一些表結構。目前,Kylin缺少實時資料注入的能力。Druid使用Bitmap Index作為統一的內部資料結構;Kylin使用Bitmap Index作為實時處理部分的資料結構,而使用MOLAP Cube為歷史資料的資料結構。

Kylin

另外,Kylin開發成員中很多開發人員來自中國,因此PMC成員中,中國人佔了大部分,所以使用Kylin很容易得到很好的中文支援。Kylin的願景就是建立一個分散式的高可擴充套件的OLAP引擎。

4、Druid、Pinot和Kylin比較

Druid,Pinot和Kylin是資料分析軟體選型經常碰到的問題。Druid和Pinot解決的業務問題非常類似。Pinot架構設計比較規範,系統也比較複雜一些,由於開源時間短,社群的支援力度弱於Druid。Druid的設計輕巧,程式碼庫也比較容易懂,支援比較靈活的功能增強。Kylin的最大優勢是支援SQL訪問,可以相容傳統的BI工具和報表系統,效能上沒有太大優勢。

下面是這幾個軟體的簡單比較:

Druid

5、神祕的Google Dremel

Dremel 是Google 的“互動式”資料分析系統。可以組建成規模上千的叢集,處理PB級別的資料。由於Map Reduce的實時性缺陷,Google開發了Dremel將處理時間縮短到秒級,作為Map Reduce的有力補充。Dremel作為Google BigQuery的Report引擎,獲得了很大的成功。

Dremel 支援上千臺機器的叢集部署,處理PB級別的資料,可以對於網狀資料的只讀資料,進行隨機查詢訪問,幫助資料分析師提供Ad Hoc查詢功能,進行深度的資料探索(Exploration)。Google開發了Dremel將處理時間縮短到秒級,它也成為Map Reduce的一個有利補充。Dremel也應用在Google Big Query的Report引擎,也非常成功。Dremel的應用如下。

  • 抓取的網頁文件的分析,主要是一些元資料
  • 追蹤Android市場的所有安裝資料
  • 谷歌產品的Crash報告
  • 作弊(Spam)分析
  • 谷歌分散式構建(Build)系統中的測試結果
  • 上千萬的磁碟 I/O 分析
  • 谷歌資料中心中任務的資源分析
  • 谷歌程式碼庫中的Symbols和依賴分析
  • 其他

Google公開的論文《Dremel: Interactive Analysis of WebScaleDatasets》,總體介紹了一下Dremel的設計原理。論文寫於2006年,公開於2010年,Dremel為了支援Nested Data,做了很多設計的優化和權衡。

Dremel系統有以下幾個主要技術特點:

  • Dremel是一個大規模高併發系統。舉例來說,磁碟的順序讀速度在100MB/s上下,那麼在1s內處理1TB資料,意味著至少需要有1萬個磁碟的併發讀,在如此大量的讀寫,需要複雜的容錯設計,少量節點的讀失敗(或慢操作)不能影響整體操作。
  • Dremel支援巢狀的資料結構。網際網路資料常常是非關係型的。Dremel還支援靈活的資料模型,一種巢狀(Nested)的資料模型,類似於Protocol Buffer定義的資料結構。Dremel採用列式方法儲存這些資料,由於巢狀資料結構,Dremel引入了一種樹狀的列式儲存結構,方便巢狀資料的查詢。論文詳細解釋了巢狀資料型別的列儲存,這個特性是Druid缺少的,實現也是非常複雜的。
  • Dremel採用層級的執行引擎。Dremel在執行過程中,SQL查詢輸入會轉化成執行計劃,併發處理資料。和MapReduce一樣,Dremel也需要和資料執行在一起,將計算移動到資料上面。所以它需要GFS這樣的檔案系統作為儲存層。在設計之初,Dremel並非是MapReduce的替代品,它只是可以執行非常快的分析,在使用的時候,常常用它來處理MapReduce的結果集或者用來建立分析原型。

在使用Dremel時,工程師需要通過Map Reduce將資料匯入到Dremel,可以通過定期的MapReduce的定時任務完成匯入。在資料的實時性方面,論文並沒有討論太多。

6、Apache Drill

Apache Drill 通過開源方式實現了 Google’s Dremel。Apache Drill的架構,整個思想還是通過優化查詢引擎,進行快速全表掃描,以快速返回結果。

Apache Drill

Apache Drill 在基於 SQL 的資料分析和商業智慧(BI)上引入了 JSON 檔案模型,這使得使用者能查詢固定架構,支援各種格式和資料儲存中的模式無關(schema-free)資料。該體系架構中關係查詢引擎和資料庫的構建是有先決條件的,即假設所有資料都有一個簡單的靜態架構。

Apache Drill 的架構是獨一無二的。它是唯一一個支援複雜和無模式資料的柱狀執行引擎(columnar execution engine),也是唯一一個能在查詢執行期間進行資料驅動查詢(和重新編譯,也稱之為 schema discovery)的執行引擎(execution engine)。這些獨一無二的效能使得 Apache Drill 在 JSON 檔案模式下能實現記錄斷點效能(record-breaking performance)。該專案將會創建出開源版本的谷歌Dremel Hadoop工具(谷歌使用該工具來為Hadoop資料分析工具的網際網路應用提速)。而“Drill”將有助於Hadoop使用者實現更快查詢海量資料集的目的。

目前,Drill已經完成的需求和架構設計。總共分為以下四個元件:

  • Query language:類似Google BigQuery的查詢語言,支援巢狀模型,名為DrQL。
  • Low-lantency distribute execution engine:執行引擎,可以支援大規模擴充套件和容錯,並執行在上萬臺機器上計算數以PB的資料。
    Nested data format:巢狀資料模型,和Dremel類似。也支援CSV,JSON,YAML之類的模型。這樣執行引擎就可以支援更多的資料型別。
  • Scalable data source: 支援多種資料來源,現階段以Hadoop為資料來源。

7、ElasticSearch

Elasticsearch是Elastic公司推出的一個基於Lucene的分散式搜尋服務系統,它是一個高可靠、可擴充套件、分散式的全文搜尋引擎,下面簡稱ES,提供了方便的RESTful web介面。ES採用Java語言開發,並作為Apache許可條款下的開放原始碼釋出,它是流行的企業搜尋引擎。與之類似的軟體還有Solr,兩個軟體有一定的相似性。

ES在前幾年的定位一直是文字的倒排索引引擎,用於文字搜尋的場景。最近幾年,Elastic公司將ES用於日誌分析和資料的視覺化,慢慢轉成一個數據分析平臺。它能夠提供類似於OLAP的一些簡單的Count ,Group by 功能。另外,套件中內建的Kibana視覺化工具提供了出色的互動介面,可以對接常用的儀表盤(Dashboard)功能。因此,在一些資料量不大,需要文字搜尋的場景下,直接使用Elaticsearch作為簡單的資料分析平臺也是快速的解決方案。

Elastic主推ELK產品,它是一個提供資料分析功能的套裝,包括LogStash:資料收集、ES:資料索引和 Kibana:視覺化表現。

ES內部使用了Lucence的倒排索引,每個Term後面都關聯了相關的文件ID列表,這種結構比較適合基數較大的列,比如人名,單詞等。Elasticsearch支援靈活的資料輸入,支援無固定格式(Schema Free)的資料輸入,隨時增加索引。

相比Druid,Elaticsearch對於基數大的列能夠提供完美的索引方案,例如文字。Elasticsearch也提供了實時的資料注入功能,但是效能比Druid要慢很多,應為它的索引過程更加複雜。另外一個顯著不同,ES是Schema Free的,也就是說無需定義Schema,就可以直接插入Json資料,進行索引,而且資料結構也支援陣列等靈活的資料型別。Druid需要定義清楚維度和指標列。另外一個很大區別,ES會保持元素的文件資料,而Druid在按照時間粒度資料聚合後,原始資料將會丟棄,因此無法找回具體的某一資料行。

最近幾年,ES一直在增加資料分析的能力,包括各種聚合查詢等,效能提升也很快。如果資料規模不大的情況下,ES也是非常不錯的選擇。Druid更善於處理更大規模,實時性更強的資料。

八、SQL on Hadoop/Spark

Hadoop生態發展了多年,越來越多的公司將重要的日誌資料存入Hadoop的HDFS系統中,資料的持久化和可靠性得到了保證,但是如何快速挖掘出其中的價值確實很多公司的痛點。常用的分析過程有以下幾種:

  • 資料從HDFS匯入到RDBMS/NoSQL
  • 基於HDFS,寫程式碼通過Map Reduce進行資料分析
  • 基於HDFS,編寫SQL直接訪問
  • SQL訪問內部轉為Map Reduce任務
  • 訪問引擎直接訪問HDFS檔案系統

接下來,我們來看看簡單的SQL查詢是如何訪問HDFS的。

1、Hive

Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單的SQL查詢功能,可以將sql語句轉換為Map Reduce任務進行執行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的Map Reduce統計,不必開發專門的Map Reduce應用,十分適合資料倉庫的統計分析。 Hive 並不適合那些需要低延遲的應用,例如,聯機事務處理(OLTP)。Hive 查詢操作過程嚴格遵守Hadoop Map Reduce 的作業執行模型,整個查詢過程也比較慢,不適合實時的資料分析。

幾乎所有的Hadoop環境都會配置Hive的應用,雖然Hive易用,但內部的Map Reduce操作還是帶來非常慢的查詢體驗。所有嘗試Hive的公司,機會都會轉型到Impala的應用。

2、Impala

Impala是Cloudera在受到Google的Dremel啟發下開發的實時互動SQL大資料查詢工具,使用C++編寫,通過使用與商用MPP類似的分散式查詢引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分組成),可以直接從HDFS或HBase中用SELECT、JOIN和統計函式查詢資料,從而大大降低了延遲。 Impala使用的列儲存格式是Parquet。Parquet實現了Dremel中的列儲存,未來還將支援 Hive並新增字典編碼、遊程編碼等功能。 在Cloudera的測試中,Impala的查詢效率比Hive有數量級的提升,因為Impala省去了Map Reduce的過程,減少了終結結果落盤的問題。

Impala

3、Facebook Presto

Presto出生名門,來自於Facebook,從出生起就收到關注。它是用於大資料的一個分散式SQL查詢引擎,系統主要是Java編寫。Presto是一個分散式SQL查詢引擎,它被設計用於專門進行高速、實時的資料分析。它支援標準的ANSI SQL,包括複雜查詢、聚合(aggregation)、連線(join)和視窗函式(window functions)。下圖展現了簡化的Presto系統架構。

Facebook Presto

Facebook Presto

Presto的執行模型和Hive或MapReduce有著本質的區別。Hive將查詢翻譯成多階段的MapReduce任務, 一個接著一個地執行。每一個任務從磁碟上讀取輸入資料並且將中間結果輸出到磁碟上。然而Presto引擎沒有使用Map Reduce。它使用了一個定製的查詢和執行引擎和響應的操作符來支援SQL的語法。除了改進的排程演算法之外,所有的資料處理都是在記憶體中進行的。通過軟體的優化,形成處理的流水線,以避免不必要的磁碟讀寫和額外的延遲。這種流水線式的執行模型會在同一時間執行多個數據處理段,一旦資料可用的時候就會將資料從一個處理段傳入到下一個處理段。這樣的方式會大大的減少各種查詢的端到端響應時間。

九、資料分析雲服務

1、Amazon RedShift

Amazon Redshift 是一種快速、完全託管的 PB 級資料倉庫,可方便你使用現有的商業智慧工具以一種經濟的方式輕鬆分析所有資料。 Amazon Redshift 使用列儲存技術改善 I/O 效率並跨過多個節點平行放置查詢,從而提供快速的查詢效能。Amazon Redshift 提供了定製的 JDBC 和 ODBC 驅動程式,你可以從我們的控制檯的“連線客戶端”選項卡中進行下載,以使用各種各種大量熟悉的 SQL 客戶端。你也可以使用標準的 PostgreSQL JDBC 和 ODBC 驅動程式。資料載入速度與叢集大小、與 Amazon S3、Amazon DynamoDB、Amazon Elastic MapReduce、Amazon Kinesis 或任何啟用 SSH 的主機的整合呈線性擴充套件關係。

2、阿里雲資料倉庫服務

分析型資料庫(Analytic DB),是阿里巴巴自主研發的海量資料實時高併發線上分析(Realtime OLAP)雲端計算服務,使得您可以在毫秒級針對千億級資料進行即時的多維分析透視和業務探索。分析型資料庫對海量資料的自由計算和極速響應能力,能讓使用者在瞬息之間進行靈活的資料探索,快速發現數據價值,並可直接嵌入業務系統為終端客戶提供分析服務。

小結

資料分析的世界繁花似錦,雖然我們可以通過開源/商業,SaaS/私有部署等方式來分類,但是每種資料分析軟體都有自己獨特的定位。大部分組織,在不同的階段會使用不同的軟體解決業務的問題,但是業務對於資料分析的根本需求沒有變化:更多的資料,更快的資料,更多樣的資料來源,更有價值的分析結果,這也是大資料的4V本質。

文章出處、;DBAplus社群