1. 程式人生 > >學習Hadoop需要哪些預備知識?Java是否必須會?

學習Hadoop需要哪些預備知識?Java是否必須會?

零基礎學習hadoop,沒有想象的那麼困難,也沒有想象的那麼容易。從一開始什麼都不懂,到能夠搭建叢集,開發。整個過程,只要有Linux基礎,虛擬機器化和java基礎,其實hadoop並沒有太大的困難。下面整理一下整個學習過程,給大家一個參考。
首先我們要了解hadoop是什麼?Hadoop能夠做什麼?Hadoop的使用場景是什麼?Hadoop和大資料、雲端計算的關係是什麼?如何使用hadoop?

當大家對這些問題有了基本的瞭解之後,接下來我們就要系統性的學習hadoop了。我個人建議大家不要一味的去學習理論知識,最好是理論和實踐相結合,可以先跟著視訊和文件去操作,先把偽分散式叢集搭建起來,把wordcount例項執行起來,對hadoop叢集的搭建過程和執行機制有個大概的瞭解和認知,然後從操作的過程中去發現自己在哪方面是薄弱點,有針對性的去彌補,這樣學習就會更有針對性和目的性,學習效果也相對會更好一些,否則學習會很盲目、很痛苦的。

我們知道hadoop有單機模式,偽分佈模式和分散式模式。同時hadoop的環境是Linux,所以我們還需要安裝Linux系統。因為我們的習慣是使用windows,所以對於Linux上來就安裝軟體之類的,困難程度會很大。並且我們要搭建叢集,需要多臺硬體的,不可能為了搭建叢集,去買三臺電腦。所以從成本和使用的角度我們還需要懂虛擬化方面的知識。這裡的虛擬化其實就是我們需要懂得虛擬機器的使用。因為hadoop安裝在Linux中,才能真正發揮作用。所以我們也不會使用windows。

基於以上內容。所以我們需要懂得

  • 虛擬化
  • Linux
  • java基礎

下面我們來詳細介紹:

一、

虛擬化:我們選擇的是VMware Workstation,這裡就要求我們會搭建虛擬機器,安裝linux(如centos)作業系統,這方面只要按照視訊操作應該還是很簡單的,難點在於虛擬機器網路的配置,尤其是nat模式和bridge模式,因為hadoop要求主機與虛擬機器與外部網路(能上網),這三者是相通的,都能夠連線上網路,只有這樣在安裝的過程中,才不會遇到麻煩。

二、
Linux:對於Linux的學習也是一個過程,因為可能你連最簡單的開機和關機命令都不會,更不要談配置網路。常用的linux命令也就20多種,我們需要做的就是在搭建叢集的過程中不斷地加強練習,在實踐中去記憶。但是我們會遇到各種不會的命令,即使能查到命令,我們也不能使用。為什麼會這樣,因為有的命令,是需要使用安裝包的。所以我們也要學會如何下載安裝包。

我們需要使用一些命令,進行網路配置,但是在網路配置中,這裡面又必須懂得虛擬機器的一些知識,所以前面的虛擬機器知識需要掌握紮實一些。對於有linux基礎的學員也可以選擇hadoop運維工程師作為職業選擇。

提醒大家切忌浮躁,我們不可能一兩天就能完成上面的所有內容,我們至少需要花費一週的時間不斷地去訓練、強化。只要我們熟悉了Linux命令,熟悉了網路知識。後面我們的學習才會很輕鬆,很快速。通過以上的學習我們已經會安裝叢集了,那麼接下來我們就需要進入開發階段。開發零基礎,該怎麼辦呢?
hadoop程式設計是一個Java框架,同時也是程式設計的一次革命,使得傳統開發執行程式由單臺客戶端(單臺電腦)轉換為可以由多個客戶端執行(多臺機器)執行,使得任務得以分解,這大大提高了效率。

Hadoop既然是一個Java框架,因此就要求我們必須要懂Java,網上有大量的資料,所以學習Java不是件難事。但是學到什麼程度,可能是我們零基礎同學所關心的。

三、

Java:

我們需要具備javaSE基礎知識,暫時不需要java Web及各種框架知識。如果沒有javaSE基礎,建議在學習hadoop之前或過程中要加強這方面的學習和訓練。當然有java基礎和開發經驗的學員學習hadoop就會更快速、更輕鬆。

總結一下,hadoop相關有很多學習的方向,內容不同,運維的話熟練掌握Linux, java, python以及hadoop周邊生態軟體的所有原理和配置部署,打patch重新編譯是最低的要求。

開發的話java和演算法,SQL熟練是最低要求,python 和C是次要要求。Hbase起碼熟練掌握java,thrift, rest等相關知識。如果把Hadoop最終用於資料探勘,機器學習,那常用的演算法反而比掌握hadoop本身更重要一些,重點看用hadoop來做什麼。