為什麼學校里學習雲計算或者大數據都要從hadoop開始?

身邊雲計算和大數據實驗室的同學都在看hadoop,可是問一句為什麼要看hadoop,他們也說不清楚,微軟的技術在高校都這麼不受重視嗎?


不是不受重視,而是不懂。

說操作系統,就是win mac linux,也不教你們怎麼實現一個簡易的操作系統

說web,來來去去apache ,nginx,tomcat,SSH,也不教你們實現一個http協議的server

說資料庫,扯半天全是er圖,關係,也不告訴你們數據存儲的原理,以至於一群人寫sql就像念咒語一樣。

說語言,都快撕逼了,面向對象,面向切面,什麼OOP,IOC,跨平台 跨語言。也沒教你們實現一個簡單的編譯器。

到了大數據,言必稱hadoop,hbase,storm ,spark。也不去看看分散式存儲和分散式計算哪怕一點點的書和論文。

不是不受重視,而是根本就搞不懂。


我來給你分享下我的想法

1、 hadoop開源,更容易拿到源代碼等,微軟等相關產品都是閉源的。Hadoop和微軟就好比安卓和ios。市面上華為,小米,三星基本上都在Google開源Android的基礎上二次開發成自己的rom

2、
大數據現在是中國的十三五國家戰略,大數據火啊,而Apache
hadoop現在已經發展成一個龐大的生態圈。全球各地的開發者都在貢獻者自己的代碼。各個分支也是相當火爆,例如spark。

3、
現在普遍認為,大數據狹義的代表就是hadoop,其實並不是這樣,現在大數據公司有很多,

有做大數據基礎平台的,例如星環科技,MapR,Hortonwork,Cloudera,這四家應該是現在全球頂尖top4了,3家美國矽谷的,一家中國上海的。這四家都是基於開源hadoop發展起來的。

有MPP架構的DW產品,例如Teredata,GP,IBM等

有做上層數據應用的,這類公司非常多,很多需要賣人力工時。

也有現在賣數據的公司,這種公司也非常多。

下面給個圖大家隨便看看

Hadoop生態系統

當今的Hadoop已經成長為一個龐大的體系,只要有和海量數據相關的領域。都有Hadoop的身影。

Hadoop生態系統圖譜

大家知道,Hadoop的兩大核心就是HDFS和MapReduce,而整個Hadoop的體系結構主要是通過HDFS的分散式存儲作為底層數據支持的。並且會通過MapReduce來進行計算分析。 Hadoop1.x的核心:

1.
Hadoop Common

2.
Hadoop Distributed File
System(HDFS)

3.
Hadoop MapReduce

Hadoop2.x的核心:

1.
Hadoop Common

2.
Hadoop Distributed File
System(HDFS)

3.
Hadoop MapReduce

4.
Hadoop YARN

Hadoop1.x 生態系統圖

Hadoop2.x 生態系統圖

1. HDFS

分散式文件系統,將一個文件分成多個塊,分別存儲(拷貝)到不同的節點上.它是Hadoop體系中數據存儲管理的基礎。它是一個高度容錯的系統,能檢測和應對硬體故障,用於在低成本的通用硬體上運行。HDFS簡化了文件的一致性模型,通過流式數據訪問,提供高吞吐量應用程序數據訪問功能,適合帶有大型數據集的應用程序。

2.
MapReduce

分散式計算框架,它是一種分散式計算處理模型和執行環境,用於進行大數據量的計算。共包括Map和Reduce部分。其中Map接受一個鍵值對(key-value),產生一組中間鍵值對。MapReduce框架會將map函數產生的中間鍵值對里鍵相同的值傳遞給一個reduce函數。Reduce函數:接受一個鍵,以及相關的一組值,將這組值進行合併產生一組規模更小的值(通常只有一個或零個值)。

3. hive

基於Hadoop的數據倉庫工具,可以將結構化的數據文件映射為一張資料庫表,並提供類似SQL一樣的查詢語言HiveQL來管理這些數據。Hive定義了一種類似SQL的查詢語言(HQL),SQL轉化為MapReduce任務在Hadoop上執行。通常用於離線分析。

4. Pig

Pig是一個基於Hadoop的大數據分析平台,它提供了一個叫PigLatin的高級語言來表達大數據分析程序,將腳本轉換為MapReduce任務在Hadoop上執行。通常用於進行離線分析。

5. Mahout

數據挖掘演算法庫,Mahout起源於2008年,最初是Apache Lucent的子項目,它在極短的時間內取得了長足的發展,現在是Apache的頂級項目。Mahout的主要目標是創建一些可擴展的機器學習領域經典演算法的實現,旨在幫助開發人員更加方便快捷地創建智能應用程序。Mahout現在已經包含了聚類、分類、推薦引擎(協同過濾)和頻繁集挖掘等廣泛使用的數據挖掘方法。除了演算法,Mahout還包含數據的輸入/輸出工具、與其他存儲系統(如資料庫、MongoDB 或Cassandra)集成等數據挖掘支持架構。

6. ZooKeeper

