天天看點

大寶大話大資料(一) ——大資料的整體架構

學習和使用大資料工具已經一年多了,經曆了看書自學,實習實踐,了解原理這幾個重要階段的鋪墊後,自我感覺算是對大資料開發初步入門了。也想借此機會對所學内容做一個總結和歸納。友善自己查閱的同時,也希望幫助到需要的同學。全部内容會更新在我的github上,手搜https://github.com/tygxy。

本系列的寫作安排主要圍繞自己的知識體系展開,主要涉及三個方面的内容:大資料整體概述和學習方法、大資料常見元件的使用、元件原理串講。這三個方面分别對應不同讀者的三類需求,即

    - Part 1 大資料究竟是什麼,怎麼學?

    - Part 2 大資料元件在開發中怎麼用?

    - Part 3 這些元件的原理是什麼?

以上三個方面分别對應大資料小白,入門,找工作三個不同深度的需求,如果隻是想了解概念,隻讀Part 1即可;如果是在開發中需要具體使用,建議閱讀到Part 2;如果需要參與實習秋招,就必須對常見元件的原理有一定的了解,可以參閱Part 3。

恕本人愚鈍,自己的技術水準還很初級,使用和了解的程度還遠遠不夠,甚至有錯。隻期望抛磚引玉,非常歡迎大佬批評指正,互相探讨,共同提高。

閑話少叙,本期這一節主要是介紹大資料的骨架,希望通過這一節,讀者可以對大資料有一個架構般的認識。

大寶大話大資料(一) ——大資料的整體架構

大資料,我的了解是用分布式手段去解決海量資料在收集、存儲、流轉、計算、消費中的問題。如圖所示,借用通信原理中最常見的信源-信道-信宿的結構概念。我嘗試畫出了資料從産生到消費的過程。幾乎所有元件都是嘗試解決上述問題中的一部分,并最終整合起來,構成大資料的整體解決方案。

大寶大話大資料(一) ——大資料的整體架構

如圖所示,這是我現階段了解的大資料架構,主要基于Hadoop2.0+。

整體看分為五個層次,從下到上分别是采集層、存儲層、排程層、計算層、互動層。

先說存儲層,海量資料在單機内已經無法存儲,解決方案是依靠分布式。将資料存儲在N台機器構成的叢集之上,并依賴一定的HA(High Available)機制保證資料的可靠性和可拓展性。開源的方案就是Hadoop中的HDFS元件,作為分布式檔案系統,HDFS是海量檔案的存儲池,也是整個大資料生态體系的基石之一。

在存儲層之上,就是排程層。Hadoop2.0提供的解決方案是Yarn。我們可以假想一個場景,在大資料平台之上,肯定會有很多作業任務需要運作,那麼如何将叢集的資源配置設定,如何排程這些Task任務完成,這就依賴Yarn做統一安排。Yarn作為通用資源排程器,可以管理MapReduce、Spark、Storm等諸多作業。

再往上就是大資料的另外一個核心,計算層。針對批處理、流計算兩類不同的業務場景,分别衍生出MapReduce、Spark、Storm、Spark Steaming、Flink等計算架構。不同的公司有不同的技術選型,這些計算架構,在各自的領域發揮着強大效能。作為大資料開發工程師,需要熟悉幾個架構的程式設計。

最上面是互動層,它們是為了友善開發,提供的一些便捷元件。比如Hive可以做資料倉庫、Spark SQL可以操作一些結構化資料、Impala可以做實時互動式查詢等。本質來說,上述工具可以了解成“接口”,最終都會轉換成計算層的執行引擎去具體執行。互動層的工具友善了我們的開發,也是我們工作中必不可少的利器。

翻回頭我們在談一下采集層,采集層是用來收集和轉發資料。Flume是日志收集工具,Kafka是經典的消費隊列,Sqoop是ETL工具等。這些工具同樣是為了解決大資料進行中的一些具體場景誕生的應用,對整個生态圈起到了支撐的拓展的作用。

在圖的最左側是Zookeeper,為整個叢集的部分元件,比如HBase,Kafka提供協調服務。它是叢集的管理者,監視着叢集中各個節點的狀态并根據節點的回報做合理的操作。

綜上,我們看到采集層解決的是大資料的收集和流通,存儲層解決的是大資料的存儲,計算層和互動層解決的是大資料的計算和消費問題。

通過剛才的闡述,我希望小白同學了解幾個方面的問題:

    - 大資料解決了什麼問題

    - 這一套流程的總體架構是什麼,分為哪幾個層級,每個層級具體幹什麼

    - 幾個常用的元件分别所屬哪些層級

看完這篇文章,如果對上面三個問題有了答案,就再好不過了。

剛才的三個問題也是對我這篇文章的一個簡單梳理,大資料涉及的内容比較多,乍一看挺複雜的,但是本質上講不難。下一篇文章,我會結合自己有限的學習經曆,講講應該如何學習大資料。

謝謝大家!

繼續閱讀