大數據技術棧

該圖基本上全面介紹了大數據技術棧中全部的內容,參考自阿里雲社區https://yq.aliyun.com/articles/171813算法

如下轉載了相關的技術棧說明 http://www.javashuo.com/article/p-eqhfqdmg-bv.html ,後續我也會基於本文和工做中遇到的技術來進行補充。數據庫

1 先說各類數據存儲

數據是個很泛的概念,可是咱們腦海裏第一反應的就是關係型數據庫和EXCEL這種二維表是數據。apache

而如今數據各類各樣特點,有文檔、有圖片、有流式的音頻視頻、有日誌數據、有IM消息數據、有索引數據、有社交應用的網狀關係數據、有地圖數據。他們對存儲訪問都有不一樣的要求,於是NoSQL興起了。安全

如KV型,前後出現了Memcached、Redis。如文檔型,出現了CouchDB、MongoDB。如日誌數據,也出現了Facebook Scribe、Flume、Logstash。服務器

即便在傳統關係型數據領域,因爲大數據規模也出現了真正的分佈式關係型數據庫,如GreenPlum、TiDB、OceanBase網絡

爲了多維分析,也出現了專門的列式數據庫,如HBase。架構

2 數據倉庫

各式各樣的數據,經由各類上層應用進行了採集和存儲。但咱們一提到大數據,天然想到的就是大數據分析。大數據分析的第一步就是大數據倉庫建設。框架

大數據倉庫建設,必要的工做就是ETL(抽取、轉換、導入)。抽取,這步就又細分爲:數據抽取、數據清洗、數據校驗。在轉換這步,咱們也須要關注數據安全脫敏,也就是說,進入大數據倉庫的數據須要分級。運維

不過你們通常建設大數據倉庫,首先作的第一個應用工做就是:主數據治理。因此這個第一期,須要作:主數據標準制定、主數據清洗與校驗、主數據轉換(拆分合並)、主數據複製分發、主數據訪問OpenAPI。機器學習

數據複製分發,咱們可使用消息隊列和調度服務來工做。消息隊列如Kafka、ZeroMQ、ActiveMQ、RabbitMQ。調度服務如ZooKeeper。

數據抽取傳輸開源項目,我能看到的Sqoop on Hadoop。可能不少數據都是直接被Spark、Storm、Presto、Hbase處理了。

3 大數據倉庫基礎架構

如今建大數據倉庫,須要的是分佈式存儲和分佈式計算,不再是過去幾十臺服務器和幾百T存儲這麼簡單的。這都是要以萬計的,這纔是真正的大數據。而要建造這麼大規模的大數據倉庫,須要分佈式存儲和分佈式計算基礎框架支撐。

咱們第一個就要提出的就是Hadoop。目前它已經成爲了一個生態。Hadoop最核心是兩塊:分佈式文件系統HDFS、MapReduce。MapReduce又分爲MAP(分解任務)、Reduce(合併結果)兩部分。

如今有個新玩意叫YARN,不過YARN並非MapReduce2.0。在MapReduce中資源管理和做業管理均是由JobTracker實現的,集兩個功能於一身,而在新的Hadoop2.0架構中,MapReduce做業管理由ApplicationMaster實現,而資源管理由新增系統YARN完成。Hadoop Corona是facebook開源的下一代MapReduce框架。其基本設計動機和Apache的YARN一致。就是由於你們都在解決同一個問題,只不過不一樣時間段開源出來不一樣的解決方案項目,因此使你們大呼到底要用哪一個啊。

如今又出來一個新玩意叫:Mesos。Mesos是更寬泛的資源管理框架,不只能夠管理偏重於半結構化的大數據框架,也能夠管理非結構化的框架。人們也在對比Mesos和Kubernetes,其實Kubernetes只是目前聚焦於容器的管理,而Mesos野心更大,固然也抽象的更通用化,留下各類抽象接口,以管理各類資源。

有人還把ZooKeeper和YARN、Mesos比較。其實Zookeeper已經成爲最基層最具體最不可或缺的真正的協調執行者了。而YARN成爲了大數據處理資源管理框架,而Mesos更成爲了有史以來更大集成者更通用的資源管理框架了。

4 大數據計算框架

在大數據處理領域,目前當紅炸子雞是:Spark、Storm、Flink。

