當前位置:
首頁 > 教育 > 2018零基礎轉行大數據怎麼學習?大數據學習路線

2018零基礎轉行大數據怎麼學習?大數據學習路線

大數據要怎麼學,本文來說說到底要怎麼學習它,以及怎麼避免大數據學習的誤區,以供參考。數據科學特點與大數據學習誤區

(1)大數據學習要業務驅動,不要技術驅動:數據科學的核心能力是解決問題。

大數據的核心目標是數據驅動的智能化,要解決具體的問題,不管是科學研究問題,還是商業決策問題,抑或是政府管理問題。

所以學習之前要明確問題,理解問題,所謂問題導向、目標導向,這個明確之後再研究和選擇合適的技術加以應用,這樣才有針對性,言必hadoop,spark的大數據分析是不嚴謹的

不同的業務領域需要不同方向理論、技術和工具的支持。如文本、網頁要自然語言建模,隨時間變化數據流需要序列建模,圖像音頻和視頻多是時空混合建模;大數據處理如採集需要爬蟲、倒入導出和預處理等支持,存儲需要分散式雲存儲、雲計算資源管理等支持,計算需要分類、預測、描述等模型支持,應用需要可視化、知識庫、決策評價等支持。所以是業務決定技術,而不是根據技術來考慮業務,這是大數據學習要避免的第一個誤區。

(2)大數據學習要善用開源,不要重複造輪子:數據科學的技術基因在於開源。IT前沿領域的開源化已成不可逆轉的趨勢,Android開源讓智能手機平民化,讓我們跨入了移動互聯網時代,智能硬體開源將帶領跨入物聯網時代,以Hadoop和Spark為代表的大數據開源生態加速了去IOE(IBM、ORACLE、EMC)進程,倒逼傳統IT巨頭擁抱開源,谷歌和OpenAI聯盟的深度學習開源(以Tensorflow,Torch,Caffe等為代表)正在加速人工智慧技術的發展。

數據科學的標配語言R和Python更是因開源而生,因開源而繁榮,諾基亞因沒把握開源大勢而衰落。為什麼要開源,這得益於IT發展的工業化和構件化,各大領域的基礎技術棧和工具庫已經很成熟,下一階段就是怎麼快速組合、快速搭積木、快速產出的問題,不管是linux,anroid還是tensorflow,其基礎構件庫基本就是利用已有開源庫,結合新的技術方法實現,組合構建而成,很少在重複造輪子。

另外,開源這種眾包開發模式,是一種集體智慧編程的體現,一個公司無法積聚全球工程師的開發智力,而一個GitHub上的明星開源項目可以,所以要善用開源和集體智慧編程,而不要重複造輪子,這是大數據學習要避免的第二個誤區。

(3)大數據學習要以點帶面,不貪大求全:數據科學要把握好碎片化與系統性。根據前文的大數據技術體系分析,我們可以看到大數據技術的深度和廣度都是傳統信息技術難以比擬的。

我們的精力很有限,短時間內很難掌握多個領域的大數據理論和技術,數據科學要把握好碎片化和系統性的關係。

何為碎片化,這個碎片化包括業務層面和技術層面,大數據不只是谷歌,亞馬遜,BAT等互聯網企業,每一個行業、企業裡面都有它去關注數據的痕迹:一條生產線上的實時感測器數據,車輛身上的感測數據,高鐵設備的運行狀態數據,交通部門的監控數據,醫療機構的病例數據,政府部門的海量數據等等,大數據的業務場景和分析目標是碎片化的,而且相互之間分析目標的差異很大;另外,技術層面來講,大數據技術就是萬金油,一切服務於數據分析和決策的技術都屬於這個範疇,其技術體系也是碎片化的。

那怎麼把握系統性呢,不同領域的大數據應用有其共性關鍵技術,其系統技術架構也有相通的地方,如系統的高度可擴展性,能進行橫向數據大規模擴張,縱向業務大規模擴展,高容錯性和多源異構環境的支持,對原有系統的兼容和集成等等,每個大數據系統都應該考慮上述問題。如何把握大數據的碎片化學習和系統性設計,離不開前面提出的兩點誤區,建議從應用切入、以點帶面,先從一個實際的應用領域需求出發,搞定一個一個技術點,有一定功底之後,再舉一反三橫向擴展逐步理解其系統性技術。

