大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

六月大數據派:Linux新手如何成為大數據工程師?附學習路線資料

一、首先大數據是什麼?

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

大數據,big data,《大數據》一書對大數據這麼定義,大數據是指不能用隨機分析法(抽樣調查)這樣捷徑,而採用所有數據進行分析處理。

這句話至少傳遞兩種信息:

1、大數據是海量的數據

2、大數據處理無捷徑,對分析處理技術提出了更高的要求

二、大數據的處理流程

下圖是數據處理流程:

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

1、底層是數以千億計的數據源,數據源可以是SCM(供應鏈數據),4PL(物流數據),CRM(客戶數據),網站日誌以及其他的數據

2、第二層是數據加工層,數據工程師對數據源按照標準的統計口徑和指標對數據進行抽取、清洗、轉化、裝載(整個過程簡稱ELT)

3、第三層是數據倉庫,加工後的數據流入數據倉庫,進行整合和存儲,形成一個又一個數據集市。

數據集市,指分類存儲數據的集合,即按照不同部門或用戶的需求存儲數據。

4、第四層是BI(商業智能),按照業務需求,對數據進行分析建模、挖掘、運算,輸出統一的數據分析平臺

5、第五層是數據訪問層,對不同的需求方開放不同的數據角色和權限,以數據驅動業務。

大數據的量級,決定了大數據處理及應用的難度,需要利用特定的技術工具去處理大數據。

三、大數據處理技術

以最常使用的Hadoop為例:

Hadoop是Apache公司開發的一個開源框架,它允許在整個集群使用簡單編程模型計算機的分佈式環境存儲並處理大數據。

集群是指,2臺或2臺以上服務器構建節點,提供數據服務。單臺服務器,無法處理海量的大數據。服務器越多,集群的威力越大。

Hadoop類似於一個數據生態圈,不同的模塊各司其職。下圖是Hadoop官網的生態圖。

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

Hadoop的LOGO是一隻靈活的大象。關於LOGO的來源,網上眾說紛紜,有人說,是因為大象象徵龐然大物,指代大數據,Hadoop讓大數據變得靈活。而官方蓋章,LOGO來源於創始人Doug Cutting的孩子曾為一個大象玩具取名hadoop。

從上圖可以看出,Hadoop的核心是HDFS,YARN和Map Reduce,下面和大家講一講,幾個主要模塊的含義和功能。

1、HDFS(分佈式文件存儲系統)

數據以塊的形式,分佈在集群的不同節點。在使用HDFS時,無需關心數據是存儲在哪個節點上、或者是從哪個節點從獲取的,只需像使用本地文件系統一樣管理和存儲文件系統中的數據。

2、Map Reduce(分佈式計算框架)

分佈式計算框架將複雜的數據集分發給不同的節點去操作,每個節點會週期性的返回它所完成的工作和最新的狀態。大家可以結合下圖理解Map Reduce原理:

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

計算機要對輸入的單詞進行計數:

如果採用集中式計算方式,我們要先算出一個單詞如Deer出現了多少次,再算另一個單詞出現了多少次,直到所有單詞統計完畢,將浪費大量的時間和資源。

如果採用分佈式計算方式,計算將變得高效。我們將數據隨機分配給三個節點,由節點去分別統計各自處理的數據中單詞出現的次數,再將相同的單詞進行聚合,輸出最後的結果。

3、YARN(資源調度器)

相當於電腦的任務管理器,對資源進行管理和調度。

4、HBASE(分佈式數據庫)

HBase是非關係型數據庫(Nosql),在某些業務場景下,數據存儲查詢在Hbase的使用效率更高。

關於關係型數據庫和菲關係型數據庫的區別,會在以後的文章進行詳述。

5、HIVE(數據倉庫)

HIVE是基於Hadoop的一個數據倉庫工具,可以用SQL的語言轉化成Map Reduce任務對hdfs數據的查詢分析。HIVE的好處在於,使用者無需寫Map Reduce任務,只需要掌握SQL即可完成查詢分析工作。

6、 Spark(大數據計算引擎)

Spark是專為大規模數據處理而設計的快速通用的計算引擎

7、Mahout(機器學習挖掘庫)

Mahout是一個可擴展的機器學習和數據挖掘庫

8、Sqoop

Sqoop可以將關係型數據庫導入Hadoop的HDFS中,也可以將HDFS的數據導進到關係型數據庫中

除上述模塊外,Hadoop還有Zookeeper、Chukwa等多種模塊,因為是開源的,所以未來還有出現更多更高效的模塊,大家感興趣可以上網瞭解。

通過Hadoop強大的生態圈,完成大數據處理流程。

其實 Hadoop 其中一個很有價值的應用是做 BI (Business Intelligence)。 但它的設計架構一開始並不是針對BI起家的,而是更貼近於搜尋引擎建立索引這樣的工作。 在 BI 中最關鍵的事是處理時間序列的資料,資料清理,以及資料整合 (data join)。 以筆者個公司來說,就必須客制非常多的架構來讓它變得更適合 BI。 儘管 pig/hive 等上層工具一部分目的也是使其更容易操作 BI 。

大數據工程師的核心技能指標

看完前一章大數據的歷史,讀者有沒有對產業的發展脈絡稍微有概念一點了呢? 筆者目前在美國工作,就筆者觀察其實現在臺灣美國都還有非常多大數據工程師的就業機會。 即使大數據這名詞稍微退燒(或許是太多招搖撞騙的人吧), 但隨著軟體業近年來負載量愈來愈大,對後端處理資料的需求其實也是變得愈來愈高。 無奈資料工程這技能學校不會教,因為沒有學術價值。 在業界內除非進入資料團隊,不然也不會接觸到。 最糟的是,各家公司內部的資料團隊素質也良莠不齊,要學到好的資料工程技術真的只能靠運氣。 筆者的公司算得上是資料工程做得還不錯的,以下為筆者認定的大數據核心技能

