想作數據科學家/工程師?從零開始系統規劃大數據學習之路

大數據的領域很是普遍,每每使想要開始學習大數據及相關技術的人望而生畏。大數據技術的種類衆多,這一樣使得初學者難以選擇從何處下手。java

關注做者:須要大數據學習視頻資料,其餘文章能夠找到大神組織python

這正是我想要撰寫本文的緣由。本文將爲你開始學習大數據的征程以及在大數據產業領域找到工做指明道路,提供幫助。目前咱們面臨的最大挑戰就是根據咱們的興趣和技能選定正確的角色。linux

爲了解決這個問題,我在本文詳細闡述了每一個與大數據有關的角色,同時考量了工程師以及計算機科學畢業生的不一樣職位角色。面試

我儘可能詳細地回答了每一項人們在學習大數據過程當中遇到或可能會遇到的問題。爲幫助你根據興趣選擇發展途徑,我添加了一組樹圖,相信會對你找到正確的途徑有所幫助。sql

註釋:學習之路樹狀圖數據庫

在這個樹狀圖的幫助下,你能夠根據你的興趣和目標選擇路徑。 而後,你能夠開始學習大數據的旅程了。 後臺回覆「職業路徑」3個字,下載高清版本。apache

目錄表編程

1.如何開始?bash

大數據學習羣;722680258零基礎到項目實戰,歡迎加入網絡

2.在大數據領域有哪些職位需求?

3.你的領域是什麼,適合什麼方向?

4.勾勒你在大數據領域的角色

5.如何成爲一名大數據工程師?

o什麼是大數據行業術語?

o你須要瞭解的系統和結構

o學習去設計解決方案而且學習相關技術

6.大數據學習路徑

7.資源

1.如何開始?

人們想開始學習大數據的時候,最常問個人問題是,「我應該學Hadoop(hadoop是一款開源軟件,主要用於分佈式存儲和計算,他由HDFS和MapReduce計算框架組成的,他們分別是Google的GFS和MapReduce的開源實現。因爲hadoop的易用性和可擴展性,所以成爲最近流行的海量數據處理框架。hadoop這個單詞來源於其發明者的兒子爲一個玩具大象起的名字。), 分佈式計算,Kafka(Kafka是由LinkedIn開發的一個分佈式基於發佈/訂閱的消息系統),NoSQL(泛指非關係型的數據庫)仍是Spark(Spark 是一種與 Hadoop 類似的開源集羣計算環境,可是二者之間還存在一些不一樣之處)?」

而我一般只有一個答案:「這取決於你究竟想作什麼。」

所以,讓咱們用一種有條理的方式來解決這個問題。咱們將一步步地探索這條學習之路。

  1. 在大數據行業有哪些職業需求?

在大數據行業中有不少領域。一般來講它們能夠被分爲兩類:

大數據工程

大數據分析

這些領域互相獨立又互相關聯。

大數據工程涉及大量數據的設計,部署,獲取以及維護(保存)。大數據工程師須要去設計和部署這樣一個系統,使相關數據能面向不一樣的消費者及內部應用。

而大數據分析的工做則是利用大數據工程師設計的系統所提供的大量數據。大數據分析包括趨勢、圖樣分析以及開發不一樣的分類、預測預報系統。

所以,簡而言之,大數據分析是對數據的高級計算。而大數據工程則是進行系統設計、部署以及計算運行平臺的頂層構建。

3.你的領域是什麼,適合什麼方向?

如今咱們已經瞭解了行業中可供選擇的職業種類,讓咱們想辦法來肯定哪一個領域適合你。這樣,咱們才能肯定你在這個行業中的位置。

一般來講,基於你的教育背景和行業經驗咱們能夠進行以下分類:

教育背景

(包括興趣,而不必定與你的大學教育有關)

計算機科學

數學

行業經驗

新人

數據學家

計算機工程師(在數據相關領域工做)

所以,經過上面的分類,你能夠把本身的領域定位以下:

例1:「我是一名計算機科學畢業生,不過沒有堅實的數學技巧。」

你對計算機科學或者數學有興趣,可是以前沒有相關經驗,你將被定義爲一個新人。

例2:「我是一個計算機科學畢業生,目前正從事數據庫開發工做。」

你的興趣在計算機科學方向,你適合計算機工程師(數據相關工程)的角色。