Spark切的領域在MapReduce工做的領域,不過Spark大量把MAP中間結果放到內存中,因此顯得性能特別快。如今Spark也在往生態走,但願可以上下游通吃,一套技術棧解決你們多種需求,因此你們又漸漸看不清楚Spark聚焦的領域了。Spark Shark,是爲了VS hadoop Hive,Spark Streaming是爲了VS Storm。

Storm擅長處理實時流式。好比日誌,好比網站購物的點擊流,是源源不斷、按順序的、沒有終結的,因此經過Kafka等消息隊列來了數據後,Storm就一邊開始工做。Storm本身不收集數據也不存儲數據,隨來隨處理隨輸出結果。

它們都有各自的特點,但他們都沒法給你處理具體的業務應用,它們只是大規模分佈式計算的通用框架,因此具體用他們的特性幹什麼,還得你本身寫。這就是大數據業務領域分析系統的事了。

不過,下面我會介紹一些技術,在特定的業務領域,可以幫你更簡單的達成業務應用須要。

5 大數據應用技術

  • 大數據搜索:Lucene、Solr、ElasticSearch。ElasticSearch是新推出的比Solr在大規模數據狀況下更好的開源解決方案。

  • 大數據查詢:這裏有Hive/Impala,Hive的做用是你能夠把結構化數據導入到Hadoop中而後用簡單SQL來作查詢。你能夠把Impala看作是性能更快的Hive,由於Impala不強依賴MapReduce。而Facebook開源的Presto更是能查詢多種數據源,並且一條Presto查詢能夠將多個數據源的數據進行合併。

  • 大數據分析:我們要提到去年新晉頂級Apache項目的Kylin。它創始於ebay,2014年進入apache孵化項目。Kylin不只僅能作SQL查詢,並且能作Cube多維分析。

  • 大數據挖掘:這個領域包含精準推薦、機器學習/深度學習/神經網絡、人工智能。自從AlphaGo火了之後,機器學習再度火熱。Google開源了最新機器學習系統TensorFlow,微軟亞洲研究院開源了分佈式機器學習工具包-DMTK,雅虎也開源了Caffe On Spark 深度學習。Mahout是Apache的一個開源項目,提供一些機器學習領域經典算法的實現,包括聚類、分類、推薦過濾、頻繁子項挖掘。

6 數據可視化工具

這塊有大量的可視化開源組件,但成系統的開源的確實出色的很少。這裏面大有可玩。

Airbnb近日開源了數據探查與可視化平臺Caravel。另外,百度推出的Echarts組件也不作,能夠基於此作些系統性的工做。

7 數據平臺監控運維

這裏只看到一套完整的適用於海量日誌處理的工具:Facebook Scribe、Flume、Logstash、Kibana。但我以爲,如此複雜的大數據平臺技術棧,一套成熟的監控運維繫統,是必需要出現的。

8 最後總結:大數據平臺建設總藍圖

做爲我們平常業務,最直接的須要就是一套能分析具體業務的應用系統,但這套應用系統須要不少基礎技術架構和服務才能達成。爲了讓你們有所預期,因此我把這些必備前提儲備列出來。

技術平臺建設:

  • 大數據基礎架構:推薦Hadoop、HDFS、YARN;大數據計算框架:推薦Spark;大數據日誌收集推薦Flume+Logstash+Kibana。咱們須要部署依賴中間件Zookeeper。

  • 大數據倉庫平臺建設:分佈式關係型TiDB、KV式Redis、文檔型MongoDB、列式Hbase

  • 大數據搜索,推薦選擇Lucene、ElasticSearch;大數據查詢,推薦選擇Presto;大數據多維分析,推薦Kylin;大數據挖掘,推薦挖掘開源算法包MashOut。

大數據整理服務:

  • 主數據管理:主數據標準制定、主數據清洗與校驗、主數據轉換(拆分合並)、主數據複製分發、主數據訪問OpenAPI。

  • ETL:數據抽取、數據清洗、數據校驗、數據安全脫敏

大數據分析系統建設:

  • 大數據展現平臺建設

  • 大數據商業應用模型建模

  • 大數據應用分析系統設計與開發

大數據分析服務:

  • 大數據分析解讀報告

看看,大數據建設很複雜,你們必定要沉住氣,一期期來作,這個週期和投入將會很大,不是設計個分析模型、開發個分析系統這麼簡單的。若是就是那樣簡單的,其實就是個披着大數據的報表系統而已。

相關文章
相關標籤/搜索