想從事大數據、海量數據處理相關的工作,如何自學打基礎?


想做數據處理尤其是大數據量處理的相關工作必須兼具計算機科學基礎和統計基礎

現在有一個高大上的職業叫數據科學家,有人說數據科學家就是一個比程序員更懂統計的統計學家,一個比統計學家更會編程的程序員。覺得說得很形象。

考慮到你還是在讀本科生,有很多知識和課程還需要作為基礎來學習和鞏固。

基礎中的基礎:

線性代數,概率論

核心知識:

數理統計

預測模型

機器學習

計算機:

  • 數學軟體:強大矩陣運算和優化功能的matlab,專而精的mathematica。

  • 語言:python(很流行的科學語言,潛力也很大,ipython這樣互動式環境十分有利),fortran(強大的計算語言,充分優化的現成代碼),R(相比於matlab,java,c,R是個高富帥)
  • 可視化

這是數據分析各類語言使用度的圖表,R占的比例還是相當高啊。想利用現在動輒TB級的數據大顯身手,光靠excel可不夠啊。你真的需要寫很多代碼…

統計:時間序列分析

應用回歸(很簡單,亦很實用)

多元統計分析

強烈推薦:Distance Education § Harvard University Extension School 和哈佛的學生一起學習Data Science。

課後問題的材料:http://cs109.org/

網路課程同樣有豐富的資源:

機器學習類:

  • 斯坦福大學:機器學習 coursera
  • Learning From Data

數據分析類:

  • 約翰霍普金斯: Data Analysis Methods
  • 杜克: Data Analysis and Statistical Inference
  • 約翰霍普金斯: Computing for Data Analysis
  • MIT: The Analytics Edge

編程類:

  • 萊斯大學: Introduction to Interactive Programming in Python
  • MIT: Introduction to Computer Science Programming in Python

相關問題:

  • Data Science: What are some good free resources to learn data science?

  • Where can I learn pandas or numpy for data analysis?
  • What are some good resources for learning about statistical analysis?
  • Data Science: How do I become a data scientist?
  • What are some good "toy problems" in data science?
  • What are some good resources for learning about machine learning?

水平有限,歡迎補充。另外我製作了一個個人網站Daniel"s Site on Strikingly 和專欄DαΓαSciεηce - 知乎專欄 希望激發更多人對data science 的興趣。


海量數據分成兩塊,一是系統建設技術,二,海量數據應用。先說系統建設,現在主流的技術是HADOOP,主要基於mapreduce的分散式框架。目前可以先學習這個。但是我的觀點,在分散式系統出來之前,主要是集中式架構,如DB2,oracle。為什麼現在用分散式架構,那是因為現在集中式架構受限於IO性能,出來速度慢,如果又一種硬體技術,可以很快地處理海量數據,性能上能滿足需求,那麼集中式架構優於分散式架構,因為集中式架構穩定,運維壓力小。現在的集中式架構要麼性能達不到要求,要麼就是過於昂貴。我期待一種技術出現,可以非常快地傳輸和處理數據,那麼集中式架構將再次進入人們眼球。再說海量數據應用。海量數據應用主要是數據挖掘和機器演算法。具體有不同的應用場景,如個性化搜索和推薦,社交網路發現,精準營銷,精準廣告,實時最優路徑,人工智慧等等。看你想做系統支撐技術還是與業務結合的應用技術。

如果現在學系統建設技術,可以讀下如下書籍:

如果學數據挖掘和機器演算法,推薦先看數據挖掘導論,統計分析原理,Mahout,R,MATLAB


1. 自己裝個小集群跑hadoop/hive,可以到cloudera網站上下現成的打包虛擬機。看看hadoop in action. 這本書比權威指南容易懂很多。

2. 裝個cassandra什麼的玩玩,在上面架個小項目,比如留言板什麼的。。

3. 讀一些著名的paper,nosql的或者mapreduce。

