CentOS7 分布式安裝 Hadoop 2.8


1. 基本環境

1.1 操作系統

操作系統:CentOS7.3

1.2 三台虛擬機

172.20.20.100  master

172.20.20.101  slave1

172.20.20.102  slave2

1.3 軟件包

jdk-8u121-linux-x64.gz

hadoop-2.8.4.tar.gz

2. 環境配置

2.1 新建hadoop用戶

useradd hadoop

通過passwd命令修改hadoop用戶密碼,啟用hadoop用戶。

passwd hadoop

 

2.2 配置ssh免密碼登錄

root和hadoop用戶都進行ssh配置以方便主機間操作

詳細配置參考另外一篇文章:ssh多台主機實現互相認證

2.3 修改hosts文件

需要在root用戶下操作,hadoop用戶沒有修改權限

修改master主機hosts文件

vi /etc/hosts

添加以下內容:

172.20.20.100 master
172.20.20.101 slave1 172.20.20.102 slave2

2.4 同步hosts文件到其他主機

需要在root用戶下操作,hadoop用戶沒有修改權限

 2.1 步驟已經實現了ssh無密碼登錄,通過scp命令拷貝master主機hosts文件到slave1、slave2主機。

2.5 關閉主機防火牆

每台主機均需操作

# 關閉防火牆
systemctl stop firewalls.service

#禁止防火牆開機啟動
systemctl disable firewalls.service

2.6 關閉 selinux

每台主機均需操作

setenforce 0
vi /etc/sysconfig/selinux

修改 SELINUX 值為disabled

 

getenforce 命令查看 selinux狀態為disabled

2.7 安裝Java JDK

(1)oracle官網下載 jdk-8u121-linux-x64.gz,版本可以根據自己情況做調整。

(2)解壓 jdk-8u121-linux-x64.gz 到 /opt/java 目錄下。

(3)配置 jdk環境變量。修改/etc/profile 文件,追加以下內容:

#Java
export JAVA_HOME=/opt/java/jdk1.8.0_121
export PATH=$PATH:${JAVA_HOME}/bin
export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar

修改完畢后,執行 source /etc/profile,通過 java -version 命令查看是否安裝成功。

(4)在每台機器上都安裝jdk(也可同通過scp命令拷貝/etc/profile 和 /opt/java 實現),hadoop集群要求每台運行主機必須安裝jdk。

3. Hadoop 安裝

 3.1 服務器功能規划

master  slave1 slave2
NameNode ResourceManage  
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer   SecondaryNameNode

3.2 在master主機上安裝hadoop

注意:切換到hadoop用戶

(1) 解壓hadoop-2.8.4.tar.gz至 /opt目錄下

tar -zxvf hadoop-2.8.4.tar.gz

(2)  配置Hadoop JDK路徑

修改 hadoop 解壓縮后 etc目錄下 hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中的JDK路徑

export JAVA_HOME=/opt/java/jdk1.8.0_121

(3) 配置core-site.xml

<configuration>
 <!-- 指定NameNode主機和hdfs端口 --> <property> <name>fs.defaultFS</name> <value>hdfs://master:8020</value> </property>  <!-- 指定tmp文件夾路徑 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/data/tmp</value> </property> </configuration>

fs.defaultFS 為 NameNode 的地址,hadoop.tmp.dir 為hadoop臨時目錄的地址,默認情況下,NameNode和DataNode的數據文件都會存在這個目錄下的對應子目錄下。應該保證此目錄是存在的,如果不存在,先創建。 

(4) 配置hdfs-site.xml

<property>
   <name>dfs.replication</name>
   <value>3</value>
</property>
<property>
   <name>dfs.namenode.secondary.http-address</name>
   <value>slave2:50090</value>
</property>
<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoop/data/dfs/namenode</value>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoop/data/dfs/datanode</value>
</property>

dfs.namenode.secondary.http-address是指定secondaryNameNode的http訪問地址和端口號,因為在規划中,我們將slave2規划為SecondaryNameNode服務器。所以這里設置為:slave2:50090;dfs.namenode.name.dir 指定 NameNode 數據存放路徑;dfs.datanode.data.dir 指定 DataNode 數據存放路徑;注意,要提前創建好/home/hadoop/data/dfs 文件夾。

(5) 配置slaves

修改hadoop etc目錄下slaves文件

vi slaves

修改其內容為:

master
slave1
slave2

slaves文件是指定HDFS DataNode 工作節點。

(6) 配置 yarn-site.xml

vi yarn-site.xml

添加以下屬性:

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>slave1</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>106800</value>
</property>

根據規划yarn.resourcemanager.hostname這個指定resourcemanager服務器指向slave1

yarn.log-aggregation-enable是配置是否啟用日志聚集功能。

yarn.log-aggregation.retain-seconds是配置聚集的日志在HDFS上最多保存多長時間。

(7) 配置mapred-site.xml

