【大数据】大数据初识
花了一個月時間整理了一份我當初學習的大數據學習路線,從最基礎的大數據集群搭建開始,希望能幫助到大家。
不過在開始之前,我還是希望大家能想清楚,如果自己很迷茫,為了什么原因想往大數據方向發展,還有就是我就想問一下,你的專業是什么,對于計算機/軟件,你的興趣是什么?
是計算機專業,對操作系統、硬件、網絡、服務器感興趣?是軟件專業,對軟件開發、編程、寫代碼感興趣?還是數學、統計學專業,對數據和數字特別感興趣?
這其實也就關系到大數據的三個發展方向:
大數據技術概覽
現如今,正式為了應對大數據的這幾個特點,開源的大數據框架越來越多,越來越強,先列舉一些常見的:
- 文件存儲:Hadoop HDFS、Tachyon、KFS
- 離線計算:Hadoop MapReduce、Spark
- 實時計算:Storm、Spark Streaming、Flink
- NOSQL數據庫:HBase、Redis、MongoDB
- 資源管理:YARN、Mesos
- 日志收集:Flume、Scribe、Logstash、Kibana
- 消息系統:Kafka、StormMQ、RabbitMQ
- 查詢分析:Hive、Impala、Pig、Presto、Phoenix、SparkSQL、Drill、Flink、Kylin、Druid
- 分布式協調服務:Zookeeper
- 集群管理與監控:Ambari、Ganglia、Nagios、Cloudera Manager
- 數據挖掘、機器學習:Mahout、Spark MLLib
- 數據同步:Sqoop
- 任務調度:Oozie
- ……
眼花了吧,上面的有30多種吧,別說精通了,全部都會使用的,估計也沒幾個。
就我個人而言,主要目前是在第二個方向(開發/設計/架構),那我就從大數據的發展史講起。由于自己經驗有限,本文內容參考了圈內不少老師的觀點,供大家參考和互相學習。
大數據的發展史
關于大數據的發展史,我覺得駱俊武老師在《AI 時代,還不了解大數據?》一文中講的非常清楚。大數據在它近三十年的發展史中,共經歷了5個階段。
啟蒙階段:數據倉庫的出現。傳統的數據倉庫,第一次明確了數據分析的應用場景,并采用單獨的解決方案去實現,不依賴業務數據庫。
技術變革:Hadoop誕生。2003年,Google公布了3篇鼻祖型論文俗稱「谷歌三駕馬車」),包括:分布式處理技術MapReduce,列式存儲BigTable,分布式文件系統GFS,這3篇論文奠定了現代大數據技術的理論基礎。
數據工廠時代:大數據平臺興起。大數據平臺(平臺即服務的思想,PaaS)應運而生,它讓數據像在流水線上一樣快速完成加工,原始數據變成指標,出現在各個報表或者數據產品中。
數據價值時代:阿里提出數據中臺。極富遠見的馬云爸爸此時喊出了數據中臺」的概念,「One Data,One Service」的口號開始響徹大數據界。
數據中臺的核心思想是:避免數據的重復計算,通過數據服務化,提高數據的共享能力,賦能業務。
大數據方面核心技術有哪些?
大數據的概念比較抽象,而大數據技術棧的龐大程度將讓你嘆為觀止。
大數據技術的體系龐大且復雜,基礎的技術主要分為下面幾個方面:數據采集與預處理、數據存儲、數據清洗、數據查詢分析和數據可視化。
數據采集:這是大數據處理的第一步,數據來源主要是兩類,第一類是各個業務系統的關系數據庫,通過Sqoop或者Cannal等工具進行定時抽取或者實時同步;第二類是各種埋點日志,通過Flume進行實時收集。
數據存儲:收集到數據后,下一步便是將這些數據存儲在HDFS中,實時日志流情況下則通過Kafka輸出給后面的流式計算引擎。
數據分析:這一步是數據處理最核心的環節,包括離線處理和流處理兩種方式,對應的計算引擎包括MapReduce、Spark、Flink等,處理完的結果會保存到已經提前設計好的數據倉庫中,或者HBase、Redis、RDBMS等各種存儲系統上。
數據應用:包括數據的可視化展現、業務決策、或者AI等各種數據應用場景。
通過上述的內容,可能大家對大數據都有了初步的了解,接下來就是核心的部分,因為任何學習過程都需要一個科學合理的學習路線,才能夠有條不紊的完成我們的學習目標。大數據所需學習的內容紛繁復雜,難度較大,有一個合理的大數據技術棧學習路線圖幫忙理清思路就顯得尤為必要。
大數據下的數倉體系架構
數據倉庫是從業務角度出發的一種數據組織形式,它是大數據應用和數據中臺的基礎。數倉系統一般采用下圖所示的分層結構。
按照這種分層方式,我們的開發重心就在dwd層,就是明細數據層,這里主要是一些寬表,存儲的還是明細數據;到了dws層,我們就會針對不同的維度,對數據進行聚合了,按道理說,dws層算是集市層,這里一般按照主題進行劃分,屬于維度建模的范疇;ads就是偏應用層,各種報表的輸出了。
大數據學習指南
我會再出一期大數據學習的相關書籍的文章,同樣我也非常推薦大家去阿里云學習大數據ACA和大數據ACP(兩個是阿里云的大數據認證,值得一考!)
下面,是我用阿里云的大數據開發組件設計的一套系統架構圖(具體的設計思路,有機會我會和大家再細說) 。
到這里,得強烈推薦阿里的這本書,《大數據之路:阿里巴巴大數據實踐》?!精華大作啊!!
具體的大數據開源框架的學習指南,我會在后面再詳細講述,這里我們可以看一下一位這份大數據開源框架學習腦圖:
寫在最后
寫在最后,畢竟博主入行也就兩年時間。然后對于一些小伙伴的問題,我盡量,針對不同的人給一些不同的建議。
對應屆生
個人覺得應屆生應該打好基礎,大學本科一般都會開設數據結構,算法基礎,操作系統,編譯原理,計算機網絡等課程。這些課程一定要好好學,基礎扎實了學其他東西問題都不大,而且好多大公司面試都會問這些東西。如果你準備從事IT行業,這些東西對你會很有幫助。
至于學什么語言,我覺得對大數據行業來說,Java還是比較多。有時間有興趣的話可以學學Scala,這個語言寫Spark比較棒。
集群環境一定要搭起來。有條件的話可以搭一個小的分布式集群,沒條件的可以在自己電腦上裝個虛擬機然后搭一個偽分布式的集群。一來能幫助你充分認識Hadoop,而來可以在上面做點實際的東西。你所有踩得坑都是你寶貴的財富。
然后就可以試著寫一些數據計算中常見的去重,排序,表關聯等操作。
對有工作經驗想轉行的
主要考察三個方面,一是基礎,二是學習能力,三是解決問題的能力。
基礎很好考察,給幾道筆試題做完基本上就知道什么水平了。
學習能力還是非常重要的,畢竟寫Javaweb和寫Mapreduce還是不一樣的。大數據處理技術目前都有好多種,而且企業用的時候也不單單使用一種,再一個行業發展比較快,要時刻學習新的東西并用到實踐中。
解決問題的能力在什么時候都比較重要,數據開發中尤為重要,我們同常會遇到很多數據問題,比如說最后產生的BI數據對不上,一般來說一份最終的數據往往來源于很多原始數據,中間又經過了N多處理。要求你對數據敏感,并能把握問題的本質,追根溯源,在盡可能短的時間里解決問題。
基礎知識好加強,換工作前兩周復習一下就行。學習能力和解決問題的能力就要在平時的工作中多鍛煉。社招的最低要求就上面三點,如果你平日還自學了一些大數據方面的東西,都是很好的加分項。?
總結
以上是生活随笔為你收集整理的【大数据】大数据初识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 让机器听声音识别男女(机器学习的方法)
- 下一篇: 两年卖超2000万支,80%增长来自用户