分散式協作服務,是一個針對大型分散式系統的可靠協調系統,提供包括配置維護,名字服務,分散式同步和組服務等功能。Hadoop的管理就是用的ZooKeeper

7. HBase

HBase是一個分散式列存資料庫,它基於Hadoop之上提供了類似BigTable的功能。HBase是一個針對結構化數據的可伸縮、高可靠、高性能、分散式和面向列的動態模式資料庫。和傳統關係資料庫不同,HBase採用了BigTable的數據模型:增強的稀疏排序映射表(Key/Value),其中,鍵由行關鍵字、列關鍵字和時間戳構成。HBase提供了對大規模數據的隨機、實時讀寫訪問,同時,HBase中保存的數據可以使用MapReduce來處理,它將數據存儲和並行計算完美地結合在一起。

8. Sqoop

數據同步工具,SQL-to-Hadoop的縮寫。Sqoop是一個Hadoop和關係型資料庫之間的數據轉移工具。可將關係型資料庫中的數據導入到HadoopHDFS中,也可將HDFS中的數據導進到關係型資料庫中主要用於傳統資料庫和Hadoop之前傳輸數據。數據的導入和導出本質上是Mapreduce程序,充分利用了MR的並行化和容錯性。

9. Flume

日誌收集工具,Cloudera開源的日誌收集系統,具有分散式、高可靠、高容錯、易於定製和擴展的特點。它將數據從產生、傳輸、處理並最終寫入目標的路徑的過程抽象為數據流,在具體的數據流中,數據源支持在Flume中定製數據發送方,從而支持收集各種不同協議數據。同時,Flume數據流提供對日誌數據進行簡單處理的能力,如過濾、格式轉換等。此外,Flume還具有能夠將日誌寫往各種數據目標(可定製)的能力。總的來說,Flume是一個可擴展、適合複雜環境的海量日誌收集系統。

10. Ambari

是一個對Hadoop集群進行監控和管理的基於Web的系統。目前已經支持HDFS,MapReduce,Hive,HCatalog,HBase,ZooKeeper,Oozie,Pig和Sqoop等組件。

11.Apache
Spark
:Apache Spark是提供大數據集上快速進行數據分析的計算引擎。它建立在HDFS之上,卻繞過了MapReduce使用自己的數據處理框架。Spark常用於實時查詢、流處理、迭代演算法、複雜操作運算和機器學習。

現在hadoop發展很快,也有很多新的技術,以上也有很多技術不是那麼火爆了,有更優的選擇,不過我覺得如果你想學習大數據,作為技術宅,這些組件還是都需要了解的。


不同意頂得最高的。

首先,學不好說老師水平差是最容易找的借口。作為一個大學生,學知識還要全靠老師教嗎?就算要老師教,網上視頻多了去了,不能自學嗎?說老師 "不去看看分散式存儲和分散式計算哪怕一點點的書和論文" 這難道不也是對大學生的基本要求嗎?全等著老師喂呢。

其次,教應用跳過實現原理是很普遍的教學實踐,人類知識的傳授大部分都是是從知識樹上掐頭去尾截取一段來教,學開車還要先學汽車製造嗎?確實知道原理可以更好地理解,但不知道原理你也要有能力學會,然後有興趣有時間再回頭看原理。

最後,在這一層看來是原理的東西對下一層知識來說就是應用。

教你寫大數據你說學不好是因為沒教你分散式計算。

教你分散式計算你說學不好是因為沒教你操作系統。

教你寫操作系統你說學不好是因為沒教你計算機硬體。

教你計算機硬體你說學不好是因為沒教你硅半導體,

教你硅半導體你說學不好是因為沒教你量子力學,

教你量子力學你說學不好是因為沒教你線性代數和微積分,

哎呀不對,這個好像教了。。。


微軟的bing部門很多年前就搞出了一個像sparc的東西,但是只供內部用,對外是不開放的。大家不知道也是正常的。從很久以前就可以用抽象的手法用C#處理壓縮後幾個P的文本文件了,而且map reduce只是其中一個feature的一個特例。


我很好奇,你所謂的微軟的技術是指什麼?

就hadoop而言,只要明白一些簡單的邏輯架構(namenode, datanode, job tracker, task tracker, blabla...如下圖,引自維基百科Apache Hadoop),無需關注太多具體實現的細節就可以輕鬆的實現分散式計算,非常適合初學者學習。更何況mapper和reducer都可以用各種高級語言(python, java...)來寫就,而且map之後自動sort,對於程序員來說就非常方便。

當然,hadoop如今廣為詬病的僵化結構也許確實不那麼流行了,但作為學習大規模數據處理的一個範例,還是無可厚非的。每逢大學考試,學生都把歷年考題奉為聖經,不是說它的知識結構多麼的穩固完備,而是它簡單直接,拿來就能用。所以,一般來說,大學生間普遍流行的,就是最簡單直接的,而不是性能最好的。


最高票是典型的沒選對課。

想實現httpserver 去上計算機網路,不要選web。

想實現編譯器,選編譯原理,不要選程序設計。

想實現分散式系統,選分散式系統,不要選大數據。