分析及設計高延展性 (highly scalable) 程式

能寫出常見的 data operation 如 join, de-duplicate, group-by

能處理 data skew (資料過度集中在少數的 key)的問題

知道如何選擇 map output key, 以及 secondary key sort 的排序設計

能驗證資料正確性

設計 regression test system. 每次資料系統更新都能檢驗前後處理的差別

可以撰寫工具檢驗大量的數據正確性

從一開始規劃系統就讓它具有高度的可驗證性,以及嚴格的驗證它

將資料工程自動化的能力

可以處理資料相依性問題

自動處理錯誤的策略

要能 revert & reprocess

使用 control table 去控制及追蹤不同工做的 state

系統維護

透過 log & stacktrace 來 debug

知道基本的系統平臺管理。JobTracker, HDFS 等指令要熟悉

瞭解各種 Map Reduce 參數,可以調校效能參數

實事求是的精神

做資料工程或分析,最忌諱的就是騙自己。永遠不要用猜的,要用資料來驗證自己的想法是否正確。

各種資料系統設計都有隱藏的代價,不要對這些代價視而不見。

挖掘問題先於尋找解決方案。只有完全瞭解自己的需求後,才能在多種方案中選擇最適合自己的一個。

以上的技能集中在如何成為大數據工程師。資料科學的訓練不記入其中,因為光是達到以上的技能就已經很花時間啦。 當這些技能都練得相當不錯時,再跨足資料科學,其實也不太難。 不過通常是分工合作更簡單一些,因為學資料科學的人遠比資料工程多很多。

大數據工程技能樹該如何點?

初級

學習目標:能獨立開發 highly scalable 的程式及演算法。更高階的資料系統設計不包含在內。

學習架構

建立開發環境

寫最簡易的 SQL operation

寫中階的 SQL operation

寫 SQL 難以辦到的功能

淺論資料工程架構 (dedup, join, aggregation)

開始有能力分析資料演算法的複雜度,以及瞭解 data skew 的處理策略

能透過 log & stack trace 找出自己程式哪裡寫錯

高級

學習目標:學會許多更深入的技能,並且能規劃高階的資料系統設計。

serialization & data collection strategy

End to end trace data design

control table & automation design

lower level API (inputformat, outputformat, etc.)

advanced java tricks

analyze performance factor

MR network cost calculation, advanced MapReduce

初級的學習大概五六個月內可以精通。筆者當年就是花差不多的時間無師自通的。

大數據基礎路線:

第一階段:Linux理論

(1)Linux基礎;(2)Linux-shell編程;(3)高併發:lvs負載均衡;(4)高可用&反向代理

第二階段:Hadoop理論

(1)hadoop-hdfs理論;(2)hadoop-hdfs集群搭建;(3)hadoop-hdfs 2.x & api ;(4)hadoop-MR理論 ;

(5)hadoop-MR開發分析;(6)hadoop-MR源碼分析 ;(7)hadoop-MR開發案例

第三階段:Hive理論

(1)Hive介紹以及安裝 ;(2)Hive實戰

第四階段:HBase

(1)HBase介紹以及安裝 ;(2)HBase調優

第五階段: redis理論

(1)redis類型 ; (2) redis高級

第六階段:Zookeeper理論

(1)Zookeeper介紹 ;(2) Zookeeper使用

第七階段: Scala語法

(1)Scala語法介紹;(2)scala語法實戰

第八階段: Spark理論

(1)Spark介紹;(2)Spark代碼開發流程 ; (3)Spark集群搭建;(4) Spark資源調度原理;

(5)Spark任務調度;(6)Spark案例;(7)Spark中兩種最重要shuffle;

(8)Spark高可用集群的搭建;(9)SparkSQL介紹;(10) SparkSQL實戰 ;

(11)SparkStreaming介紹;(12)SparkStreaming實戰

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

第九階段:機器學習介紹

(1) 線性迴歸詳解; (2)邏輯迴歸分類算法; (3)Kmeans聚類算法; (4)KNN分類算法; (5)決策樹 隨機森林算法

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

從零基礎到項目實戰,實時交易監控系統,推薦系統理論,數據庫搭建等等

第十階段:Elasticsearch理論

(1)Elasticsearch搜索原理; (2) Elasticsearch實戰

第十一階段:Storm理論

(1)Storm介紹以及代碼實戰;(2)Storm偽分佈式搭建以及任務部署; (3)Storm架構詳解以及DRCP原理;

(4) 虛擬化理論kvm虛擬化 ; (5) docker

1,_推薦系統理論與實戰項目 Part2

2,推薦系統理論與實戰 項目Part1

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

3.實時交易監控系統項目(下)

4,實時交易監控系統項目(上)

5,用戶行為分析系統項目1

6,用戶行為分析系統項目2

7,大數據批處理之HIVE詳解

8,ES公開課 part1

9,spark_streaming_

10,數據倉庫搭建詳解

11,大數據任務調度

12,流數據集成神器Kafka

13,Spark 公開課

14,海量日誌收集利器:Flume

15,Impala簡介

16,Hive簡介

17,MapReduce簡介

18海量數據高速存取數據庫 HBase

19,淺談Hadoop管理器yarn原理

20,,分佈式全文搜索引擎ElasticSearch Part2

結語:以上就是大數據從入門到精通的學習路線了,並且有許多項目實戰供大家實踐。祝大家工作順利,步步高昇!

---------------------

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

大數據知識派:Linux新手如何成為大數據工程師?附學習路線資料

私我 私 我 1 帶走 乾貨

相關推薦

推薦中...