(4)大數據學習要勇於實踐,不要紙上談兵:數據科學還是數據工程?

大數據只有和特定領域的應用結合起來才能產生價值,數據科學還是數據工程是大數據學習要明確的關鍵問題,搞學術發paper數據科學OK,但要大數據應用落地,如果把數據科學成果轉化為數據工程進行落地應用,難度很大,這也是很多企業質疑數據科學價值的原因。且不說這種轉化需要一個過程,從業人員自身也是需要審視思考的。

工業界包括政府管理機構如何引入研究智力,數據分析如何轉化和價值變現?數據科學研究人員和企業大數據系統開發工程人員都得想想這些關鍵問題。

目前數據工程要解決的關鍵問題主線是數據(Data)>知識(Knowledge)>服務(Service),數據採集和管理,挖掘分析獲取知識,知識規律進行決策支持和應用轉化為持續服務。解決好這三個問題,才算大數據應用落地,那麼從學習角度講,DWS就是大數據學習要解決問題的總目標,特別要注重數據科學的實踐應用能力,而且實踐要重於理論。從模型,特徵,誤差,實驗,測試到應用,每一步都要考慮是否能解決現實問題,模型是否具備可解釋性,要勇於嘗試和迭代,模型和軟體包本身不是萬能的,大數據應用要注重魯棒性和實效性,溫室模型是沒有用的,訓練集和測試集就OK了嗎?

大數據如何走出實驗室和工程化落地,一是不能閉門造車,模型收斂了就想當然萬事大吉了;二是要走出實驗室充分與業界實際決策問題對接;三是關聯關係和因果關係都不能少,不能描述因果關係的模型無助於解決現實問題;四是注重模型的迭代和產品化,持續升級和優化,解決新數據增量學習和模型動態調整的問題。

所以,大數據學習一定要清楚我是在做數據科學還是數據工程,各需要哪些方面的技術能力,現在處於哪一個階段等,不然為了技術而技術,是難以學好和用好大數據的。

大數據已經火了很久了,一直想了解它學習它結果沒時間,過年後終於有時間了,了解了一些資料,結合我自己的情況,初步整理了一個學習路線,有問題的希望大神指點。

學習路線

Linux(shell,高並發架構,lucene,solr)

Hadoop(Hadoop,HDFS,Mapreduce,yarn,hive,hbase,sqoop,zookeeper,flume)

機器學習(R,mahout)

Storm(Storm,kafka,redis)

Spark(scala,spark,spark core,spark sql,spark streaming,spark mllib,spark graphx)

Python(python,spark python)

雲計算平台(docker,kvm,openstack)

名詞解釋

一、Linux

lucene: 全文檢索引擎的架構

solr: 基於lucene的全文搜索伺服器,實現了可配置、可擴展並對查詢性能進行了優化,並且提供了一個完善的功能管理界面。

二、Hadoop

hadoop common

HDFS: 分散式存儲系統,包含NameNode,DataNode。NameNode:元數據,DataNode。DataNode:存數數據。

yarn: 可以理解為MapReduce的協調機制,本質就是Hadoop的處理分析機制,分為ResourceManager NodeManager。

MapReduce: 軟體框架,編寫程序。

Hive: 數據倉庫 可以用SQL查詢,可以運行Map/Reduce程序。用來計算趨勢或者網站日誌,不應用於實時查詢,需要很長時間返回結果。

HBase: 資料庫。非常適合用來做大數據的實時查詢。Facebook用Hbase存儲消息數據並進行消息實時的分析

ZooKeeper: 針對大型分散式的可靠性協調系統。Hadoop的分散式同步等靠Zookeeper實現,例如多個NameNode,active standby切換。

Sqoop: 資料庫相互轉移,關係型資料庫和HDFS相互轉移

Mahout: 可擴展的機器學習和數據挖掘庫。用來做推薦挖掘,聚集,分類,頻繁項集挖掘。

Chukwa: 開源收集系統,監視大型分散式系統,建立在HDFS和Map/Reduce框架之上。顯示、監視、分析結果。

Ambari: 用於配置、管理和監視Hadoop集群,基於Web,界面友好。

二、Cloudera

