hadoop是處理大數據的得力幫手,它主要分為三種模式:
單機模式;
偽分布式模式;
完全分布式模式;
在這篇文章中,主要來看看在CentOS7中進行hadoop的單機和偽分布式的環境搭建。(在Ubuntu下安裝也一樣。)
因為自己設備的條件,就先在虛擬機里搭建偽分布式的環境來進行hadoop的學習。
以下的環境是需要java環境才能進行,我的電腦中的java是:
單機模式
先來看看單機模式,單機模式比較簡單。
首先在官網下載hadoop,網站地址為:http://hadoop.apache.org/releases.html
我這里用的是hadoop2.6.5的版本。
點擊binary下載即可。
下載完畢后,將下載下來的包放在/usr/local目錄下:
然后解壓壓縮包:
# 如果遇上權限不夠,就加sudo,或用root用戶進行
tar -xvf hadoop-2.6.5.tar.gz
# 將減壓出來的hadoop-2.6.5改名為hadoop(改不改隨便)
mv hadoop-2.6.5 hadoop
完成后我們就可以進入hadoop文件夾看看了:
這時候進入etc/hadoop目錄,那個目錄里面裝的東西關于hadoop的一些配置文件,進去后可以看一看:
其中我們先來配置關于環境的東西:
vim hadoop-env.sh
可以看到里面的內容:
我們需要看的就是JAVA_HOME那個變量,如果不是我們系統中java的路徑就把它改成java的路徑。下面那個HADOOP_CONF_DIR也可以改為自己電腦hadoop文件夾中etc/hadoop那個路徑。
然后在終端中source一下:
source hadoop-env.sh
接著進入前面的bin目錄下看看
cd ../../bin
運行hadoop試試看:
./hadoop version
輸出如上信息,就說明hadoop的單機模式成了。
再來運行個hadoop給的例子程序跑跑。
為了測試,先新建一個目錄Input:
mkdir Input
在里面放上一個txt文件,隨便寫一些英文在里面吧,比如說我的亂寫了幾個:
然后在shell中執行:
執行完畢后,到hadoop文件夾內,會看到出現了Output目錄,打印出里面的東西來看看:
可以看到,英文單詞的個數被統計了出來。
偽分布式模式
我們單機的環境中,比較常用的是偽分布式。那么接下來就來看看偽分布式的做法,其實也就是接著上面來。
要進行偽分布式,就是配置幾個文件和改改環境變量。
上面說了,配置文件都在etc那個目錄下,因此需要進入那個目錄,然后修改里面的core-site.xml、hdfs-site.xml兩個文件。
可以先看看官方文檔上是怎么修改的:
http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
里面的Pseudo-Distributed Operation介紹了需要修改的文件:
那么我們就安裝它的這個配置,不過再稍微增加一些東西。先打開core-site.xml,配置如下:
這里比官方的多了一個配置,這樣做可以把tmp目錄指定在自己設置的位置,而tmp是用來存放零時文件,比例運行過程中的文件等。如果不指定,系統會利用linux自己的/tmp目錄來存放,這樣在重啟后就不在了。
hdfs-site.xml的配置如下:
比官方多了兩個東西,一個是namenode,一個是datanode。namenode和datanode文件夾默認是放在tmp里面的,這2個文件夾用來存儲hdfs里的內容。 這里配置指定了那兩個目錄的位置。
然后在相應的目錄中創建namenode和datanode的目錄:
mkdir dfs
mkdir dfs/name
mkdir dfs/data
配置完成后,跟著官方走,下一步是設置無密碼登陸的ssh。
如果沒有安裝ssh,那就用yum安裝就是了。安裝完畢后,生成密鑰對:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
然后用cat命令追加公鑰:
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
這就是一個讀寫過程。
然后就應該可以進行ssh無密碼登錄了:
ssh localhost
登錄本機之后,可以開始正式開啟hadoop了。首先我們可以把hdfs看成和普通新的硬盤一樣,剛買來的新硬盤需要進行格式化,同樣的,我們先進行hdfs的格式化:
bin/hdfs namenode -format
接下來我們就來開啟hdfs文件系統吧:
sbin/start-dfs.sh
然后通過jps命令查看一下:
可以看到,服務啟動了哦。
用網頁查看就是以下狀態,輸入localhost:50070:
以上內容就完成了hdfs的偽分布式。本來官網后面還有yarn的配置,就放在介紹yarn的時候吧。這樣子已經能夠進行hdfs的一些編程操作了。