Centos7.5搭建Hadoop2.8.5完全分布式集群部署


一、基礎環境設置


1. 准備4台客戶機(VMware虛擬機)

系統版本:Centos7.5

節點配置:

192.168.208.128 ——Master

192.168.208.129 ——Slaver-1

192.168.208.130 ——Slaver-2

192.168.208.130 ——Slaver-3


2. 配置hosts文件,使4台客戶機能夠以主機名相互訪問

[root@Master ~]# vi /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.208.128 Master
192.168.208.129 Slaver-1
192.168.208.130 Slaver-2
192.168.208.131 Slaver-3 

# 將hosts文件傳送給其它3台客戶機
[root@Master ~]# scp -r /etc/hosts root@Slaver-1:/etc
[root@Master ~]# scp -r /etc/hosts root@Slaver-2:/etc
[root@Master ~]# scp -r /etc/hosts root@Slaver-3:/etc

3. 為4台客戶機配置jdk環境

我們選擇配置jdk1.8.0_181,點擊此處下載

[root@Master ~]# wget http://download.oracle.com/otn-pub/java/jdk/8u181-b13/96a7b8442fe848ef90c96a2fad6ed6d1/jdk-8u181-linux-x64.tar.gz

# 解壓
[root@Master ~]# tar -xzvf jdk-8u181-linux-x64.tar.gz

[root@Master ~]# mkdir /usr/local/java # 創建jdk存放目錄
[root@Master ~]# mv jdk1.8.0_181/ /usr/local/java  # 將解壓縮文件轉移至存放目錄

# 配置jdk環境

[root@Master ~]# vi /etc/profile
# 在文件末尾添加如下內容
# java
export JAVA_HOME=/usr/local/java/jdk1.8.0_181 # 注意,要與剛剛所創建的目錄匹配
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 使jdk配置文件生效
[root@Master ~]# source /etc/profile

# 測試jdk環境配置是否成功,如輸出如下內容,則表示成功
[root@Master ~]# java -version
java version "1.8.0_181"
Java(TM) SE Runtime Environment (build 1.8.0_181-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)

4. 關閉防火牆,SELinux

a. iptables

# 臨時關閉
[root@Master ~]# service iptables stop

# 禁止開機啟動
[root@Master ~]# chkconfig iptables off

b.firewalld

CentOS7版本后防火牆默認使用firewalld,默認是沒有iptables的,所以關閉防火牆的命令如下:

# 臨時關閉
[root@Master ~]# systemctl stop firewalld

