Linux下Apache Hadoop2.7.2的集羣安裝以及WordCount示例

摘要:爲了研究Hadoop與本系統Linux的兼容性,使用最新的hadoop版本2.7.2進行兼容性測試以及WordCount示例運行。

Hadoop簡介

Hadoop下載

首先,根據自己系統的內核情況以及操作系統版本下載所需的軟件。
此次測試系統的Linux 內核:3.10.0-327.el7.x86_64,類似RHEL7.2
前往:http://hadoop.apache.org/releases.html,如下圖中紅色框即2.7.2對應的下載地址。
同時“source”即對應hadoop的源碼。此處下載免安裝壓縮包hadoop-2.7.2.tar.gz
這裏寫圖片描述

Hadoop安裝以及集羣環境配置

1.硬件環境
利用virt-manager工具進行虛擬機的安裝(待細化如何安裝),總共安裝4臺虛擬機
注意:爲了網絡的正常和實際性,建議選擇虛擬機網絡使用橋接方式,windows下利用vmware或者virtual box選擇橋接方式是比較合適的方法。
物理機爲服務器:
內存:64G
CPU:2路32核
其中1臺爲master,剩餘3臺爲slaves,節點名稱以及IP如下所示:

192.168.122.65      master
192.168.122.8       hadoop-node1
192.168.122.149     hadoop-node2
192.168.122.14      hadoop-node3

硬件條件:內存2G、CPU:2核、存儲:40G
2、四臺虛擬機均使用同一個系統RHELV7.2
3、配置master虛擬機準備安裝hadoop
a)、添加hadoop組和hadoop用戶

$groupadd hadoop
$useradd hadoop –g hadoop
$passwd hadoop

密碼設置爲八位:qwer1234
同理,其餘三個機器進行相同配置
b)、配置機器的/etc/hosts文件
按照硬件環境的要求來配置IP和hosts內容,利用ping+[hostname],如果能夠通則表示設置/etc/hosts成功。使用linux自帶的vim或者其他文本編輯器。添加如下內容:
192.168.122.65 master
192.168.122.8 hadoop-node1
192.168.122.149 hadoop-node2
192.168.122.14 hadoop-node3
c)、下載Sun JDK並且進行配置
前往:http://www.oracle.com/technetwork/java/javase/downloads/index.html
下載最新的JDK,本次測試使用JDK8u77版本,本次下載jdk-8u77-linux-x64.tar.gz壓縮包
此壓縮包爲免安裝解壓後則可以直接使用
首先解壓此文件,解壓目錄需要可以hadoop用戶訪問,否則後續使用中則會提示權限問題。

#tar xf jdk-8u77-linux-x64.tar.gz –C /opt/jdk/

其次配置JAVA路徑,編輯/etc/profile文件,並添加如下內容:

JAVA_HOME=/opt/jdk/jdk1.8.0_73
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME
export PATH
export CLASSPATH

最後,利用souce命令來生效此配置,並利用java –version命令查看配置是否成功

#source /etc/profile
#java –version 

如果結果如下內容則表示配置成功:

java version “1.8.0_73”
Java™ SE Runtime Environment (build 1.8.0_73-b02)
Java HotSpot™ 64-Bit Server VM( build 25.73-b02,mixed mode)

d)、SSH無密碼驗證配置(關鍵部分,否則會報錯,具體原理待細化)

前提:安裝ssh,本系統默認已經安裝;關閉防火牆

#systemctl stop firewalld.service
#systemctl disable firewalld.service

基本原理:master主機生成公鑰和私鑰,將公鑰拷貝到各個slaves,利用密鑰對進行登錄則不需密碼實際使用如下所示
配置master無密碼登錄所有slaves
1)、master節點生成無密碼密鑰對

    #su - hadoop            #登錄hadoop用戶
    #ssh-keygen –t rsa    
    #下面提示中都使用默認即可(都按下“Enter”即可)

此時則可以查看/home/hadoop/.ssh/下是否有id_rsa(私鑰)和id_rsa.pub(公鑰)

2)拷貝公鑰到localhost和slaves

$ssh-copy-id -i localhost
$ssh-copy-id -i hadoop-node1
$ssh-copy-id -i hadoop-node2
$ssh-copy-id -i hadoop-node3

中間過程中需要輸入各個節點的密碼。
6)、驗證是否成功,是否不需要密碼則可以成功登陸
同理,配置salves可以無密碼訪問master則類似於上述步驟
同理其他機器進行系統操作則可以完成無密碼登錄master
4、安裝並配置hadoop
root用戶下解壓壓縮包到/opt/下,並將權限賦予hadoop

#chown –R hadoop:hadoop /opt/hadoop-2.7.2/

配置hadoop,/etc/profile,添加如下內容

export HADOOP_HOME=/opt/hadoop-2.7.2
export PATH=$HADOOP_HOME/bin:$PATH

驗證:hadoop用戶下可以使用“hadoop”命令
配置hadoop
1. hadoop-env.sh 位置在$HADOOP_HOME/etc/hadoop文件夾下
將JAVA_HOME配置成上述jdk的位置即可

export JAVA_HOME=/opt/jdk/jdk1.8.0_73

