大數據學習路線分類指導

来源:https://www.cnblogs.com/AD321/archive/2018/11/23/10006993.html
-Advertisement-
Play Games

要說當下IT行業什麼最火?ABC無出其右。所謂ABC者,AI + Big Data + Cloud也,即人工智慧、大數據和雲計算(雲平臺)。每個領域目前都有行業領袖在引領前行,今天我們來討論下大數據Big Data這個方向。如果您感覺閱讀文字太累,可以點擊下麵音頻! 二,大數據裡面的角色 角色一:大 ...


要說當下IT行業什麼最火?ABC無出其右。所謂ABC者,AI + Big Data + Cloud也,即人工智慧、大數據和雲計算(雲平臺)。每個領域目前都有行業領袖在引領前行,今天我們來討論下大數據Big Data這個方向。如果您感覺閱讀文字太累,可以點擊下麵音頻!

 

 

 

二,大數據裡面的角色

 

 

角色一:大數據工程

 

我還是要推薦下我自己創建的大數據資料分享群142973723,這是大數據學習交流的地方,不管你是小白還是大牛,小編都歡迎,不定期分享乾貨,包括我整理的一份適合零基礎學習大數據資料和入門教程。

 

大數據工程需要解決數據的定義、收集、計算與保存的工作,因此大數據工程師們在設計和部署這樣的系統時首要考慮的是數據高可用的問題,即大數據工程系統需要實時地為下游業務系統或分析系統提供數據服務;

 

我還是要推薦下我自己創建的大數據分享群,這是大數據學習交流的地方,不管你是小白還是大牛,小編都歡迎,不定期分享乾貨,包括我整理的一份適合零基礎學習的大數據資料和入門教程點擊鏈接加入群聊【大數據學習資料分享群】:正在跳轉

 

角色二:大數據分析

 

 

 

大數據分析角色定位於如何利用數據——即從大數據工程系統中接收到數據之後如何為企業或組織提供有產出的數據分析,並且確實能夠幫助到公司進行業務改善或提升服務水平,所以對於大數據分析師來說,他們首要解決的問題是發現並利用數據的價值,具體可能包括:趨勢分析、模型建立以及預測分析等。

 

 

 

這兩類角色相互依存但又獨立運作,何意?沒有大數據工程,大數據分析便無從談起;但倘若沒有大數據分析,我也實在想不出大數據工程存在的理由。這就類似於結婚和談戀愛——戀愛的目的是為了結婚,且不以結婚為目的的談戀愛都是耍流氓。

 

 

 

簡單總結一下,大數據工程角色需要考慮數據的收集、計算(或是處理)和保存;大數據分析角色則是執行數據的高級計算。

 

 

 

三,大數據工程師

 

 

針對角色一:大數據工程說,對應的工作崗位就叫大數據工程師,對於大數據工程師而言,您至少要掌握以下技能:

 

 

 

linux基礎

 

因為大數據體系,基本都是開源軟體,這些開源軟體都是在開源的linux系統上運行的,所以你必須會基本的linux操作,比如用戶管理,許可權,shell編程之類的

 

 

 

一門JVM系語言:

 

當前大數據生態JVM系語言類的比重極大,某種程度上說是壟斷也不為過。這裡我推薦大家學習Java或Scala,至於Clojure這樣的語言上手不易,其實並不推薦大家使用。另外,如今是“母以子貴”的年代,某個大數據框架會帶火它的編程語言的流行,比如Docker之於Go、Kafka之於Scala。

 

 

 

因此筆者這裡建議您至少要精通一門JVM系的語言。值得一提的,一定要弄懂這門語言的多線程模型和記憶體模型,很多大數據框架的處理模式其實在語言層面和多線程處理模型是類似的,只是大數據框架把它們引申到了多機分散式這個層面。

 

 

 

筆者建議:學習Java或Scala

 

 

 

計算處理框架:

 

嚴格來說,這分為離線批處理和流式處理。流式處理是未來的趨勢,建議大家一定要去學習;而離線批處理其實已經快過時了,它的分批處理思想無法處理無窮數據集,因此其適用範圍日益縮小。事實上,Google已經在公司內部正式廢棄了以MapReduce為代表的離線處理。

 

 

 

