大數據技術學習路線指南
1.前言
-
三個發展方向
- 平台搭建優化/運維/監控
- 大數據開發/設計/架構
- 數據分析/挖掘
2.大數據的發展史
-
啟蒙階段:數據倉庫的出現
-
傳統的數據倉庫,第一次明確了數據分析的
應用場景
,並采用單獨的解決方案去實現,不依賴業務數據庫。 -
技術變革:Hadoop誕生
-
優勢
-
完全分布式
- 可以采用廉價機器搭建集群,完全可以滿足海量數據的存儲需求。
-
弱化數據格式
- 數據模型和數據存儲分離,可以滿足對異構數據的分析需求。
-
-
-
數據工廠時代:大數據平台興起
-
數據價值時代:阿里提出數據中台
- 避免數據的重復計算,通過數據服務化,提高數據的共享能力,賦能業務。
3.大數據方面核心技術有哪些?
大數據處理框架
數據采集與預處理、數據存儲、數據清洗、數據查詢分析和數據可視化。
-
數據采集
數據來源主要是兩類,第一類是各個
業務系統
的關系數據庫,通過sqoop
或者cannal
等工具進行定時抽取
或者實時同步
;第二類是各種埋點曰志
,通過Flume
進行實時收集。 -
數據存儲
收集到數據后,下一步便是將這些數據存儲在
HDFS
中,實時日志流情況下則通過Kafka
輸出給后面的流式計算弓I擎。 -
數據分析
包括
離線處理
和流處理
兩種方式,對應的計算引擎包括MapReduce、 Sparks、 Flink等,處理完的結果會保存到已經提前設計好的數據倉庫中,或者HBase、 Redis. RDBMS等各種存儲系統上。 -
數據應用
包括數據的可視化展現、業務決策、或者AI等各種數據應用場景。
大數據學習路線圖
1.Java語言
- 以Java語言為基礎掌握面向對象編程思想所涉及的知識,以及面向對象編程,然后主流的SSM、Spring Boot等開源框架最好也能掌握。
2.MySQL數據庫
- 掌握關系型數據庫的原理,主要是各種復雜SQL語句的編寫,這會對后面學Hive 數倉的HQL起到事半功倍的效果。
3.Linux操作系統
- 學會shell就能看懂腳本這樣能更容易理解和配置大數據集群。
4.Hadoop技術學習
-
這是現在流行的大數據處理平台幾乎已經成為大數據的代名詞,所以這個是必學的。Hadoop里面包括幾個組件
HDFS、 MapReduce和Yarn
。- HDFS是存儲數據的地方就像我們電腦的硬盤一樣文件都存儲在這個上面
- MapReduce是對數據進行處理計算的,它有個特點就是不管多大的數據只要給它時間它就能把數據跑完,但是時間可能不是很快所以它叫數據的批處理。
- Yarn是體現Hadoop平台概念的重要組件有了它大數據生態體系的其它軟件就能在Hadoop上運行了, 這樣就能更好的利用HDFS 大存儲的優勢和節省更多的資源,比如我們就不用再單獨建一個spark的集群了, 讓它直接跑在現有的HadoopYarn上面就可以了 。
-
4.1學會百度與Google
- 自己搭建Hadoop, 請使用第一步和第二步,能讓它跑起來就行。建議先使用安裝包命令行安裝,不要使用管理工具安裝。另外:Hadoop1.0知道它就行了, 現在都用Hadoop2.0。
-
4.2參考資料首選官方文檔
-
4.3先讓Hadoop跑起來
-
4.4試試使用Hadoop
-
4.5你該了解它們的原理了
-
4.6自己寫一個MapReduce程序
5.數據倉庫Hive
- Hive的底層是MapReduce, 你只要寫HQL (和SQL差不了多少)就完事了!
6.數據采集Sqoop / Flume / DataX
-
sqoop
把
MysQL里的數據導入到Hadoop
里的。當然你也可以不用這個,直接把MysQL 數據表導出成文件再放到HDFS上也是一樣的,當然生產環境中使用要注意MysQL的壓力。 -
Flume
- 分布式的
海量日志采集和傳輸
框架 - Flume可以實時的從網絡協議、消息系統、文件系統采集日志,並傳輸到
HDFS
上。因此,如果業務有這些數據源的數據,並且需要實時的采集,那么就應該考慮使用Flume。
- 分布式的
7.快一點吧Spark
- Spark SQL應運而生,它是用來彌補基於MapReduce處理數據速度上的缺點,它的特點是把數據裝載到內存中計算而不是去讀慢的要死進化還特別慢的硬盤。
- 特別適合做迭代運算,所以算法流們特別稀飯它。它是用scala編寫的。java語言或者scala都可以操作它,因為它們都是用JVM的。
8.數據傳輸Kafka
- 數據多了同樣也需要排隊處理,這樣與你協作的其它同學不會叫起來,你干嗎給我這么多的數據(比如好幾百G的文件) 我怎么處理得過來。
- 這時,使用Flume采集的數據,不是直接到HDFS上,而是先到Kafka, Kafka中的數據可以由多個消費者同時消費,其中一個消費者,就是將數據同步到HDFS上。
- 目前
Flume + Kafka
, 在實時流式曰志的處理非常常見,后面再通過sparkstreaming
等流式處理技術,就可完成日志的實時解析和應用。
9.任務調度Oozie
/ Azkaban
- 數據
采集
、數據交換
同樣是一個個的任務 - 有的是
定時觸發,
有點則需要依賴其他任務
來觸發。 - 調度監控系統是整個數據平台的中樞系統,類似於
Appmaster
,負責分配和監控任務。
10.實時數據的處理Flink /Spark Streaming
需要實時指標的業務場景
- 實時基本可以分為
絕對實時
和准實時
,絕對實時的延退要求一般在毫秒級
,准實時的延退要求一般在秒、分鍾級
。 - 對於需要
絕對實時
的業務場景,用的比較多的是Storm
,對於其他准實時的業務場景,可以是 Storm,也可以是 Spark Streaming,簡單業務場景 Kafka Streams也能搞定,當然現在最火的是Flink
。
11..數據對外(支撐業務)
-
離線
每天將前一天的數據提供到指定的數據源(DB、FILE、FTP)等;離線數據的提供可以采用 Scoop、 Datax等離線數據交換工具。
-
實時
-
在線網站的推薦系統,需要實時從數據平台中獲取給用戶的推薦數據,這種要求延時非常低(50毫秒以內)。
-
根據延時要求和實時數據的查詢需要,可能的方案有: Hbase、 Redis、 Mongodb、 Elasticsearch等.
分布式數據庫
Hbase
,這是 Hadoop生態體系中的 NOSQL數據庫,它的數據是按照key和 values的形式存儲的並且key是唯一的,所以它能用來做數據的排重
,它與MSQL相比能存儲的數據量大很多。所以他常被用於大數據處理完成之后的存儲目的地。了解
Mongodb
及其它分布式數據庫技術,能夠掌握分布式數據庫原理、應用場景、 Hbase 數據庫的設計、操作等,能結合Hive等工具進行海量數據的存儲於檢索。
-
-
OLAP分析
- OLAP除了要求
底層的數據模型較規范
,另外,對查詢的響應速度要求也越來越高,可能的方案有:Impala、 Presto、 SparkSQL、Kylin
。如果你的數據模型比較規模,那么Kylin是最好的選擇。
- OLAP除了要求
-
即席查詢
- 即席査詢的數據比較隨意,一般很難建立通用的數據模型,因此可能的方案有 Impala、 Presto、 Sparksql。
12.機器學習SparkMlLib
-
分類問題
- 分類和多分類,二分類就是解決了
預測
的問題,就像預測一封郵件是否垃圾郵件;多分類
解決的是文本的分類;
- 分類和多分類,二分類就是解決了
-
聚類問題
- 從用戶搜索過的關鍵詞,對用戶進行大概的歸類。
-
推薦問題
- 根據用戶的歷史覽和點擊行為進行相關推薦。大多數行業,使用機器學習解決的,也就是這幾類問題。
4.大數據下的數倉體系架構
-
數倉系統一般采用下圖所示的分層結構。
- 按照這種分層方式,我們的開發重心就在dwd層,就是明細數據層,這里主要是一些寬表,存儲的還是明細數據;到了dws層,我們就會針對不同的維度,對數據進行聚合了,按道理說, dws層算是集市層,這里一般按照主題進行划分,屬於維度建模的范疇;ads就是偏應用層,各種報表的輸出了。