4. 看看apache hadoop家族的其他幾個項目,比如zookeeper,pig,了解一下生態圈

到這裡為止你大概有個概念,知道bigdata怎麼回事了

找個開源項目,看看ticket list,看看能不能自己修。。

能的話看看能不能混進項目組

個人覺得,大數據要靠實踐多一點。在真的上百上千節點的cluster上跑hadoop和自己虛擬機架的完全不同。cluster上跑各種奇葩的事情單機都是碰不到的。。就好比dba靠讀書考證很難牛屄一樣。所以最終還是要找個公司實戰。。不過如果上面幾個都做到的花,基本上應聘大數據公司問題不大了。

----------------------------------

做大數據平台工作現在滿一周年多幾天,再看上面的答案覺得說得不是很到位。

在國內的環境下,似乎還是Hadoop用得更多,其他更fancy的東西比如presto/spark什麼的,灣區也算是新鮮事物,並不是很多公司都在用(也有原因是真的適用的公司也不算太多了)。更實際節省的做法是,學Hadoop,至少要了解系統架構和數據的流向,比如怎麼partition,怎麼shuffle,combiner怎麼work之類的大概念,對入門人士面試官大多也就是面這些,不會問太深,再深入的問題,是留給有行業經驗的人的。對剛入門想入行的人,知道上面這些,再寫寫類似Word Count(大數據版的helloworld),之類的有個實際概念,就可以找公司面著玩看了。

其他東西可以都了解個皮毛,跟上社群的演進。大數據更多是工程的東西,不是那麼學術,多看看比深挖一個對初學者更有好處。每個工具被發明,都是解決一個特定問題的,大數據沒有一個產品是萬能的,都是解決某個特定問題來的,看到新鮮事物就想想為什麼需要這樣的工具,背後有什麼需求。

比如有了Hive為什麼facebook還要搞Presto;為什麼Hadoop 2.0要做Yarn。看的時候多想想這個,視野就會更開闊。

建議如果想深入學習,沒有什麼比找個真的做相關行業的公司來的靠譜了。工程的東西,尤其是這樣新鮮出爐的工程領域,光看書看資料是沒有任何用處的,你很難了解每個技術背後的關鍵,也很難了解實踐中會遇到的問題。我之前打雜過的實驗室,到處找客戶免費用他們的產品,每個出去的學生都會義務跟僱主推薦實驗室的產品,為什麼,因為沒有真的在PB級別的數據上跑,你就不知道哪裡設計有問題。你深入看一個項目,就會發現,其實用得技術沒什麼新鮮深奧的,比如你看Hive或者Presto,會發現用到的技術,在Query引擎領域只能算是入門級的知識,傳統資料庫廠商都用了幾十年了。真正好玩的是,每個Feature設計是如何切入大數據這個背景的。

所以說,沒有比找一家公司真的干一段時間更能讓你了解大數據的了。當然請別被忽悠去拿大數據做噱頭的公司了。現在有些公司招聘,就算不用hadoop也會往上寫,反正去了老闆會說,現在數據不夠,以後肯定會需要Hadoop的。

以上都是關於平台方向的,數據方向的我完全不懂。


好吧,我來說一下我的看法吧

首先

我由各種編程語言的背景——matlab,R,java,C/C++,python,網路編程等

我又一定的數學基礎——高數,線代,概率論,統計學等

我又一定的演算法基礎——經典演算法,神經網路,部分預測演算法,群智能演算法等

但這些目前來講都不那麼重要,但慢慢要用到

Step 1:大數據理論,方法和技術

  • 大數據理論——啥都不說,人家問你什麼是大數據時,你能夠講到別人知道什麼是大數據

  • 大數據方法——然後別人問你,那怎麼實現呢?嗯,繼續講:說的是方法(就好像歸併排序演算法:分,並)。到目前外行人理解無障礙
  • 大數據技術——多嘴的人繼續問:用的技術。

這階段只是基礎,不涉及任何技術細節,慢慢看慢慢總結,積累對「大數據」這個詞的理解。

Step 2:大數據思維

Bang~這是繼Step 1量變發展而來的質變:學了那麼久「大數據」,把你扔到製造業,你怎麼辦?

我想,這就是「學泛」的作用吧,並不是學到什麼具體東西,而是學到了對待事物的思維。

就像知友討論的:如何評價《Big Data:大數據時代》這本書?中有提到

這個我也朦朦的不懂 @.@

----------------------------------------------------------------------

以下階段我還沒開始=_=,不好誤導大家

Step 3:大數據技術基礎

Step 4:大數據技術進階

Step 5:打實戰

Step 6:大融合

我現在也在學習之中~~這只是我自己為自己打算的學習歷程,歡迎給出各種建議~~

@Du Crystal

本來想回答你在評論里的提問,但是被提示不超過1000字...只能這裡回答了。。。(跟問題本身也有些相關)

對 @Du Crystal 評論提問的回答:

我現在回看了一下我原來答案,太糟糕了,雖然路線還可以,但好像也沒答到問題的點子上(因為我的點子是:打基礎就得了解概念先,後面才是聯繫自己現狀調想學的東西,但看贊同最多好像是:這個領域什麼技術比較熱?有哪些資源?)...

承蒙你的肯定,就回答一下你的問題吧~

我覺得重要的還是:

1. 積累對(工業)大數據的理解:定義和案例;

2. 不斷改進自己的思維:要哪些能力?如何培養。

下面說說我的理解吧

1. 積累對(工業)大數據的理解:定義和案例

大數據到目前為止也沒有統一的定義,但倒是有些觀點可借鑒一番:

(1) Gartner的3V定義:

Volume,數據量大;

Velocity,數據更新速度快;

Variety,數據多樣性。

(2) 維基百科/谷歌(我記得好像是...)的定義:

Big Data is a broad term for data sets so large or complex that traditional data processing applications are inadequate.(即 大數據指的是所涉及的資料量規模巨大到無法通過目前主流軟體工具,在合理時間內達到擷取、管理、處理並整理成為幫助企業經營決策目的的資訊。)

這兩個定義,一個從「大數據」的屬性層面入手,一個從「大數據」的方法層面入手,以理解、定義大數據。網上有各種各樣的定義,這是我覺得比較好的兩個。

然而,一兩句化的定義是解決不了「對大數據的理解」這個問題的,更多的是需要通過對大數據案例學習對網上別人觀點和看法的吸收 以及 自己的實踐等渠道,來慢慢加深對大數據的理解,最終才能明白這些定義的隱含內涵。

那我對這些定義的隱含內涵的理解是什麼呢?

(1) 我覺得大數據的3V定義中,核心在於Variety」(多樣性)上。其實,我想表達的是:多數據源,或者說,解決問題的多個視角

對問題的理解使得我們可以通過多個視角去考慮問題,而不同的視角代表了不同的數據源,通過綜合這些數據源,我們可以得到更準確、更精確的分析結果。而Volume(量)和Velocity(數據更新速度)只是Variety(多樣性)附帶的「紅利」而已:考慮的視角多了,數據量自然也大了,把動態的視角考慮進去,那麼自然也就考慮了數據更新了。(例如,在考慮機器故障預測這件事上,我們不僅可以利用它加工出來的零件的尺寸這個數據,也可以考慮機器本身的振動信號、電壓電流信號,甚至加工過程中產生的雜訊信號等等,那麼我們從機器、零件、環境等多個視角考慮問題,考慮多個數據源,從而實現了一個大數據應用。)

數據採集受硬體約束,而硬體越來越便宜。多視角考慮問題則受人的思維約束,同時也是更好解決問題的主要瓶頸。所以,對問題的理解和思考,應該成為我們的優勢所在。