大數據就是分析和處理的方法佔比重大一點,至於輪子那不是研究的關鍵。


最高票說的太那啥了啊……雖然,也不得不承認,其實他說的現象對於大多數院校都是對的,但是說什麼不懂,我還是真的有點小不快。

學校要教你的,更多的是原理的東西,至於怎麼實現,理論道路基本已經幫你打通了,實際實現沒有教你的必要。不懂,自己看書,自己琢磨。就算我從來都不聽課,我也知道課上都講過。

大學,不是技校。不是教你怎麼用軟體的。它會告訴你輪子的原理,但是並不會教你怎麼手把手造輪子。

最多,就是給你一個deadline。

我校就是這樣啊,大二上做一個流水線cpu,大三上做一個編譯器。大二下操作系統的時候是用的mit的那個小操作系統,不過比起來編譯器和cpu真的是太水了,因為只做完善而不是從零開始造一個。

這些實踐的東西,給你的參考文檔很少,cpu只有一個整理過的指令集手冊和軟體的簡單實用教程。具體實現?不會有任何指導,因為課上都講過原理了。編譯器更是沒有任何文檔。

只有deadline。

所以,做不出來真的別怪什麼學校什麼老師不教,課上學的那些完全夠你做一個簡單的輪子出來了。

頂多,你就怪學校沒有逼你們吧。


1.開源,讓大學花錢買商業軟體太為難任課老師了。

2.谷歌血統,學術界對谷歌相關產品有種特殊情節。

3.圈子,大學老師裡面靠hadoop發論文的人多,比較容易交流。

4.其實學校老師不喜歡研究新技術的。話說我04年畢業設計用的是SSH,現在十年過去了很多老師還在指導學生用SSH寫碩士論文的事情會亂說嗎?


你要搞清楚Hadoop解決了什麼問題。

本回答目錄:

一,Hadoop 包括的內容

二.Hadoop 各組件解決的問題

三.傳統系統和Hadoop 對照

四.學Hadoop 的意義

一.Hadoop 包括的內容:

01.HDFS

02.MapReduce

03.Yarn

04.HBase(雖然分離開了,但本質上也屬於Hadoop )

05.其他(例如kerberos驗證一堆)

二.Hadoop 各組件解決的問題:

01.HDFS解決的問題:

大數據時代,數據越來越多,需要可以平行擴展的分散式文件系統,需要容錯容災。

02.MapReduce 解決的問題:

數據多,且數據類型,格式各種各樣,需要一定運算才能將亂七八糟的海量數據轉化成需要的格式,然後MapRedue的先分,再通過shuffle 合併的思路剛完美解決這個問題

03.yarn解決的問題

分散式運算,需要資源的管理與分配,然後yarn這樣的分散式資源管理工具通過Resource Manager ,Application Master ,nodemanager 完美解決這個問題

04.HBase解決的問題

由於數據源量大,為了滿足實時查詢的需要,所以出現了HBase這樣列式存儲,通過Rowkey加二級索引提供實時查詢。

三.傳統與Hadoop 對比

傳統系統數據的流向是資料庫存數據,然後數據運算,運算結果提供實時查詢

Hadoop 把這個過程分散式了:

所以存數據用HDFS,運算用MapReduce,實時查詢用HBase,因為分散式需要協調不同機器資源,所以出現了yarn

四.Hadoop 學習的意義

01.Hadoop 生態系統很完善,工具很全,基本所有問題都可以通過Hadoop 解決,儘管可能效率並不是最高的。

02.理解透了Hadoop ,再學習storm ,spark 等就很輕鬆,本質還是一樣,要解決的問題都差不多,只是效率更高了。


這是學校誤人子弟的做法。

大數據只是數據分析的一個分支,而hadoop只是大數據分析的其中一種架構。

雲計算也只是在虛擬化管理和商業模式的延伸。

作為本科生,如果想從事這個領域的工作,先將基礎理論做紮實,操作系統原理、計算機體系結構、linux系統管理、數據分析方法、機器學習理論、分散式系統原理等等


不然你想從什麼開始...


有啥不好,跟微軟技術有毛關係,你用過?到時候你還是得用hadoop。


編程語言類課程教做編譯器?那編譯原理這門課是幹嘛的?


資料多


如果沒有人去研發新的技術,我們的社會將停滯不前。


因為國內IT公司都在用hadoop或者在用改造版的hadoop。在工業界應用比較成熟,雖然它真的很爛。


所以說,這一問題就體現出我國it業如此落後?國外是高校+企業驅動,國內是大家看看國外有什麼開源的我們抄一抄


推薦閱讀:

matlab將多個文件夾下的,多個txt中的行數據合併,速度慢,怎麼優化代碼?(並行計算已測試也很慢)
大數據培訓出來就業情況如何?
有沒有data science博士專業,哪個學校比較好,不限國別?
大數據下的城市規劃應用前景怎樣?
2017年,如何理性看待貴陽大數據以及IT行業的發展,生活在貴陽這座城市是怎樣一種體驗?

TAG:雲計算 | 大數據 |