例3:「我正做爲數據科學家從事統計工做。」

你對數學領域有興趣,適合數據科學家的職業角色。

所以,參照着定位你的領域吧。

(此處定義的領域對你肯定在大數據行業的學習路徑相當重要。)

4.根據領域規劃你的角色

如今你已經肯定了你的領域,下一步,讓咱們規劃出你要努力的目標職位吧。

若是你有卓越的編程技巧並理解計算機如何在網絡(基礎)上運做,而你對數學和統計學毫無興趣,在這種狀況下,你應該朝着大數據工程職位努力。

若是你擅長編程同時有數學或者統計學的教育背景或興趣,你應該朝着大數據分析師職位努力。

5.如何成爲一名大數據工程師

讓咱們先定義一下,一名受到行業認可的大數據工程師都須要學習和了解什麼。首先以及最重要的一步是確認你的需求。你不能在不清楚我的需求的狀況下直接開始學習大數據。不然,你將一直盲人摸象。

爲了明確你的需求,你必須瞭解經常使用的大數據術語。因此讓咱們來看一下大數據到底意味着什麼?

5.1 大數據術語

大數據工程一般包括兩個方面 – 數據需求以及處理需求。

5.1.1 數據需求術語

結構:你應該知道數據能夠儲存在表中或者文件中。儲存在一個預約義的數據模型(即擁有架構)中的數據稱爲結構化數據。若是數據儲存在文件中且沒有預約義模型,則稱爲非結構化數據。(種類:結構化/非結構化)。

容量:咱們用容量來定義數據的數量。(種類:S/M/L/XL/XXL/流)

Sink吞吐量:用系統所能接受的數據率來定義Sink吞吐量。(種類:H/M/L)

源吞吐量:定義爲數據更新和轉化進入系統的速度。(種類:H/M/L)

5.1.2 處理需求術語

查詢時間:系統查詢所需時間。(種類:長/中/短)

處理時間:處理數據所需時間。(種類:長/中/短)

精度:數據處理的精確度。(種類:準確/大約)

5.2 你須要知道的系統和架構

情景1:

爲分析一個公司的銷售表現須要設計一個系統,即建立一個數據池,數據池來自於多重數據源,好比客戶數據、領導數據、客服中心數據、銷售數據、產品數據、博客等。

5.3 學習設計解決方案和技術

情節1的解決方案:銷售數據池

(這是個人我的解決方案,若是你想到一個更高明的解決方案請在下面分享一下)

那麼,一個數據工程師會怎樣解決這個問題呢?

須要記住的一點是,大數據系統的目的不只僅是無縫整合各類來源的數據,而使其可用,同時它必須能使得,用於開發應用系統的數據的分析和利用變得簡單迅速和易得(在這個案例中是智能控制面板)。

定義最後的目標:

  1. 經過整合各類來源的數據建立一個數據池。

  2. 每隔必定時間自動更新數據(在這個案例中多是一週一次)。

  3. 可用於分析的數據(在記錄時間內,甚至多是天天)

  4. 易得的架構和無縫部署的分析控制面板。

既然咱們知道了咱們最後的目標,讓咱們儘可能用正式術語制定咱們的要求吧。

5.3.1 數據相關要求

結構:大部分數據是結構化的,並具備一個定義了的數據模型。但數據源如網絡日誌,客戶互動/呼叫中心數據,銷售目錄中的圖像數據,產品廣告數據等是非結構化的。 圖像和多媒體廣告數據的可用性和要求可能取決於各個公司。

結論:結構化和非結構化數據

大小:L或XL(選擇Hadoop)

Sink 吞吐量:高

質量:中等(Hadoop&Kafka)

完整性:不完整

5.3.2 處理相關要求

查詢時間:中至長

處理時間:中至短

精度:準確

隨着多個數據源的集成,重要的是要注意不一樣的數據將以不一樣的速率進入系統。 例如,網絡日誌可用高顆粒度連續流進入系統。

基於上述咱們對系統要求的分析,咱們能夠推薦如下大數據體系。

6.大數據學習路徑

如今,你已經對大數據行業,大數據從業人員的不一樣角色和要求有所瞭解。 咱們來看看你應該遵循哪條路來成爲一名大數據工程師。