(2) 而維基百科關於大數據的定義,告訴我們演算法、數據分析的困難和重要性將更上一層。而由於實現部分,不用製造考慮,交給IT部吧。

也就是說,一個定義分別告訴我們:多視角;另一個:能做不可能的事情,雖然很難。

綜上,我認為,(製造中)大數據應該是一種基於多視角分析問題,並利用高擴展性、實時性的演算法分析問題的一種科學範式。

這樣還是很泛,真的製造大數據是很狹隘的(就目前而言)。

而無論是工業4.0,還是工業大數據或智能製造,從本質上看就是IT技術(信息)工業技術(物理)的融合,而製造的人將是這場融合中重要的催化劑:最貼近工業技術,同時又能幾時吸收一些前沿IT技術的思想,將兩者融合以優化製造流程!(你可以看看GE的那個白皮書)

所以,其實對製造的大數據,我還有一點想法:

切勿切勿切勿一心落到「大數據」中「大」的追求當中!

McKinsey的報告中強調,並不是說一定要超過特定TB 級的數據集才能算是大數據。(Big Data: The Next Frontier For Innovation, Competition, And Productivity)而其實對於大數據上「量」閾值的界定,是取決於不同行業的,因此用一個單純的閾值來判斷是否是大數據是不實際的。

在製造步入數據化時代之際,更重要的是改變思維:以往無數據狀況下,只能依靠純粹機理的因果分析;而今獲取數據的渠道多樣且容易,應該多考慮如何利用數據以輔助優化、決策,而不單單利用機理分析!

最後,數據分析更貼近實際,而大數據分析可能是屠龍之技,是需要積累的(看看人家互聯網都積累那麼久,現在都還沒多少很成功出名的大數據case)!

2. 不斷改進自己的思維:要哪些能力?如何培養。

上面說了,製造的人是Cyber Physics System中 cyber 和 physics融合的leader,那麼作為leader得做什麼呢?

(1) 啟動智能製造模式;

(2) 明確所需能力,並培養及獲取。

領導做事並共同進步。

啟動智能製造模式

GE在提出工業互聯網時涉及了三個點:感測器、全新的互聯網連接(平台)和數據分析與技術,這三個點結合實現了智能設備、智能系統和智能決策,從而支撐起工業互聯網的框架。

智能設備

為工業設備提供數字化設備是工業互聯網革命的第一步。而智能設備為這一步的實現提供了強大的基礎:硬體成本的大幅下滑及物聯網技術的實現、成熟,使實時、全方位監控設備、獲取設備數據成為可能,而微處理器晶元和大數據分析工具及分析技術的持續進步,支撐了海量數據的處理。

這讓更廣泛的利益相關者能夠參與到資產維護、管理和優化之中。它還確保在合適的時間引入本地和遠程擁有相關機器專業知識的人。智能信息還可以返回至最初的機器。這不僅包括該機器產生的數據,還包括可以加強機器、設施和大型系統的運營或維護的外部數據。這些數據反饋循環讓機器能夠從歷史中「學習」,從而控制系統更智能的運行。

智能系統

智能系統不單單將智能設備、數據及人結合為一個整體,使智能信息在機器、系統網路、個人或群體之間分享,推動智能協作和更好的決策,還負責網路優化、維護優化、系統恢復、學習等智能功能。

智能決策

工業互聯網的全部威力將通過第三個元素實現——智能決策。當從智能設備和系統收集到足夠的信息以促進數據驅動的學習時,智能決策就出現了,這反過來讓機器子集和系統網路級運營功能從操作員轉到安全的數字系統。

明確所需能力,並培養及獲取

(1) 精心制定的大數據規劃:

大數據及高級數據分析看起來漂亮,但就像戰略規劃一樣,需要無論是對製造等業務流程,還是對數據理解,都具有全局觀念和深刻認識的人才、管理者(像Microsoft這樣的公司都需要請mu sigma這樣的數據處理公司做諮詢)。無論何時,在推進工業大數據的過程中,一定要有人總結關於公司的數據概況及其應用案例。

(2) 時刻關注三個關鍵能力的成長:

A. 鑒別、結合及管理多種數據源:對自己部門相關的總體數據有深刻理解,對其他部門數據有一個數據概況的認識,並思考如何結合及管理。

B. 構建高級分析模型的能力。

C. 為了確保數據和模型能夠真正生成更好的決策,管理層必須具備推動轉變體制的能力:如賦權相關人員,組織扁平化,數據共享會等習慣。

(3) 自動化帶來的效益是明顯的,信息化建設則是長期的;可能需要新的管理架構、角色或分工在其中進行協調:

信息化建設是長期且需要不斷投入的,大方向對了,還需要高執行力的領導層及獨立部門人員進行推行。


沒辦法,只能找個相關工作先搞


可以考慮學一些基本的理論知識。比如 Stanford 開的那個網上的 machine learning 的公開課,結合一些好的入門教材,對基本概念有所了解。

R. O. Duda, P. E. Hart, and D. G. Stork. Pattern classification. Wiley, New York, 2nd ed edition, 2001.

T. Hastie, R. Tibshirani, and J. H. Friedman. The elements of statistical learning: data mining, inference, and prediction. Springer series in statistics. Springer, New York, NY, 2nd ed edition, 2009.

實際應用技術,編程這樣的,還是要找公司,有實踐才行。如果找不好合適公司,就打好基礎吧。


看你要跟到哪個程度,更具體的那個方向:

第一層:搞Google那個套路的,雲計算方向的,hadoop那些搞搞,就可以去一些公司忽悠工作了。

第二層:搞一些社交網路,多媒體等海量數據的存儲分析處理,側重數據挖掘,以後可能能夠在這個領域做點名堂。

第三層:在上面兩層的數據的基礎上,做PB級別「以上」規模,側重「實時」海量數據分析,能夠對在線業務做海量數據支撐的。 可能搞出商業和專業(技術)方面的重量級的。 我個人在這個行業混,是看到了需求,但個方面,還沒有現成的:思想,方法,系統。 以後類似有Google M/R之類的,包含方法和系統甚至開發運維環境的東西出現。 從我個人的理解看:思想要變,並行計算的一些思想要引入比如Pipeline+Partitioning+M/R;演算法要變:側重常數事件複雜度的或者logn以下的;做業務的思想要變:比如實時要一個一定範圍最優的解比一個一天後給一個全局範圍的解跟重要等等等等等等等等等等。 我也在做這方面的,大家交流哦。 moonblue333@hotmail.com


看Netflix prize各個隊的實驗報告,比如:

http://www.netflixprize.com/assets/GrandPrize2009_BPC_BellKor.pdf


我覺得首先是看看Google的幾篇論文吧,包括GFS、MapReduce、BigTable和chubby等,建立一個理論的基礎。

然後就是系統學習並使用下hadoop這個系統,最好能深入代碼,理解思想!

同樣的可以關注一些目前熱門的Nosql的開源項目,比如Mongodb和Redis,好好學習下別人的思想和代碼!

關注一些相關方向的會議的論文,關注一些業界的博客,比如淘寶核心系統博客 http://rdc.taobao.com/blog/cs/

和NoSqlFan http://blog.nosqlfan.com/

不過感覺這方面的能力是實踐出來的,找機會進公司實習或做相關項目,肯定會收穫很大!


工資百萬的

完全自學未免太輕狂,3D集群渲染能做了也差不多了吧,

這個行業規則還在培育中,在電腦上管理顯示死亡語言,那就什麼數據都可以管理了


大家說的都很好,我其實外行,就說兩句外行話。

學一點其它領域的東西,越遠越好。有時候創造性思維來自跨界的知識。

訓練自己抓住事務本質和核心的能力,訓練自己從不同角度看問題的能力,訓練自己從數據裡面培養直覺的能力。要知道數據處理不是學會那些工具就能做好的,思維方式最重要。