因此如果要學習大數據工程,掌握一門實時流式處理框架是必須的。當下主流的框架包括:Apache Samza, Apache Storm, Apache Spark Streaming以及最近一年風頭正勁的Apache Flink。當然Apache Kafka也推出了它自己的流式處理框架:Kafka Streams

 

 

 

 

筆者建議:學習Flink、Spark Streaming或Kafka Streams中的一個

 

熟讀Google大神的這篇文章:《The world beyond batch: Streaming 101》,地址是 ... batch-streaming-101

 

 

 

分散式存儲框架:

 

雖說MapReduce有些過時了,但Hadoop的另一個基石HDFS依然堅挺,並且是開源社區最受歡迎的分散式存儲,絕對您花時間去學習。

 

 

筆者建議:學習HDFS

 

 

 

資源調度框架:

 

Docker可是整整火了最近一兩年。各個公司都在發力基於Docker的容器解決方案,最有名的開源容器調度框架就是K8S了,但同樣著名的還有Hadoop的YARN和Apache Mesos。後兩者不僅可以調度容器集群,還可以調度非容器集群,非常值得我們學習。

 

 

 

筆者建議:學習YARN

 

 

 

分散式協調框架:

 

有一些通用的功能在所有主流大數據分散式框架中都需要實現,比如服務發現、領導者選舉、分散式鎖、KV存儲等。這些功能也就催生了分散式協調框架的發展。最古老也是最有名的當屬Apache Zookeeper了,新一些的包括Consul,etcd等。學習大數據工程,分散式協調框架是不能不瞭解的, 某種程度上還要深入瞭解。

 

筆者建議:學習Zookeeper——太多大數據框架都需要它了,比如Kafka, Storm, HBase等

 

 

 

KV資料庫:

 

典型的就是memcache和Redis了,特別是Redis簡直是發展神速。其簡潔的API設計和高性能的TPS日益得到廣大用戶的青睞。即使是不學習大數據,學學Redis都是大有裨益的。

 

 

 

筆者建議:學習Redis,如果C語言功底好的,最好熟讀源碼,反正源碼也不多

 

 

 

列式存儲資料庫:

 

筆者曾經花了很長的時間學習Oracle,但不得不承認當下關係型資料庫已經慢慢地淡出了人們的視野,有太多的方案可以替代rdbms了。人們針對行式存儲不適用於大數據ad-hoc查詢這種弊端開發出了列式存儲。

 

 

 

筆者建議:學習HBASE,這是目前應用最廣泛的開源列式存儲

 

 

 

消息隊列:

 

大數據工程處理中消息隊列作為“削峰填谷”的主力系統是必不可少的,當前該領域內的解決方案有很多,包括ActiveMQ,Kafka等。國內阿裡也開源了RocketMQ。這其中的翹楚當屬Apache Kafka了。Kafka的很多設計思想都特別契合分佈流式數據處理的設計理念。這也難怪,Kafka的原作者Jay Kreps可是當今實時流式處理方面的頂級大神。

 

 

 

筆者建議:學習Kafka,不僅僅好找工作(幾乎所有大數據招聘簡歷都要求會Kafka:-) ),還能觸類旁通進一步理解基於備份日誌方式的數據處理範型

 

 

 

四,大數據分析師Or數據科學家

 

 

針對角色二:大數據分析,對應的工作崗位就叫大數據分析師或者數據科學家,作為數據科學家的我們必須要掌握以下技能:

 

 

 

數學功底:

 

 

 

微積分是嚴格要掌握的。不一定要掌握多元微積分,但一元微積分是必須要熟練掌握並使用的。另外線性代數一定要精通,特別是矩陣的運算、向量空間、秩等概念。當前機器學習框架中很多計算都需要用到矩陣的乘法、轉置或是求逆。雖然很多框架都直接提供了這樣的工具,但我們至少要瞭解內部的原型原理,比如如何高效判斷一個矩陣是否存在逆矩陣並如何計算等。

 

 

 

重溫同濟版《高等數學》,有條件可以去Coursea學習賓夕法尼亞大學的微積分課程

 