# 禁止開機啟動,輸出如下,則表示禁止成功
[root@Master ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

c.關閉SELinux

# 永久關閉SELinux
[root@Master ~]# vi /etc/selinux/config
#disabled - No SELinux policy is loaded.
SELINUX=disabled  # 此處將SELINUX=enforcing改為SELINUX=disabled
# SELINUXTYPE= can take one of three two values:

# 修改SELinux配置后,需重啟客戶機才能生效
[root@Master ~]# reboot

# 重啟之后,查看SELinux狀態
[root@Master ~]# /usr/sbin/sestatus 
SELinux status: disabled  # 如果輸出如是,則表示SELinux永久關閉成功

5. 設置SSH免密鑰

關於ssh免密碼的設置,要求每兩台主機之間設置免密碼,自己的主機與自己的主機之間也要求設置免密碼。在這里,為了避免后面的各種權限問題,我們直接使用root賬戶來設置面密鑰登陸。

[root@Master ~]$ ssh-keygen -t rsa
[root@Master ~]$ ssh-copy-id node-1
[root@Master ~]$ ssh-copy-id node-2
[root@Master ~]$ ssh-copy-id node-3

注:每一台客戶機都要做如上設置,所以,最好的方式是:按上述方法配置好一台虛擬機之后,再克隆出其它幾台。



二、安裝hadoop集群


1. 下載hadoop2.8.5二進制文件

hadoop2.8.5下載鏈接


2. hadoop安裝目錄

為了統一管理,我們將hadoop的安裝路徑定為/usr/opt/hadoop下,創建目錄后,我們將hadoop二進制文件解壓至這個目錄下。


3. 配置core-site.xml

hadoop的配置文件,在/opt/hadoop/hadoop-2.8.5/etc/hadoop下,

[root@Master ~]# cd /opt/hadoop/hadoop-2.8.5/etc/hadoop
[root@Master hadoop]# vi core-site.xml
<configuration>

<!--配置hdfs文件系統的命名空間--> 
  <property> 
    <name>fs.defaultFS</name> 
    <value>hdfs://Master:9000</value> 
  </property> 

<!-- 配置操作hdfs的存沖大小 --> 
  <property> 
    <name>io.file.buffer.size</name> 
    <value>4096</value> 
  </property> 
<!-- 配置臨時數據存儲目錄 --> 
  <property> 
    <name>hadoop.tmp.dir</name> 
    <value>/opt/hadoop/hadoop-2.8.5/tmp</value> 
  </property>

</configuration>


4. 配置hdfs-site.xml

[root@Master hadoop]# vim hdfs-site.xml
<configuration>

<!--配置副本數--> 
	<property> 
		<name>dfs.replication</name> 
		<value>3</value> 
	</property> 
<!--hdfs的元數據存儲位置--> 
	<property> 
		<name>dfs.namenode.name.dir</name> 
		<value>/opt/hadoop/hadoop-2.8.5/hdfs/name</value> 
	</property> 
<!--hdfs的數據存儲位置--> 
	<property> 
		<name>dfs.datanode.data.dir</name> 
		<value>/opt/hadoop/hadoop-2.8.5/hdfs/data</value> 
	</property> 
<!--hdfs的namenode的web ui 地址--> 
	<property> 
		<name>dfs.http.address</name> 
		<value>Master:50070</value> 
	</property> 
<!--hdfs的snn的web ui 地址--> 
	<property> 
		<name>dfs.secondary.http.address</name> 
		<value>Master:50090</value> 
	</property> 
<!--是否開啟web操作hdfs--> 
	<property> 
		<name>dfs.webhdfs.enabled</name> 
		<value>true</value> 
	</property> 
<!--是否啟用hdfs權限(acl)--> 
	<property> 
		<name>dfs.permissions</name> 
		<value>false</value> </property>

</configuration>

5. 配置mapred-site.xml

[root@Master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@Master hadoop]# vim mapred-site.xml
<configuration>

<!--指定maoreduce運行框架--> 
	<property> 
		<name>mapreduce.framework.name</name> 
		<value>yarn</value> </property> 
<!--歷史服務的通信地址--> 
	<property> 
		<name>mapreduce.jobhistory.address</name> 
		<value>Master:10020</value> 
	</property> 
<!--歷史服務的web ui地址--> 
	<property> 
		<name>mapreduce.jobhistory.webapp.address</name> 
		<value>Master:19888</value> 
	</property>

</configuration>


6. 配置yarn-site.xml

[root@Master hadoop]# vim yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->

<!--指定resourcemanager所啟動的服務器主機名--> 
	<property> 
		<name>yarn.resourcemanager.hostname</name> 
		<value>Master</value> 
	</property> 
<!--指定mapreduce的shuffle--> 
	<property> 
		<name>yarn.nodemanager.aux-services</name> 
		<value>mapreduce_shuffle</value> 
	</property> 
<!--指定resourcemanager的內部通訊地址--> 
	<property> 
		<name>yarn.resourcemanager.address</name> 
		<value>Master:8032</value> 
	</property> 
<!--指定scheduler的內部通訊地址--> 
	<property> 
		<name>yarn.resourcemanager.scheduler.address</name> 
		<value>Master:8030</value> 
	</property> 
<!--指定resource-tracker的內部通訊地址--> 
	<property> 
		<name>yarn.resourcemanager.resource-tracker.address</name> 
		<value>Master:8031</value> 
	</property> 
<!--指定resourcemanager.admin的內部通訊地址--> 
	<property> 
		<name>yarn.resourcemanager.admin.address</name> 
		<value>Master:8033</value> 
	</property> 
<!--指定resourcemanager.webapp的ui監控地址--> 
	<property> 
		<name>yarn.resourcemanager.webapp.address</name> 
		<value>Master:8088</value> 
	</property>

</configuration>

7. 配置slaves文件

[root@Master hadoop]# vim slaves
Slaver-1
Slaver-2
Slaver-3

8. 配置hadoop-env.sh,指定JAVA_HOME

[root@Master hadoop]# vim hadoop-env.sh

修改 export JAVA_HOME=/usr/local/java/jdk1.8.0_181

9. 配置yarn-env.sh,指定JAVA_HOME

[root@Master hadoop]# vim yarn-env.sh

修改 export JAVA_HOME=/usr/local/java/jdk1.8.0_181

10. 配置mapred-env.sh,指定JAVA_HOME

[root@Master hadoop]# vim mapred-env.sh

修改 export JAVA_HOME=/usr/local/java/jdk1.8.0_181

11. 將hadoop文件分發到其它幾台客戶機上

[root@Master hadoop]# scp -r hadoop/ Slaver-1:`pwd`
[root@Master hadoop]# scp -r hadoop/ Slaver-2:`pwd`
[root@Master hadoop]# scp -r hadoop/ Slaver-3:`pwd`


三、啟動並驗證hadoop集群


1. 啟動集群

第一次啟動集群,需要格式化namenode,操作如下:

[root@Master ~]# hdfs namenode -format

輸出如下內容,則表示格式化成功

test


**啟動HDFS**

格式化成功之后,我們就可以啟動HDFS了,命令如下:

[root@Master hadoop]# start-dfs.sh
Starting namenodes on [Master]
Master: starting namenode, logging to /opt/hadoop/hadoop-2.8.5/logs/hadoop-root-namenode-Master.out
Slaver-3: starting datanode, logging to /opt/hadoop/hadoop-2.8.5/logs/hadoop-root-datanode-Slaver-3.out
Slaver-2: starting datanode, logging to /opt/hadoop/hadoop-2.8.5/logs/hadoop-root-datanode-Slaver-2.out
Slaver-1: starting datanode, logging to /opt/hadoop/hadoop-2.8.5/logs/hadoop-root-datanode-Slaver-1.out
Starting secondary namenodes [Master]
Master: starting secondarynamenode, logging to /opt/hadoop/hadoop-2.8.5/logs/hadoop-root-secondarynamenode-Master.out

啟動Yarn

啟動Yarn時需要注意,我們不能在NameNode上啟動Yarn,而應該在ResouceManager所在的主機上啟動。但我們這里是將NameNode和ResouceManager部署在了同一台主機上,所以,我們直接在Master這台機器上啟動Yarn。

[root@Master hadoop]# start-yarn.sh
starting yarn daemons
starting resourcemanager, logging to /opt/hadoop/hadoop-2.8.5/logs/yarn-root-resourcemanager-Master.out
Slaver-2: starting nodemanager, logging to /opt/hadoop/hadoop-2.8.5/logs/yarn-root-nodemanager-Slaver-2.out
Slaver-1: starting nodemanager, logging to /opt/hadoop/hadoop-2.8.5/logs/yarn-root-nodemanager-Slaver-1.out
Slaver-3: starting nodemanager, logging to /opt/hadoop/hadoop-2.8.5/logs/yarn-root-nodemanager-Slaver-3.out

2. web驗證

至此,我們的集群就已完全啟動起來了,我們可以通過訪問web頁面,來做最后一步驗證。我們已將web頁面配置在Master主機上,因此,我們訪問http://192.168.208.128:50070/,頁面顯示如下:

1539781810394


1539781852813


免責聲明!

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



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