咱們知道大數據領域充斥着多種技術。 所以,你學習與你的大數據工做角色相關的技術很是重要。這與任何常規領域有點不一樣,如數據科學和機器學習中,你能夠從某些地方開始並努力完成這一領域內的全部工做。

下面你會發現一個你應該經過的樹狀圖,以找到你本身的路。即便樹狀圖中的一些技術被指向是數據科學家的強項,可是若是你走上一條路,知道全部的技術直到「樹葉節點」老是很好的。 該樹狀圖源自lambda架構範例。

註釋:學習之路樹狀圖

任何想要調配應用程序的工程師必須知道的基本概念之一是Bash 腳本編程。你必須對linux和bash 腳本編程感到溫馨。這是處理大數據的基本要求。

核心是,大部分大數據技術都是用Java或Scala編寫的。可是別擔憂,若是你不想用這些語言編寫代碼,那麼你能夠選擇Python或者R,由於大部分的大數據技術如今都支持Python和R。

所以,你能夠從上述任何一種語言開始。 我建議選擇Python或Java。

接下來,你須要熟悉雲端工做。 這是由於若是你沒有在雲端處理大數據,沒有人會認真對待。 請嘗試在AWS,softlayer或任何其餘雲端供應商上練習小型數據集。 他們大多數都有一個免費的層次,讓學生練習。若是你想的話,你能夠暫時跳過此步驟,但請務必在進行任何面試以前在雲端工做。

接下來,你須要瞭解一個分佈式文件系統。最流行的分佈式文件系統就是Hadoop分佈式文件系統。在這個階段你還能夠學習一些你發現與你所在領域相關的NoSQL數據庫。下圖能夠幫助你選擇一個NoSQL數據庫,以便根據你感興趣的領域進行學習。

到目前爲止的路徑是每一個大數據工程師必須知道的硬性基礎知識。

如今,你決定是否要處理數據流或靜止的大量數據。 這是用於定義大數據(Volume,Velocity,Variety和Veracity)的四個V中的兩個之間的選擇。

那麼讓咱們假設你已經決定使用數據流來開發實時或近實時分析系統。 以後你應該採起卡夫卡(kafka)之路,或者還能夠採起Mapreduce的路徑。而後你按照你本身建立的路徑。 請注意,在Mapreduce路徑中,你不須要同時學習pig和hive。 只學習其中之一就足夠了。

總結:經過樹狀圖的方式。

從根節點開始,並執行深度優先的經過方式。

在每一個節點中止查驗連接中給出的資源。

若是你有充足的知識,而且在使用該技術方面有至關的信心,那麼請轉到下一個節點。

在每一個節點嘗試完成至少3個編程問題。

移動到下一個節點。

到達樹葉節點。

從替代路徑開始。