推薦學習Strang的線性代數:《Introduction to Linear Algebra》——這是最經典的教材,沒有之一!

 

 

 

數理統計:

 

 

 

概率論和各種統計學方法要做到基本掌握,比如貝葉斯概率如何計算?概率分佈是怎麼回事?雖不要求精通,但對相關背景和術語一定要瞭解

 

 

 

找一本《概率論》重新學習下

 

 

 

互動式數據分析框架:

 

 

 

這裡並不是指SQL或資料庫查詢,而是像Apache Hive或Apache Kylin這樣的分析交互框架。開源社區中有很多這樣類似的框架,可以使用傳統的數據分析方式對大數據進行數據分析或數據挖掘。

 

 

 

筆者有過使用經驗的是Hive和Kylin。不過Hive特別是Hive1是基於MapReduce的,性能並非特別出色,而Kylin採用數據立方體的概念結合星型模型,可以做到很低延時的分析速度,況且Kylin是第一個研發團隊主力是中國人的Apache孵化項目,因此日益受到廣泛的關註。

 

 

 

首先學習Hive,有時間的話瞭解一下Kylin以及背後的數據挖掘思想。

 

 

 

機器學習框架:

 

 

 

機器學習當前真是火爆宇宙了,人人都提機器學習和AI,但筆者一直認為機器學習恰似幾年前的雲計算一樣,目前雖然火爆,但沒有實際的落地項目,可能還需要幾年的時間才能逐漸成熟。

 

 

 

不過在現在就開始儲備機器學習的知識總是沒有壞處的。說到機器學習的框架,大家耳熟能詳的有很多種, 信手拈來的就包括TensorFlow、Caffe8、Keras9、CNTK10、Torch711等,其中又以TensorFlow領銜。

 

 

 

筆者當前建議大家選取其中的一個框架進行學習,但以我對這些框架的瞭解,這些框架大多很方便地封裝了各種機器學習演算法提供給用戶使用,但對於底層演算法的瞭解其實並沒有太多可學習之處。因此筆者還是建議可以從機器學習演算法的原理來進行學習,比如:

 

 

 

目前機器學習領域最NB的入門課程:吳恩達博士的Machine Learning

 

 

 

五,大數據必備技能詳細

 

 

因為筆者本身是偏Java應用方向的,所以整理的大數據必備技能詳細,也是偏向於大數據工程師方向。總共分為五大部分,分別是:

 

大數據技術基礎

 

離線計算Hadoop

 

流式計算Storm

 

記憶體計算Spark

 

機器學習演算法

 

大數據技術基礎

linux操作基礎

linux系統簡介與安裝

 

linux常用命令–文件操作

 

linux常用命令–用戶管理與許可權

 

linux常用命令–系統管理

 

linux常用命令–免密登陸配置與網路管理

 

linux上常用軟體安裝

 

linux本地yum源配置及yum軟體安裝

 

linux防火牆配置

 

linux高級文本處理命令cut、sed、awk

 

linux定時任務crontab

 

shell編程

shell編程–基本語法

 

shell編程–流程式控制制

 

shell編程–函數

 

shell編程–綜合案例–自動化部署腳本

 

記憶體資料庫redis

redis和nosql簡介

 

redis客戶端連接

 

redis的string類型數據結構操作及應用-對象緩存

 

redis的list類型數據結構操作及應用案例-任務調度隊列

 

redis的hash及set數據結構操作及應用案例-購物車

 

redis的sortedset數據結構操作及應用案例-排行榜

 

布式協調服務zookeeper

zookeeper簡介及應用場景

 

zookeeper集群安裝部署

 

zookeeper的數據節點與命令行操作

 

zookeeper的java客戶端基本操作及事件監聽

 

zookeeper核心機制及數據節點

 

zookeeper應用案例–分散式共用資源鎖

 

zookeeper應用案例–伺服器上下線動態感知

 

zookeeper的數據一致性原理及leader選舉機制

 

java高級特性增強

Java多線程基本知識

 

Java同步關鍵詞詳解

 

java併發包線程池及在開源軟體中的應用

 

Java併發包消息隊里及在開源軟體中的應用

 

Java JMS技術

 

Java動態代理反射

 

輕量級RPC框架開發

RPC原理學習

 

Nio原理學習

 

Netty常用API學習

 

輕量級RPC框架需求分析及原理分析

 

輕量級RPC框架開發

 

離線計算Hadoop

hadoop快速入門

hadoop背景介紹

 

分散式系統概述

 

離線數據分析流程介紹

 

集群搭建

 

集群使用初步

 

HDFS增強

HDFS的概念和特性

 

HDFS的shell(命令行客戶端)操作

 

HDFS的工作機制

 

NAMENODE的工作機制

 

java的api操作

 

案例1:開發shell採集腳本

 

MAPREDUCE詳解

自定義hadoop的RPC框架

 

Mapreduce編程規範及示例編寫

 

Mapreduce程式運行模式及debug方法

 

mapreduce程式運行模式的內在機理

 

mapreduce運算框架的主體工作流程

 

自定義對象的序列化方法

 

MapReduce編程案例

 

MAPREDUCE增強

Mapreduce排序

 

自定義partitioner

 

Mapreduce的combiner

 

mapreduce工作機制詳解

 

MAPREDUCE實戰

maptask並行度機制-文件切片

 

maptask並行度設置

 

倒排索引

 

共同好友

 

federation介紹和hive使用

Hadoop的HA機制

 

HA集群的安裝部署

 

集群運維測試之Datanode動態上下線

 

集群運維測試之Namenode狀態切換管理

 

集群運維測試之數據塊的balance

 

HA下HDFS-API變化

 

hive簡介

 

hive架構

 

hive安裝部署

 

hvie初使用

 

hive增強和flume介紹

HQL-DDL基本語法

 

HQL-DML基本語法

 

HIVE的join

 

HIVE 參數配置

 

HIVE 自定義函數和Transform

 

HIVE 執行HQL的實例分析

 

HIVE最佳實踐註意點

 

HIVE優化策略

 

HIVE實戰案例

 

Flume介紹

 

Flume的安裝部署

 

案例:採集目錄到HDFS

 

案例:採集文件到HDFS

 

流式計算Storm

Storm從入門到精通

Storm是什麼

 

Storm架構分析

 

Storm架構分析

 

Storm編程模型、Tuple源碼、併發度分析

 

Storm WordCount案例及常用Api分析

 

Storm集群部署實戰

 

Storm+Kafka+Redis業務指標計算

 

Storm源碼下載編譯

 

Strom集群啟動及源碼分析

 

Storm任務提交及源碼分析

 

Storm數據發送流程分析

 

Storm通信機制分析

 

Storm消息容錯機制及源碼分析

 

Storm多stream項目分析

 

編寫自己的流式任務執行框架

 

Storm上下游及架構集成

消息隊列是什麼

 

Kakfa核心組件

 

Kafka集群部署實戰及常用命令

 

Kafka配置文件梳理

 

Kakfa JavaApi學習

 

Kafka文件存儲機制分析

 

Redis基礎及單機環境部署

 

Redis數據結構及典型案例

 

Flume快速入門

 

Flume+Kafka+Storm+Redis整合

 

記憶體計算Spark

scala編程

scala編程介紹

 

scala相關軟體安裝

 

scala基礎語法

 

scala方法和函數

 

scala函數式編程特點

 

scala數組和集合

 

scala編程練習(單機版WordCount)

 

scala面向對象

 

scala模式匹配

 

actor編程介紹

 

option和偏函數

 

實戰:actor的併發WordCount

 

柯里化

 

隱式轉換

 

AKKA與RPC

Akka併發編程框架

 

實戰:RPC編程實戰

 

Spark快速入門

spark介紹

 

spark環境搭建

 

RDD簡介

 

RDD的轉換和動作

 

實戰:RDD綜合練習

 

RDD高級運算元

 

自定義Partitioner

 

實戰:網站訪問次數

 

廣播變數

 

實戰:根據IP計算歸屬地

 

自定義排序

 

利用JDBC RDD實現數據導入導出

 

WorldCount執行流程詳解

 

RDD詳解

RDD依賴關係

 

RDD緩存機制

 

RDD的Checkpoint檢查點機制

 

