環境準備
軟體版本
-
電腦系統:macOS 10.14.6
-
虛擬機器軟體:Parallels Desktop15
-
Hadoop各節點節點作業系統:CentOS-7-x86_64-Minimal-1908.iso
-
CentOS 7 JDK版本:jdk1.8.0_162
-
Hadoop版本:hadoop-2.7.7
環境配置說明
-
電腦配置:MacBook Pro 13(8G + 256G)
-
三臺 CentOS 7 配置:記憶體1G、硬碟13G(與Mac完全隔離的虛擬機器)
-
三臺 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)
-
三臺虛擬機器的使用者名稱:lyh
操作說明
-
下面所有的操作,都是在root許可權下進行的:
su root
進入root許可權 -
下面所有的操作,都是用 Mac 的終端遠端連線(ssh)三臺 CentOS 7 進行的,這樣會比較方便快捷
-
由於centos虛擬機器網路環境沒有本機好,所以這裡採用的是本地下載好所需檔案包,然後通過MacOS 終端上傳到虛擬機器,大家也可以採取直接從虛擬機器上下載所需的檔案包。
免密登入配置
vim 的安裝
CentOS-7-Minimal
剛安裝好,需要給三臺主機都安裝vim編輯器:
yum install vim -y
如果不確定vim是否安裝成功,可以輸入vim -h
檢視是否有vim命令
host配置
-
開啟虛擬機器,預設是在
/home/lyh
目錄下的,host配置檔案在根目錄下的etc
資料夾下,給三臺虛擬機器均進行配置。 -
注意,下面的host配置,一定要根據自己的主機名和ip進行配置,三臺主機的配置均一樣。
-
根目錄下,輸入:
vim ../../etc/hosts
,最後面新增如下內容:10.211.55.18 node1 10.211.55.19 node2 10.211.55.20 node3
關閉防火牆
三臺主機都需要進行該配置。
-
檢視防火牆狀態
firewall-cmd --state
-
停止防火牆
systemctl stop firewalld.service
-
禁止防火牆開機啟動
systemctl disable firewalld.service
-
關閉selinux
-
第一步:在
/home/lyh'
目錄下,輸入:vim ../../etc/selinux/config
-
註釋掉
SELINUX=enforcing
,新增如下內容:SELINUX=disabled
也可以直接將enforcing修改為disabled。
-
-
配置所有各自伺服器本身公鑰和免密:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
-
將公鑰追加到”authorized_keys”檔案
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
-
免密登入公鑰分發
每臺主機,互相分發公鑰,實現各個主機之間的免密登入。
說明:三臺主機對應的IP
node1(10.211.55.18) node2(10.211.55.19) node3(10.211.55.20)
-
node1 分發給:node2、node3
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
-
node2 分發給:node1、node3
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.20
-
node3 分發給:node1、node2
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.18
ssh-copy-id -i ~/.ssh/id_dsa.pub 10.211.55.19
-
-
免密登入配置,已經完成,可以進行測試
ssh node1 ssh node2 ssh node3
三臺主機之間可以實現免密登入了
下載並配置JDK
下載JDK並上傳到虛擬機器
大家可以去到:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html ,選擇自己需要下載的JDK版本,我這裡下載的是 jdk-8u162-linux-x64.tar.gz,下載好後,通過終端,分別上傳到三臺虛擬機器:
scp -r 本地下載好的JDK路徑 虛擬機器使用者名稱@虛擬機器ip:要上傳到虛擬機器的路徑
如:下載好的JDK包在桌面,要上傳到 lyh
使用者的 /app
路徑下,該使用者的IP為 10.211.55.18
。
scp -r ~/Desktop/jdk-8u162-linux-x64.tar.gz lyh@10.211.55.18:/app
這裡上傳到虛擬機器根目錄的 app
資料夾下,app 資料夾是需要自己建立的。
解壓JDK包並配置Linux環境變數
進入 app
資料夾(三臺虛擬機器都需要安裝JDK)
-
解壓JDK包
tar -zxvf jdk-8u162-linux-x64.tar.gz
-
建立為JDK軟連結
ln -s jdk1.8.0_162 jdk
-
配置環境變數
在根目錄
/
下,輸入vim /etc/profile
,新增如下內容:# JAVA export JAVA_HOME=/app/jdk export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:. export PATH=${JAVA_HOME}/bin:$PATH
路徑要根據自己的實際情況來更改,如我這裡的是:/app/jdk
-
如果不能寫入,說明沒有前面沒有進入root許可權,請按下esc後,強制寫入儲存:
輸入:
:w !sudo tee %
回車後,需要輸入使用者密碼,以及輸入字母
O
確認。然後退出:
:!q
-
使剛剛的配置生效
source /etc/profile
-
驗證JDK安裝是否完成
java -version
出現以下字眼說明安裝成功了
java version "1.8.0_162" Java(TM) SE Runtime Environment (build 1.8.0_162-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
安裝Hadoop-2.7.7
三臺虛擬機器都需要安裝Hadoop-2.7.7
下載hadoop2.7.7並上傳到虛擬機器
下載地址:https://archive.apache.org/dist/hadoop/core/hadoop-2.7.7/
選擇hadoop-2.7.7.tar.gz進行下載,這裡預設將檔案下載到 ~/Desktop
,上傳到虛擬機器的 /app
目錄下
分別上傳到三臺虛擬機器:
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.18:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.19:/app
src -r ~/Desktop/hadoop-2.7.7.tar.gz lyh@10.211.55.20:/app
解壓安裝包並配置Linux環境變數
-
解壓Hadoop安裝包
tar -zxvf hadoop-2.7.7.tar.gz
-
為hadoop-2.7.7建立軟連結
ln -s hadoop-2.7.7 hadoop
-
配置Linux環境變數
-
進入根目錄
/
vim /etc/profile
-
新增如下內容
# HADOOP export HADOOP_HOME=/app/hadoop export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
-
儲存並退出,是寫入的內容生效
source /etc/profile
-
-
檢查是否安裝成功
-
輸入:whereis hdfs
輸出:
hdfs: /app/hadoop-2.7.7/bin/hdfs.cmd /app/hadoop-2.7.7/bin/hdfs
-
輸入:whereis start-all.sh
輸出:
start-all: /app/hadoop-2.7.7/sbin/start-all.cmd /app/hadoop-2.7.7/sbin/start-all.sh
-
-
這時候說明安裝成功了
Hadoop 配置
時間同步配置
三臺虛擬機器都需要安裝。
yum install -y ntp
設定NTP服務開機啟動
chkconfig ntpd on
檢視ntp程式是否啟動
ps aux | grep ntp
在node1進行檔案配置
修改目錄 ${HADOOP_HOME}/etc/hadoop 目錄中的檔案
cd ${HADOOP_HOME}/etc/hadoop
-
設定 hadoop-env.sh
-
編輯hadoop-env.sh檔案,找到export JAVA_HONE,修改如下:
export JAVA_HOMT=/app/jdk
-
-
修改 core-site.xml 配置檔案
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://node1:8020</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/app/hadoop/tmp</value> </property> </configuration>
-
修改 hdfs-site.xml 配置檔案
<configuration> <property> <name>dfs.replication</name> <value>2</value> </property> </configuration>
-
將 mapred-site.xml.template 複製為檔名是 mapred-site.xml 的檔案
cp mapred-site.xml.template mapred-site.xml
-
修改 mapred-site.xml 配置檔案
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
-
修改 yarn-site.xml 配置檔案
<configuration> <property> <name>yarn.resourcemanager.hostname</name> <value>node1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <!-- Site specific YARN configuration properties --> </configuration>
-
修改 slaves 檔案,刪除原有內容,修改為如下內容:
node2 node3
分發配置到 node2、node3 虛擬機器
-
將
hadoop/etc
目錄下的hadoop
資料夾分發給另外兩臺虛擬機器cd ${HADOOP_HOME}/etc
scp -r hadoop lyh@node2:/app/hadoop/etc/
scp -r hadoop lyh@node3:/app/hadoop/etc/
初始化及啟動
-
在此之前需要先下載openjdk-devel
yum install java-1.8.0-openjdk-devel.x86_64
-
在 node1 格式化 hdfs
hdfs namenode -format
-
啟動Hadoop服務
-
啟動HDFS:
start-dfs.sh
-
啟動YARN:
start-yarn.sh
-
啟動all:
start-all.sh
-
-
輸入
jps
可以檢視程式 -
關閉Hadoop服務
stop-all.sh