Hadoop包括3種安裝模式:
①單機模式:只在一臺機器上運行,存儲採用本地文件系統,沒有采用分佈式文件系統HDFS;
②僞分佈式模式:存儲採用分佈式文件系統HDFS,但是HDFS的名稱節點和數據節點都在同一臺機器上;
③分佈式模式:存儲採用分佈式文件系統HDFS,而且HDFS的名稱節點和數據節點位於不同機器上。
一、下載安裝文件
我們在這裏選擇下載2.7.7版本的Hadoop作爲示例,也可酌情選擇下載其他版本:
①進入Hadoop官網安裝文件下載地址:http://mirrors.cnnic.cn/apache/hadoop/common/,點擊hadoop-2.7.7/:
②點擊下載hadoop-2.7.7.tar.gz:
③打開Linux終端,進入剛纔下載文件所在的目錄,通過下列命令將下載文件解壓並保存到/usr/local/目錄下:
sudo tar -zxf hadoop-2.7.7.tar.gz -C /usr/local/
④進入/usr/local/目錄,通過下列命令修改文件夾名:
sudo mv ./hadoop-2.7.7/ ./hadoop/
⑤通過下列命令對當前登錄用戶進行授權,使其擁有對./hadoop目錄的權限:
sudo chown -R 用戶名 ./hadoop/
⑥進入/usr/local/hadoop/目錄,通過下列命令檢查安裝的Hadoop是否可用,成功則會顯示Hadoop的版本信息:
./bin/hadoop version
二、單機模式配置
Hadoop的默認模式爲非分佈式模式(本地模式),無須進行其他配置即可運行,Hadoop附帶了豐富的例子,進入/usr/local/hadoop/目錄,運行下列命令可以查看所有例子:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar
上述命令執行後,會顯示所有例子的簡介信息,包括grep、join、wordcount等,這裏選擇運行grep實例,可以先在/usr/local/hadoop/目錄下創建一個文件夾input,並複製一些文件到該文件下,然後運行grep程序,將input文件夾中的所有文件作爲grep的輸人,讓grep程序從所有文件中篩選出符合正則表達式“dfs[a-z.]+”的單詞,並統計單詞出現的次數,最後,把統計結果輸出到/usr/local/hadoop/output文件夾中,完成上述操作的具體命令如下:
①進入/usr/local/hadoop目錄:
cd /usr/local/hadoop/
②創建文件夾input:
mkdir input
③將配置文件複製到input目錄下:
cp ./etc/hadoop/*.xml ./input
④運行grep例子:
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar grep ./input ./output 'dfs[a-z.]+'
⑤查看運行結果:
cat ./output/*
輸出的結果是符合正則表達式的單詞dfsadmin出現了一次:
1 dfsadmin
需要注意的是,Hadoop默認不會覆蓋結果文件,因此再次運行上面實例時會提示出錯,如果要再次運行,需要先使用如下命令把output文件夾刪除:
rm -r ./output/
三、僞分佈式模式配置
Hadoop可以在單個節點(一臺機器)上以僞分佈式的方式運行,同一個節點既作爲名稱節點(Name Node),也作爲數據節點(Data Node),讀取的是分佈式文件系統HDFS中的文件。
當Hadoop應用於集羣時,不論是僞分佈式還是真正的分佈式運行,都需要通過配置文件對各組件的協同工作進行設置,最重要的幾個配置文件如下:
文件名稱 | 格式 | 描述 |
---|---|---|
hadoop-env.sh | Bash腳本 | 記錄配置Hadoop運行所需的環境變量,以運行Hadoop |
core-site.xml | Hadoop配置XML | Hadoop core的配置項,如HDFS和MapReduce常用的I/O設置等 |
hdfs-site.xml | Hadoop配置XML | Hadoop守護進程的配置項,包括NameNode 、SecondaryNameNode和DataNode等 |
mapred-site.xml | Hadoop配置XML | MapReduce守護進程的配置項,包括JobTracker和TaskTracker |
masters | 純文本 | 運行SecondaryNameNode的機器列表(每行一個) |
slaves | 純文本 | 運行DataNode和TaskTracker的機器列表(每行一個) |
hadoop-metrics.properties | Java屬性 | 控制metrics在Hadoop上如何發佈的屬性 |
僞分佈式配置的詳細步驟請參照:Linux系統Hadoop僞分佈式模式配置。
四、分佈式模式配置
當Hadoop採用分佈式模式部署和運行時,存儲採用分佈式文件系統HDFS,而且HDFS的名稱節點和數據節點位於不同機器上,數據可以分佈到多個節點上,不同數據節點上的數據計算可以並行執行,這時的MapReduce分佈式計算能力才能真正發揮作用。
搭建Hadoop分佈式集羣通常容易想到的如下兩種方法:
①採用多臺機器構建分佈式集羣;
②在一臺機器上安裝多個虛擬機,每個虛擬機上運行一個Hadoop節點。
但是,上述兩種方式都有缺點,如果採用第一種方法,通常需要有多臺機器,對於很多同學而言,通常難以找到多臺機器用於構建分佈式實驗環境;如果採用第二種方法,通常對單臺機器的配置要求很高,如果機器配置較低,那麼在一臺機器上同時運行多個虛擬機,速度會非常慢。
如今,隨着虛擬化技術的發展,尤其是Docker容器技術的誕生,使得人們可以有了第三種構建Hadoop分佈式集羣的方法——使用Docker搭建Hadoop分佈式集羣。