2. core-site.xml,新建的$HADOOP_HOME/tmp目錄存放臨時文件,否則默認爲/tmp/hadoo-hadoop
在標籤中添加標籤

<property>
    <name>hadoop.tmp.dir</name>
    <value>/opt/hadoop-2.7.3/tmp/</value>
    <description>A base for temporary directories</description>
</property>
<!—file system properties>
<property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
</property>

3. hdfs-site.xml,分佈式文件系統的配置,其中replication爲數據副本數量

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

4. mapred-site.xml,拷貝自mapred-site.xml.template

<property>
    <name>mapred.job.tracker</name>
    <value>http://localhost:9001</value>
</property>

5. slaves文件,添加幾個slaves節點的主機名稱即可,例如此處即添加
hadoop-node1
hadoop-node2
hadoop-node3
6. 最後則拷貝這些配置文件到slaves即可,但是注意權限問題,同時修改各個slaves對應的/etc/profile
5、啓動驗證
以hadoop用戶登錄master,啓動hadoop

$hdfs namenode –format 

(只需要第一次進行格式化)
$$HADOOP_HOME/sbin/start-all.sh
則可以啓動hadoop,查看輸出則知道是否輸出成功與否
在此版本的hadoop中,start-all.sh被start-dfs.sh、start-yarn.sh代替
如果啓動正常則可以看到一些log輸出
驗證hadoop,master端

$jps
5557        SecondaryNameNode
5366        DataNode
5817        Jps
5214        NameNode

slave端:

8677        NodeManager
8538        DataNode
8876        Jps

由此可見均能正常啓動成功了。
驗證hdfs
$hdfs dfsadmin –report
結果如下所示:

[hadoop@hadoop-node1 ~]$ hdfs dfsadmin -report
Configured Capacity: 152782585856 (142.29 GB)
Present Capacity: 125864767488 (117.22 GB)
DFS Remaining: 125864595456 (117.22 GB)
DFS Used: 172032 (168 KB)
DFS Used%: 0.00%
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0

-------------------------------------------------
Live datanodes (4):

Name: 192.168.122.14:50010 (hadoop-node3)
Hostname: hadoop-node3
Decommission Status : Normal
Configured Capacity: 38195646464 (35.57 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 6058930176 (5.64 GB)
DFS Remaining: 32136671232 (29.93 GB)
DFS Used%: 0.00%
DFS Remaining%: 84.14%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Apr 05 11:32:16 CST 2016


Name: 192.168.122.149:50010 (hadoop-node2)
Hostname: hadoop-node2
Decommission Status : Normal
Configured Capacity: 38195646464 (35.57 GB)
DFS Used: 45056 (44 KB)
Non DFS Used: 6750404608 (6.29 GB)
DFS Remaining: 31445196800 (29.29 GB)
DFS Used%: 0.00%
DFS Remaining%: 82.33%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Apr 05 11:32:17 CST 2016


Name: 192.168.122.65:50010 (master)
Hostname: master
Decommission Status : Normal
Configured Capacity: 38195646464 (35.57 GB)
DFS Used: 57344 (56 KB)
Non DFS Used: 7136018432 (6.65 GB)
DFS Remaining: 31059570688 (28.93 GB)
DFS Used%: 0.00%
DFS Remaining%: 81.32%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Apr 05 11:32:15 CST 2016


Name: 192.168.122.8:50010 (hadoop-node1)
Hostname: hadoop-node1
Decommission Status : Normal
Configured Capacity: 38195646464 (35.57 GB)
DFS Used: 24576 (24 KB)
Non DFS Used: 6972465152 (6.49 GB)
DFS Remaining: 31223156736 (29.08 GB)
DFS Used%: 0.00%
DFS Remaining%: 81.75%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Tue Apr 05 11:32:16 CST 2016

以上爲通過命令行方式顯示HDFS情況,同時,使用WEB端也可以完成正常的顯示和管理操作。
打開192.168.122.65:5007,即可出線如下的界面
這裏寫圖片描述

WordCount示例

1.hadoop用戶下,完成準備工作
創建文件夾
mkdir ~/file
準備文件
echo “word test word hadoop hello” > ~/file/file1.txt
echo “word word word word hadoop hello” > ~/file/file2.txt
echo “word word word word hadoop hello” > ~/file/file3.txt

重啓hadoop服務
cd $HADOOP_HOME/sbin
./stop-all.sh
./start-all.sh
確保都正常啓動了則可以進行下面內容了。
2.HDFS下創建文件夾input和output文件

hadoop fs -mkdir /input
hadoop fs -mkdir /output

PS:注意“/”是必須的否則提示“No such file or directory”

3.上傳本地文件到HDFS上

hadoop fs -put ~/file/file*.txt /input

4.運行wordcount

$hadoop jar $HADOOP_HOOME/share/hadoop/mapreduce/hadoop-mapreduce-example-2.7.2.jar wordcount /input /output/wordcount1

此時則運行完成了,查看結果

$hadoop fs -cat /output/wordcount1/part-r-00000

此時則會統計本地創建的多個文件的單詞數量
例如:
and 1
hello 3
hadoop 2

到此,hadoop真實集羣搭建基本完成

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章