這其實是要看你要做那個發明新鎚子的人,還是利用鎚子的人

前者,自學是完全沒有出路的,好好找個相關實驗室,找個大牛帶你,潛心做幾年研究,緊跟最新的paper,最好再出國讀個博士。

後者的話,學不學差不多,關鍵是領域相關知識要透徹,根本不在於你會熟練使用MapReduce,Spark,Dryad,PowerGraph還是啥,碼農的活你總可以找別人干。真正的Data Scientist永遠首先是領域專家,掌握好鎚子的特性(其實可以理解為數學好),讓別人替你敲鎚子!

說來心酸,這個領域從來都是有的人負責摸石頭,有的人負責過河


大數據有兩個方向,一個是偏計算機的,另一個是偏經濟的。你學過Java,所以你可以偏將計算機

基礎

1. 讀書《Introduction to Data Mining》,這本書很淺顯易懂,沒有複雜高深的公式,很合適入門的人。

另外可以用這本書做參考《Data Mining : Concepts and Techniques》。第二本比較厚,也多了一些數據倉庫方面的知識。

如果對演算法比較喜歡,可以再閱讀《Introduction to Machine Learning》。

當然,還有《機器學習:實用案例解析》

2. 實現經典演算法。有幾個部分:

a. 關聯規則挖掘 (Apriori, FPTree, etc.)

b. 分類 (C4.5, KNN, Logistic Regression, SVM, etc.)

c. 聚類 (Kmeans, DBScan, Spectral Clustering, etc.)

d. 降維 (PCA, LDA, etc.)

e. 推薦系統 (基於內容的推薦,協同過濾,如矩陣分解等)

然後在公開數據集上測試,看實現的效果。可以在下面的網站找到大量的公開數據集:UCI Machine Learning Repository/

3. 熟悉幾個開源的工具: Weka (用於上手); LibSVM, scikit-learn, Shogun

4. 到 Kaggle: Go from Big Data to Big Analytics/ 上參加幾個101的比賽,學會如何將一個問題抽象成模型,並從原始數據中構建有效的特徵 (Feature Engineering).

到這一步的話基本幾個國內的大公司都會給你面試的機會。

進階篇:

1. 讀書,下面幾部都是大部頭,但學完進步非常大。

a.《Pattern Recognition and Machine Learning》

b.《The Elements of Statistical Learning》

c.《Machine Learning: A Probabilistic Perspective》

第一本比較偏Bayesian;第二本比較偏Frequentist;第三本在兩者之間,但我覺得跟第一本差不多,不過加了不少新內容。當然除了這幾本大而全的,還有很多介紹不同領域的書,例如《Boosting Foundations and Algorithms》,《Probabilistic Graphical Models Principles and Techniques》;以及理論一些的《Foundations of Machine Learning》,《Optimization for Machine Learning》等等。這些書的課後習題也非常有用,做了才會在自己寫Paper的時候推公式。

2. 讀論文。包括幾個相關會議:KDD,ICML,NIPS,IJCAI,AAAI,WWW,SIGIR,ICDM;以及幾個相關的期刊:TKDD,TKDE,JMLR,PAMI等。跟蹤新技術跟新的熱點問題。當然,如果做相關research,這一步是必須的。例如我們組的風格就是上半年讀Paper,暑假找問題,秋天做實驗,春節左右寫/投論文。

3. 跟蹤熱點問題。例如最近幾年的Recommendation System,Social Network,Behavior Targeting等等,很多公司的業務都會涉及這些方面。以及一些熱點技術,例如現在很火的Deep Learning。

4. 學習大規模並行計算的技術,例如MapReduce、MPI,GPU Computing。基本每個大公司都會用到這些技術,因為現實的數據量非常大,基本都是在計算集群上實現的。

5. 參加實際的數據挖掘的競賽,例如KDDCUP,或 Kaggle: Go from Big Data to Big Analytics/ 上面的競賽。這個過程會訓練你如何在一個短的時間內解決一個實際的問題,並熟悉整個數據挖掘項目的全過程。

6. 參與一個開源項目,如上面提到的Shogun或scikit-learn還有Apache的Mahout,或為一些流行演算法提供更加有效快速的實現,例如實現一個Map/Reduce平台下的SVM。這也是鍛煉Coding的能力。


The Open Source Data Science Masters

看看這個網站,把你需要學的東西全列在裡面了


多看些大數據技術方面入門的書籍,推薦幾本

Python:《利用Python進行數據分析》、《Python基礎教程》、《Python Cookbook》、《「笨辦法」學Python》

MATLAB:《精通MATLAB》、《MATLAB R2014a從入門到精通》、《MATLAB R2014a完全自學一本通》、《MATLAB寶典》

資料庫:《MongoDB權威指南》、《資料庫系統概念》、《SQL語言與資料庫操作技術大全》、《Oracle從入門到精通》

R語言:《統計建模與R軟體》、《R語言實戰》、《ggplot2數據分析與圖形藝術》、《數據挖掘與R語言》

機器學習:《數據挖掘實用機器學習工具與技術》、《數據挖掘導論》、《機器學習》、,《數據挖掘與機器學習WAKA應用技術與實踐》


沒有大數據,自學大數據處理技術,那就是屠龍之技


Big Data是近來的一個技術熱點,但從名字就能判斷出來它並不是什麼新詞。畢竟,大匙一個相對概念。歷史上,資料庫、數據倉庫、數據集市等信息管理領域的技術,很大程度上也是為了解決大規模數據的問題。被譽為數據之父的Bill Inmon早在20世紀90年代就經常將Big Data掛在嘴邊了。要處理如此龐大的數據,它的基本流程如下圖。

數據抽取與集成

● 大數據的一個重要特點就是多樣性,這就意味著數據來源極其廣泛,數據類型極為繁雜。這種複雜的數據環境給大數據的處理帶來極大的挑戰。

● 要想處理大數據,首先必須對所需數據源的數據進行抽取和集成,從中提取出關係和實體,經過關聯和聚合之後採用統一定義的結構來存儲這些數據。

● 在數據集成和提取時需要對數據進行清洗,保證數據質量及可信性。

● 現有的數據抽取與集成方式可以大致分為以下四種類型:數據整合、數據聯邦、數據傳播和混合方法等。

數據分析

● 傳統的分析技術如數據挖掘、機器學習、統計分析等在大數據時代需要做出調整,因為這些技術在大數據時代面臨著一些新的挑戰:

1、數據量大並不一定意味著數據價值的增加,相反這往往意味著數據噪音的增多

2、大數據時代的演算法需要進行調整(邦弗朗尼原理)

3、數據量大並不一定意味著數據價值的增加,相反這往往意味著數據噪音的增多

數據解釋

● 數據分析是大數據處理的核心,但是用戶往往更關心結果的展示。如果分析的結果正確但是沒有採用適當的解釋方法,則所得到的結果很可能讓用戶難以理解,極端情況下甚至會誤導用戶。

● 大數據時代的數據分析結果往往也是海量的,同時結果之間的關聯關係極其複雜,採用傳統的解釋方法基本不可行

● 可以考慮從下面兩個方面提升數據解釋能力:

-- 引入可視化技術

-- 讓用戶能夠在一定程度上了解和參與具體的分析過程

然而,Big Data作為一個專有名詞成為熱點,主要應歸功於近年來互聯網、雲計算、移動和物聯網的迅猛發展。無所不在的移動設備、RFID、無限感測器每分每秒都在產生數據,數以億計用戶的互聯網服務時時刻刻在產生巨量的交互……要處理的數據量實在是太長、增長太快了,而業務需求和競爭壓力對數據處理的實時性、有效性又提出了更高要求,傳統的常規技術手段根本無法應付。在這種情況下,技術人員紛紛研發和採用了一批新技術。