最後一步(#7)阻礙你! 說實話,沒有應用程序只有流處理或慢速延遲數據處理。 所以,你在技術上須要成爲執行完整的lambda架構的高手。

另外,請注意,這不是學習大數據技術的惟一方法。 你能夠隨時建立本身的路徑。 但這是一個能夠被任何人使用的路徑。

若是你想進入大數據分析世界,你能夠遵循相同的路徑,但不要嘗試讓全部東西都變得完美。

對於可以處理大數據的數據科學家,你須要在下面的樹狀圖中添加一些機器學習渠道,並將重點放在機器學習渠道上,而不是下面提供的樹狀圖。 但咱們能夠稍後討論機器學習渠道。

根據你在上述樹狀圖中使用的數據類型,添加選擇的NoSQL數據庫。

該表格表示數據存儲類型要求及相應的軟件選擇

如你所見,有大量的NoSQL數據庫可供選擇。 因此它經常取決於你將要使用的數據類型。

並且爲了給採用什麼類型的NoSQL數據庫提供一個明確的答案,你須要考慮到你的系統需求,如延遲,可用性,彈性,準確性固然還有你當前處理的數據類型。

7.資源

初學者的Bash指南,來自Machtelt Garrels

1.Python

讓每一個人變成python專家,來自Coursera(https://www.coursera.org/specializations/python)

用Python學數據科學之路,來自Coursera(https://www.analyticsvidhya.com/learning-paths-data-science-business-analytics-business-intelligence-big-data/)

  1. Java

Java編程簡介1:開始使用Java編碼,來自 Udemy(https://www.edx.org/course/introduction-programming-java-1-starting-uc3mx-it-1-1x)

中級和高級Java編程,來自Udemy(https://www.udemy.com/intermediate-advanced-java-programming/)

Java 編程介紹2,來自 Udemy(https://www.edx.org/course/introduction-programming-java-2-writing-uc3mx-it-1-2x)

面向對象Java編程:數據結構和超越專業化,來自Coursera(https://www.coursera.org/specializations/java-object-oriented)

大數據技術基礎,來自亞馬遜網絡服務(https://www.edx.org/course/introduction-programming-java-starting-uc3mx-it-1-1x)

AWS上的大數據,來自亞馬遜網絡服務(https://aws.amazon.com/training/course-descriptions/bigdata/)

  1. HDFS

大數據和Hadoop 要點,來自 Udemy(https://www.udemy.com/big-data-and-hadoop-essentials-free-tutorial/)

大數據基礎,來自大數據大學(https://bigdatauniversity.com/learn/big-data/)

Hadoop入門工具包(https://www.udemy.com/hadoopstarterkit/)

Apache Hadoop文檔(https://hadoop.apache.org/docs/r2.7.2/)

書--Hadoop集羣部署(http://shop.oreilly.com/product/0636920033448.do)

  1. Apache Zookeeper

Apache Zookeeper文檔(http://shop.oreilly.com/product/0636920028901.do)

書 - Zookeeper(https://zookeeper.apache.org/doc/r3.4.6/)

  1. Apache Kafka

完整初學者Apache Kafka課程(http://shop.oreilly.com/product/0636920028901.do)

學習Apache Kafka基礎和高級主題(https://www.udemy.com/learn-apache-kafka-basics-and-advanced-topics/)

Apache Kafka文檔(https://kafka.apache.org/documentation/)

書 - 學習Apache Kafka(https://www.amazon.in/Learning-Apache-Kafka-Nishant-Garg-ebook/dp/B00U2MI8MI/256-7260357-1334049?_encoding=UTF8&tag=googinhydr18418-21)

  1. SQL

用MySQL管理大數據(https://www.udemy.com/beginners-guide-to-postgresql/)

SQL課程(http://www.sqlcourse.com)

PostgreSQL初學者指南(https://www.udemy.com/beginners-guide-to-postgresql/)

高性能MySQL(http://shop.oreilly.com/product/0636920022343.do)

  1. Hive

使用Hive訪問Hadoop數據(https://cognitiveclass.ai/learn/big-data/0

學習Apache Hadoop生態系統 Hive(https://cognitiveclass.ai/learn/big-data/)

Apache Hive文檔(https://hive.apache.org)

Hive編程(https://hive.apache.org)

  1. Pig

Apache Pig 101,來自大數據大學(https://cognitiveclass.ai/courses/introduction-to-pig/)

用Hadoop與Apache Pig編程(https://bigdatauniversity.com/courses/introduction-to-pig/)

Apache Pig文檔(http://shop.oreilly.com/product/0636920044383.do)

書 - Pig編程(https://pig.apache.org/docs/r0.12.0/)

  1. Apache Storm

使用Apache Storm實時分析(https://www.udacity.com/course/real-time-analytics-with-apache-storm--ud381)

Apache Storm文檔(https://www.udacity.com/course/real-time-analytics-with-apache-storm--ud381)

  1. Apache Kinesis

Apache Kinesis文檔(https://aws.amazon.com/cn/documentation/kinesis/)

Amazon Kinesis經過Amazon Web Services流式瀏覽開發人員資源(https://aws.amazon.com/cn/documentation/kinesis/)

亞馬遜Kinesis Streams開發人員資源,來自亞馬遜網絡服務(https://aws.amazon.com/documentation/kinesis/)

  1. Apache Spark

數據科學、工程與Apache(https://www.edx.org/xseries/data-science-engineering-apache-spark)

Apache Spark文檔(https://www.edx.org/xseries/data-science-engineering-apache-spark)

書 - 學習Spark(https://www.edx.org/xseries/data-science-engineering-apacher-sparktm)

  1. Apache Spark Streaming

Apache Spark Streaming文檔(http://spark.apache.org/streaming/)

尾註

我但願大家喜歡閱讀這篇文章。 藉助這種學習途徑,你將可以踏上你在大數據行業的旅程。 我已經敘述了大部分你找工做會要求的主要概念。

相關文章
相關標籤/搜索