從mapred-site.xml.template復制一個mapred-site.xml文件。

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>master:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>master:19888</value>
</property>

mapreduce.framework.name設置mapreduce任務運行在yarn上。

mapreduce.jobhistory.address是設置mapreduce的歷史服務器安裝在master機器上。

mapreduce.jobhistory.webapp.address是設置歷史服務器的web頁面地址和端口號。

(8) 分發Hadoop文件

master主機hadoop解壓目錄為 /opt/software,在slave1和slave2 分別新建目錄 /opt/software

mkdir /opt/software

然后通過scp分發hadoop安裝文件。

scp -r /opt/software/hadoop-2.8.4 slave1:/opt/software/
scp -r /opt/software/hadoop-2.8.4 slave2:/opt/software/

(9) 配置Hadoop 環境變量

su root
vi  /etc/profile

添加如下配置:

#hadoop
export HADOOP_HOME=/opt/software/hadoop-2.8.4
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin

修改完成,保存后執行 source /etc/profile 命令,然后scp命令,拷貝/etc/profile 文件至 slave1和 slave2 主機。

scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile

同樣在slave1和slave2 主機上執行 source /etc/profile 重新加載配置信息。

(10) NameNode 格式化

在NameNode機器上執行格式化

$HADOOP_HOME/bin/hdfs namenode –format

注意:

如果需要重新格式化NameNode,需要先將原來NameNode和DataNode下的文件全部刪除,不然會報錯,NameNode和DataNode所在目錄是在hdfs-site.xmlhadoop.tmp.dirdfs.namenode.name.dirdfs.datanode.data.dir屬性配置的。

<property>
   <name>dfs.namenode.name.dir</name>
   <value>/home/hadoop/data/dfs/namenode</value>
</property>
<property>
   <name>dfs.datanode.data.dir</name>
   <value>/home/hadoop/data/dfs/datanode</value>
</property>

因為每次格式化,默認是創建一個集群ID,並寫入NameNode和DataNode的VERSION文件中(VERSION文件所在目錄為dfs/name/current 和 dfs/data/current),重新格式化時,默認會生成一個新的集群ID,如果不刪除原來的目錄,會導致NameNode中的VERSION文件中是新的集群ID,而DataNode中是舊的集群ID,不一致時會報錯。

另一種方法是格式化時指定集群ID參數,指定為舊的集群ID。

4.  啟動集群

4.1  啟動HDFS

[hadoop@master ~]$ $HADOOP_HOME/sbin/start-dfs.sh

jps 命令查看進程啟動情況,能看到master主機啟動了 NameNode 和 DataNode進程。

從啟動輸出信息可以看出NameNode、DataNode和 SecondaryNameNode 啟動情況。

4.2  啟動YARN

ssh連接到slave1主機,ResourceManager 服務運行主機。

ssh slave1
$HADOOP_HOME/sbin/start-yarn.sh

jps命令,查看slave1主機運行進程。

 注意,如果不在ResourceManager主機上運行 $HADOOP_HOME/sbin/start-yarn.sh 命令的話,ResourceManager 進程將不會啟動,需要到 ResourceManager 主機上執行yarn-daemon.sh start resourcemanager 命令來啟動ResourceManager進程。

$HADOOP_HOME/sbin/yarn-daemon.sh start resourcemanager

4.3 啟動日志服務器

因為我們規划的是在master服務器上運行MapReduce日志服務,所以要在slave2上啟動。

[hadoop@master ~]$ $HADOOP_HOME/sbin/mr-jobhistory-daemon.sh start historyserver

4.4 查看HDFS Web頁面

地址為 NameNode 進程運行主機ip,端口為50070,http://172.20.20.100:50070 。

 

4.5 查看YARN Web頁面

地址為ResourceManager 進程運行主機,http://172.20.20.101:8088

4.6 查看JobHistory Web 頁面

地址為JobHistoryServer 進程運行主機ip,端口為19888,通過配置文件查看自己的JobHistory web端口,http://172.20.20.100:19888

 

 至此,已經完成Hadoop 分布式安裝。

5. 測試Job

5.1  准備mapreduce輸入文件wc.input

[hadoop@master ~]$ cat wc.input
hadoop mapreduce hive
hbase spark storm
sqoop hadoop hive
spark hadoop

5.2 在HDFS創建輸入目錄input

[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs dfs -mkdir input

5.3 將wc.input 上傳到HDFS

[hadoop@master ~]$ $HADOOP_HOME/bin/hdfs dfs -put wc.input /input

5.4 運行hadoop自帶的mapreduce Demo

[hadoop@master ~]$ yarn jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /input/wc.input /output

因為/etc/profile文件中已配置過hadoop環境變量,所以可以直接運行yarn命令,如下所示為執行結果。

5.5 查看輸出文件

[hadoop@master ~]$ hdfs dfs -ls /output/

[hadoop@master ~]$ hdfs dfs -cat /output/part-r-00000

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM