-
1 # IT人劉俊明
-
2 # 程式設計字典
接觸過Core Java,資料庫概念和任何Linux作業系統。(教程:http://codingdict.com/article/8105)
-
3 # 千鋒頭號粉絲
我們都知道現在學習大資料,Hadoop是其中一個必學的技術,簡單來說,Hadoop是在分散式伺服器叢集上儲存海量資料並執行分散式分析應用的一種方法。那Hadoop該學習哪些內容?需要了解什麼呢?有Hadoop經典學習資料嗎?
HDFS
HDFS(Hadoop Distributed File System,Hadoop分散式檔案系統),它是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的資料訪問,適合那些有著超大資料集(large data set)的應用程式。
MapReduce
通俗說MapReduce是一套從海量源資料提取分析元素末後返回結果集的程式設計模型,將檔案分散式儲存到硬碟是第一步,而從海量資料中提取分析我們需要的內容就是MapReduce做的事了。
MapReduce的基本原理就是:將大的資料分析分成小塊逐個分析,然後再將提取出來的資料彙總分析,從而獲得我們想要的內容。當然怎麼分塊分析,怎麼做Reduce操作非常複雜,Hadoop已經提供了資料分析的實現,我們只需要編寫簡單的需求命令即可達成我們想要的資料。
關於Hadoop的使用方式:
感覺現在各個公司使用Hadoop的方式都不一樣,主要我覺得有兩種吧。
第一種是long running cluster形式,比如Yahoo,不要小看這個好像已經沒什麼存在感的公司,Yahoo可是Hadoop的元老之一。這種就是建立一個Data Center,然後有幾個上千Node的Hadoop Cluster一直在執行。比較早期進入Big Data領域的公司一般都在使用或者使用過這種方式。
另一種是隻使用MapReduce型別。畢竟現在是Cloud時代,比如AWS的Elastic MapReduce。這種是把資料存在別的更便宜的地方,比如s3,自己的data center, sql database等等,需要分析資料的時候開啟一個Hadoop Cluster,Hive/Pig/Spark/Presto/Java分析完了就關掉。不用自己做Admin的工作,方便簡潔。
所以個人如果要學Hadoop的話我也建議第二種,AWS有免費試用時間(但是EMR並不免費,所以不要建了幾千個Node一個月後發現破產了),可以在這上面學習。更重要的是你可以嘗試各種不同的配置對於任務的影響,比如不同的版本,不同的container size,memory大小等等,這對於學習Spark非常有幫助。
總的來說Hadoop適合應用於大資料儲存和大資料分析的應用,適合於伺服器幾千臺到幾萬臺的叢集執行,支援PB級的儲存容量。Hadoop典型應用有:搜尋、日誌處理、推薦系統、資料分析、影片影象分析、資料儲存等。
大資料產業已進入發展的“快車道”,急需大量優秀的大資料人才作為後盾。能夠在大資料行業崛起的初期進入到這個行業當中來,才有機會成為時代的弄潮兒。千鋒大資料開發新進企業級伺服器實戰教學,20周帶你一站式搞定匪夷所思的大資料開發技術。
回覆列表
Hadoop是目前被廣泛使用的大資料平臺,Hadoop平臺主要有Hadoop Common、HDFS、Hadoop Yarn、Hadoop MapReduce和Hadoop Ozone。
Hadoop平臺目前被行業使用多年,有健全的生態和大量的應用案例,同時Hadoop對硬體的要求比較低,非常適合初學者自學。目前很多商用大資料平臺也是基於Hadoop構建的,所以Hadoop是大資料開發的一個重要內容。
學習Hadoop開發需要有三個基礎知識,下面進行分別介紹:
第一:Linux作業系統知識。通常情況下,Hadoop平臺是構建在Linux系統之上的,所以學習Hadoop首先要學習Linux作業系統的使用。目前比較流行的Linux作業系統包括CentOS和Ubuntu,這兩個Linux系列作業系統有廣泛的應用場景。學習Linux並不複雜,通常情況下可以在虛擬機器上完成,很多初學者都是在虛擬機器上搭建一個偽分散式叢集,然後完成Hadoop實驗。
第二:程式語言。目前在Hadoop平臺下多采用Java和Python來完成程式的編寫,由於Hadoop本身是採用Java語言編寫的,所以在Hadoop平臺下采用Java語言是比較方便的選擇,Hadoop的官方demo往往也是採用Java語言實現的。Python語言由於比較簡單,同時Python有豐富的庫可以使用,所以目前使用Python完成Hadoop平臺的開發也是一個比較常見的選擇。另外,在Spark平臺下Scala也有廣泛的應用。
第三:演算法。大資料的核心就是資料價值化的過程,而演算法設計則是資料價值化的基礎。因此,大資料平臺的開發離不開演算法,要想學習Hadoop開發一定要有一個紮實的演算法基礎。
Hadoop平臺自身有非常豐富的開發元件,所以學習Hadoop的過程還是比較漫長的,由於大資料開發有較強的場景特徵,所以建議結合具體的場景來完成Hadoop平臺的學習。
如果有大資料方面的問題,也可以諮詢我。