01

存儲

存儲分散式緩存、基於MPP的分散式資料庫、分散式文件系統、各種NoSQL分散式存儲方案,內存資料庫等

02

計算

Map Reduce、流計算、圖計算……

03

應用

HIVE,pig,mahout,Sqoop以及ETL工具,統計與報告工具等

下面以Google為例,我們來看看它的技術演進

Google 於2006 年首先提出了雲計算的概念,並研發了一系列雲計算技術和工具。難能可貴的是Google 並未將這些技術完全封閉,而是以論文的形式逐步公開。

正是這些公開的論文,使得以GFS、MapReduce、Bigtable為代表的一系列大數據處理技術被廣泛了解並得到應用,同時還催生出以Hadoop為代表的一系列雲計算開源工具。這些工具有些是完整的處理平台,有些則是專門針對特定的大數據處理應用。

現金一些主流的處理平台和工具

就實踐方面來說,Hadoop 已經發展成為目前最為流行的大數據處理平台

Hadoop是一個分散式系統基礎架構,由Apache基金會開發。

Hadoop是一個開源的可運行於大規模集群上的分散式並行編程框架,藉助於Hadoop,程序員可以輕鬆地編寫分散式並行程序,將其運行於計算機集群上,完成海量數據的計算。

Hadoop採用了分散式存儲方式,提高了讀寫速度,並擴大了存儲容量。採用MapReduce來整合分散式文件系統上的數據,可保證分析和處理數據的高效。與此同時,Hadoop還採用存儲冗餘數據的方式保證了數據的安全性。

Hadoop作用

Hadoop中HDFS的高容錯特性,以及它是基於Java 語言開發的,這使得Hadoop可以部署在低廉的計算機集群中,同時不限於某個操作系統。Hadoop中HDFS的數據管理能力,MapReduce處理任務時的高效率,以及它的開源特性,使其在同類的分散式系統中大放異彩,並在眾多行業和科研領域中被廣泛採用。

Hadoop功能

Hadoop優點

●可擴展:不論是存儲的可擴展還是計算的可擴展都是Hadoop的設計根本。

●經濟:框架可以運行在任何普通的PC上。

●可靠:分散式文件系統的備份恢復機制以及MapReduce的任務監控保證了分散式處理的可靠性。(元數據磁碟錯誤,心跳測試,副本數)

●高效:分散式文件系統的高效數據交互實現以及MapReduce結合Local Data處理的模式,為高效處理海量的信息作了基礎準備。

Hadoop生態系統圖


要進行大數據挖掘,必須看《欺騙的藝術》


一點補充:

"大數據"在自己有限的硬體資源下也是可以玩玩的。

數據的應用需要對數據有"感覺"。是要在不斷的實踐、閱讀、理解中摸索、升華出來的。

太多市面上頂著Analyst、Scientist名號的偽碼農搞出些本末倒置的結論。

當然,也有可能是他有個沒啥"感覺"的領導指示他這麼乾的,而他本人又不太好意思拒絕。


學了很多理論知識之後還必須跟實際操作結合

去做DataCastle上面的競賽題吧~

一般都是公司在實際運作中遇到的問題,然後放到這個競賽平台上來讓專業的人解決

在做競賽中才能知道哪些需要更多的補充


推薦閱讀:

PHP或者python進行數據採集和分析,有什麼比較成熟的框架?
超級菜鳥怎麼學習數據分析?
機器學習中使用「正則化來防止過擬合」到底是一個什麼原理?為什麼正則化項就可以防止過擬合?
想在機器學習做演算法的創新是否必須讀博士?
你所在的公司或者領域在做哪些大數據應用?

TAG:雲計算 | 數據挖掘 | 數據分析 | Hadoop | 大數據 |