Spark任務執行過程分析

 

RDD的Stage劃分

 

Spark-Sql應用

Spark-SQL

 

Spark結合Hive

 

DataFrame

 

實戰:Spark-SQL和DataFrame案例

 

SparkStreaming應用實戰

Spark-Streaming簡介

 

Spark-Streaming編程

 

實戰:StageFulWordCount

 

Flume結合Spark Streaming

 

Kafka結合Spark Streaming

 

視窗函數

 

ELK技術棧介紹

 

ElasticSearch安裝和使用

 

Storm架構分析

 

Storm編程模型、Tuple源碼、併發度分析

 

Storm WordCount案例及常用Api分析

 

Spark核心源碼解析

Spark源碼編譯

 

Spark遠程debug

 

Spark任務提交行流程源碼分析

 

Spark通信流程源碼分析

 

SparkContext創建過程源碼分析

 

DriverActor和ClientActor通信過程源碼分析

 

Worker啟動Executor過程源碼分析

 

Executor向DriverActor註冊過程源碼分析

 

Executor向Driver註冊過程源碼分析

 

DAGScheduler和TaskScheduler源碼分析

 

Shuffle過程源碼分析

 

Task執行過程源碼分析

 

機器學習演算法

python及numpy庫

機器學習簡介

 

機器學習與python

 

python語言–快速入門

 

python語言–數據類型詳解

 

python語言–流程式控制制語句

 

python語言–函數使用

 

python語言–模塊和包

 

phthon語言–面向對象

 

python機器學習演算法庫–numpy

 

機器學習必備數學知識–概率論


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 從分治演算法說起 要說 MapReduce 就不得不說分治演算法,而分治演算法其實說白了,就是四個字 分而治之 。其實就是將一個複雜的問題分解成多組相同或類似的子問題,對這些子問題再分,然後再分。直到最後的子問題可以簡單得求解。 要具體介紹分治演算法,那就不得不說一個很經典的排序演算法 歸併排序。這裡不說它的 ...
  • 定義 非關係型分散式列式資料庫,支持大數據量查詢(百萬,上億行) 概要 數據存儲:HDFS 數據計算:MapReduce/Spark 服務協調:Zookeeper 特征 列式存儲(列只有一種類型byte[]) 分散式 大數據存儲(百萬,上億行; 上萬列) 伸縮性,擴展性(列根據業務隨意添加) 隨機快 ...
  • MongoDB快速入門 Author:SimpleWu MongoDB官方網:https://www.mongodb.com/ MongoDB中文網:http://www.mongodb.org.cn/ 什麼是MongoDB? NoSQL(NoSQL = Not Only SQL ),意即"不僅僅是 ...
  • 第2章 安裝並運行Hadoop 2.1 基於本地Ubuntu主機的Hadoop系統 2.2 實踐環節:檢查是否已安裝 2.3 實踐環節:下載Hadoop 2.4 實踐環節:安裝SSH 2.5 實踐環節:使用Hadoop計算圓周率 2.6 實踐環節:配置偽分散式模式 2.7 實踐環節:修改HDFS的根... ...
  • Django連接Oracle得兩種方式:service_name和SID ...
  • 1 -- 刪除表 2 drop table check_test; 3 -- 不為空,不為null的值只能是0,1(不為空,值只能是0,1) 4 create table check_test( 5 default_flag number(1) not null 6 -- 檢查約束 7 check ... ...
  • 刪除函數註意事項 從當前資料庫中刪除一個或多個用戶定義函數。DROP 函數支持本機編譯的標量用戶定義函數。 如果資料庫中存在引用 DROP FUNCTION 的 Transact-SQL 函數或視圖並且這些函數或視圖通過使用 SCHEMABINDING 創建,或者存在引用該函數的計算列、CHECK ...
  • 修改表值函數註意事項 更改先前通過執行 CREATE FUNCTION 語句創建的現有 Transact-SQL 或 CLR 函數,但不更改許可權,也不影響任何相關的函數、存儲過程或觸發器。 不能用 ALTER FUNCTION 將表值函數更改為標量值函數,反之亦然。 不能用 ALTER FUNCTI ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...