Cloudera Manager: 管理 監控 診斷 集成

Cloudera CDH:(Cloudera"s Distribution,including Apache Hadoop) Cloudera對Hadoop做了相應的改變,發行版本稱為CDH。

Cloudera Flume: 日誌收集系統,支持在日誌系統中定製各類數據發送方,用來收集數據。

Cloudera Impala: 對存儲在Apache Hadoop的HDFS,HBase的數據提供直接查詢互動的SQL。

Cloudera hue: web管理器,包括hue ui,hui server,hui db。hue提供所有CDH組件的shell界面的介面,可以在hue編寫mr。

三、機器學習/R

R: 用於統計分析、繪圖的語言和操作環境,目前有Hadoop-R

mahout: 提供可擴展的機器學習領域經典演算法的實現,包括聚類、分類、推薦過濾、頻繁子項挖掘等,且可通過Hadoop擴展到雲中。

四、storm

Storm: 分散式,容錯的實時流式計算系統,可以用作實時分析,在線機器學習,信息流處理,連續性計算,分散式RPC,實時處理消息並更新資料庫。

Kafka: 高吞吐量的分散式發布訂閱消息系統,可以處理消費者規模的網站中的所有動作流數據(瀏覽,搜索等)。相對Hadoop的日誌數據和離線分析,可以實現實時處理。目前通過Hadoop的並行載入機制來統一線上和離線的消息處理

Redis: 由c語言編寫,支持網路、可基於內存亦可持久化的日誌型、key-value型資料庫。

五、Spark

Scala: 一種類似java的完全面向對象的編程語言。

Spark: Spark是在Scala語言中實現的類似於Hadoop MapReduce的通用並行框架,除了Hadoop MapReduce所具有的優點,但不同於MapReduce的是job中間輸出結果可以保存在內存中,從而不需要讀寫HDFS,因此Spark能更好的適用於數據挖掘與機器學習等需要迭代的MapReduce演算法。可以和Hadoop文件系統並行運作,用過Mesos的第三方集群框架可以支持此行為。

Spark SQL:

Spark Streaming: 一種構建在Spark上的實時計算框架,擴展了Spark處理大數據流式數據的能力。

Spark MLlib: MLlib是Spark是常用的機器學習演算法的實現庫,目前(2014.05)支持二元分類,回歸,聚類以及協同過濾。同時也包括一個底層的梯度下降優化基礎演算法。MLlib以來jblas線性代數庫,jblas本身以來遠程的Fortran程序。

Spark GraphX: GraphX是Spark中用於圖和圖並行計算的API,可以在Spark之上提供一站式數據解決方案,可以方便且高效地完成圖計算的一整套流水作業。

jblas: 一個快速的線性代數庫(JAVA)。基於BLAS與LAPACK,矩陣計算實際的行業標準,並使用先進的基礎設施等所有的計算程序的ATLAS藝術的實現,使其非常快。

Fortran: 最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。

BLAS: 基礎線性代數子程序庫,擁有大量已經編寫好的關於線性代數運算的程序。

LAPACK: 著名的公開軟體,包含了求解科學與工程計算中最常見的數值線性代數問題,如求解線性方程組、線性最小二乘問題、特徵值問題和奇異值問題等。

ATLAS: BLAS線性演算法庫的優化版本。

Spark Python: Spark是由scala語言編寫的,但是為了推廣和兼容,提供了java和python介面。

大數據學習方法

我的方法很簡單的按照下面幾步走

一、了解新的技術是什麼以及它的作用

二、到技術的官方網站找案例進行簡單的實驗

三、和自己的項目結合

四、遇到問題到技術網站找相關資料

五、做筆記總結(總結的過程就是1~5)

這是在工作中引進新技術的學習方法,這樣做的好處是及解決了工作上的問題又對新技術有了初步的了解,要是想把新技術吃透要在工作之餘多有些心了。

要學會多問自己一些為什麼?這樣你會比別人更加優秀

小編有整理好2018年的python學習資料,在下方可以看到!

1.入門資料 2.進階教程 3.web框架 4.爬蟲開發 5.圖形圖像 6.數據分析 7.機器學習 8.人工智慧

《獲取方式》:關注!轉發!私信回復:資料即可免費獲取

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |