前言 數據科學部為想從事大數據方向學習的小伙伴總結了一下大數據的學習路線,供大家學習參考。由於大數據是一個基礎門檻較高就業前景較好的學習方向。所以打算學習大數據的小伙伴要加油啦! 大數據學習路線: 首先我要瞭解大數據處理流程: 第一步:數據收集 第二部:數據存儲 第三步:數據分析 第四步:數據應用 ... ...
前言
數據科學部為想從事大數據方向學習的小伙伴總結了一下大數據的學習路線,供大家學習參考。由於大數據是一個基礎門檻較高就業前景較好的學習方向。所以打算學習大數據的小伙伴要加油啦!
大數據學習路線:
首先我要瞭解大數據處理流程:
第一步:數據收集
第二部:數據存儲
第三步:數據分析
第四步:數據應用
數據收集
大數據處理的第一步是數據的收集。現在的中大型項目通常採用微服務架構進行分散式部署,所以數據的採集需要在多台伺服器上進行,且採集過程不能影響正常業務的開展。基於這種需求,就衍生了多種日誌收集工具,如 Flume 、Logstash等,它們都能通過簡單的配置完成複雜的數據收集和數據聚合。
數據存儲
收集到數據後,下一個問題就是:數據該如何進行存儲?我們通常熟知的就是把數據存入MySQL、Oracle等傳統的關係型資料庫,這些傳統的資料庫的特點是能夠快速存儲結構化的數據,並支持隨機訪問。但大數據的數據結構通常是半結構化(如日誌數據)、甚至是非結構化的(如視頻、音頻數據),為瞭解決海量半結構化和非結構化數據的存儲,衍生了 Hadoop HDFS 、KFS、GFS 等分散式文件系統,它們都能夠支持結構化、半結構和非結構化數據的存儲,並可以通過增加機器進行橫向擴展。
分散式文件系統完美地解決了海量數據存儲的問題,但是一個優秀的數據存儲系統需要同時考慮數據存儲和訪問兩方面的問題,比如你希望能夠對數據進行隨機訪問,這是傳統的關係型資料庫所擅長的,但卻不是分散式文件系統所擅長的,那麼有沒有一種存儲方案能夠同時兼具分散式文件系統和關係型資料庫的優點,基於這種需求,就產生了 HBase、MongoDB。
數據分析
大數據處理最重要的環節就是數據分析,數據分析通常分為兩種:批處理和流處理。
批處理:對一段時間內海量的離線數據進行統一的處理,對應的處理框架有 Hadoop MapReduce、Spark、Flink 等;
流處理:對運動中的數據進行處理,即在接收數據的同時就對其進行處理,對應的處理框架有 Storm、Spark Streaming、Flink Streaming 等。
批處理和流處理各有其適用的場景,時間不敏感或者硬體資源有限,可以採用批處理;時間敏感和及時性要求高就可以採用流處理。隨著伺服器硬體的價格越來越低和大家對及時性的要求越來越高,流處理越來越普遍,如股票價格預測和電商運營數據分析等。
數據應用
數據分析完成後,接下來就是數據應用的範疇,這取決於你實際的業務需求。比如你可以將數據進行可視化展現,或者將數據用於優化你的推薦演算法,這種運用現在很普遍,比如短視頻個性化推薦、電商商品推薦、頭條新聞推薦等。當然你也可以將數據用於訓練你的機器學習模型,這些都屬於其他領域的範疇,都有著對應的框架和技術棧進行處理,這裡就不一一贅述。
學習路線
學習大數據門檻相對較高,首先要有一定的語言基礎
1.java
大數據框架大多採用 Java 語言進行開發,並且幾乎全部的框架都會提供 Java API 。Java 是目前比較主流的後臺開發語言,所以網上免費的學習資源也比較多。
2.scala
Scala 是一門綜合了面向對象和函數式編程概念的靜態類型的編程語言,它運行在 Java 虛擬機上,可以與所有的 Java 類庫無縫協作,著名的 Kafka 就是採用 Scala 語言進行開發的。
為什麼需要學習 Scala 語言 ? 這是因為當前最火的計算框架 Flink 和 Spark 都提供了 Scala 語言的介面,使用它進行開發,比使用 Java 8 所需要的代碼更少,且 Spark 就是使用 Scala 語言進行編寫的,學習 Scala 可以幫助你更深入的理解 Spark。
Linux基礎
通常大數據框架都部署在 Linux 伺服器上,所以需要具備一定的 Linux 知識。
構建工具
這裡需要掌握的自動化構建工具主要是 Maven。Maven 在大數據場景中使用比較普遍,主要在以下三個方面:
1.管理項目 JAR 包,幫助你快速構建大數據應用程式;
2.不論你的項目是使用 Java 語言還是 Scala 語言進行開發,提交到集群環境運行時,都需要使用 Maven 進行編譯打包;
3.大部分大數據框架使用 Maven 進行源碼管理,當你需要從其源碼編譯出安裝包時,就需要使用到 Maven。
框架學習
我們對框架進行簡單的分類總結:
日誌收集框架:Flume 、Logstash、Kibana
分散式文件存儲系統:Hadoop HDFS
資料庫系統:Mongodb、HBase
分散式計算框架:
- 批處理框架:Hadoop MapReduce
- 流處理框架:Storm
- 混合處理框架:Spark、Flink
查詢分析框架:Hive 、Spark SQL 、Flink SQL、 Pig、Phoenix
集群資源管理器:Hadoop YARN
分散式協調服務:Zookeeper
數據遷移工具:Sqoop
任務調度框架:Azkaban、Oozie
集群部署和監控:Ambari、Cloudera Manager
上面列出的都是比較主流的大數據框架,社區都很活躍,學習資源也比較豐富。建議從 Hadoop 開始入門學習,因為它是整個大數據生態圈的基石,其它框架都直接或者間接依賴於 Hadoop 。接著就可以學習計算框架,Spark 和 Flink 都是比較主流的混合處理框架,Spark 出現得較早,所以其應用也比較廣泛。 Flink 是當下最火熱的新一代的混合處理框架,其憑藉眾多優異的特性得到了眾多公司的青睞。兩者可以按照你個人喜好或者實際工作需要進行學習。
開發工具
這裡推薦一些大數據常用的開發工具:
Java IDE:IDEA 和 Eclipse 都可以。從個人使用習慣而言,更傾向於 IDEA ;
VMware Workstation:在學習過程中,你可能經常要在虛擬機上搭建服務和集群。
MobaXterm:大數據的框架通常都部署在伺服器上,這裡推薦使用 MobaXterm 進行連接。同樣是免費開源的,支持多種連接協議,支持拖拽上傳文件,支持使用插件擴展;
Translate Man:一款瀏覽器上免費的翻譯插件 (谷歌和火狐均支持)。它採用谷歌的翻譯介面,準確性非常高,支持劃詞翻譯,可以輔助進行官方文檔的閱讀。