一、需要的工具
需要的工具我已經完成分享,需要的可以直接在網盤中下載。
VMware15 Workstation Pro 提取碼:pp12
ubuntu16 18 19 鏡像 提取碼:yfj0
Xshell+Xftp 提取碼:6ao9
jdk1.8 提取碼:rzpy
hadoop 提取碼:5hpm
二、搭建單機僞分佈式集羣
-
說明: 搭建完全分佈式集羣的時候我們可以先從僞分佈式集羣搭建起,後面從機的java hadoop環境我們可以直接從主機上覆制即可,不需要兩臺從機都要重新配置環境,所以我們從僞分佈式集羣搭建開始。搭建僞分佈式集羣可以參考我前面的博客
阿里雲服務器搭建hadoop2.7僞分佈式環境
不過前面搭建的是基於阿里雲centos7.6環境搭建的,其實大致上差不多,但是爲了完整性,決定演示一下ubuntu虛擬機上的完整搭建步驟。 -
修改主機名字爲master
然後重啓主機生效 :sudo reboot
-
修改host文件
vim /etc/hostname
- 安裝SSH
sudo apt-get install openssh-server
測試ssh是否安裝成功。
ssh master
- 配置SSH免key登陸 (必須配置)
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 0600 ~/.ssh/authorized_keys
然後用ssh連接主機,此時不需要密碼即可 ssh master
-
安裝jdk,hadoop
直接鏈接下載會很慢,我們直接在windows上下載好所需要的jdk,hadoop安裝包,然後通過共享文件夾傳到虛擬機。
關於共享文件夾如何設置百度一下即可。然後通過軟連接建立一下連接即可
安裝VMware Tools、與Windows共享文件夾、建立軟連接然後將jdk,hadoop壓縮包全部複製到/usr/local目錄下面cp ***** -r /usr/local ***是你的安裝包
- 分別解壓兩個壓縮包
sudo tar -zxvf hadoop-2.7.7.tar.gz
sudo tar -zxvf jdk1.8.0_20.tar.gz
- 配置java環境
sudo vim /etc/profile
在後面添加以下
export JAVA_HOME=/usr/local/jdk1.8.0_20
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意你自己jdk的目錄
然後 source /etc/profile
使環境生效
- 配置hadoop環境
修改配置文件,設置環境變量
vim ~/.bashrc
在結尾添加以下:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
注意自己hadoop的路徑
使得配置文件生效 source ~/.bashrc
- vim /etc/profile
結尾添加以下,注意自己的hadoop路徑
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
- 修改hadoop-env.sh
cd /usr/local/hadoop/etc/hadoop
sudo vim hadoop-env.sh
首先修改java_home路徑
然後在結尾添加以下:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
- 修改core-site.xml
在結尾添加以下:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>location to store temporary files</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
其中我們需要在hadoop目錄下新建一些文件夾。
tmp文件夾:/usr/local/hadoop/tmp
然後在tmp下面新建dfs
然後在dfs下面分別新建兩個文件夾 name data
注意各個目錄之間的結構是什麼。
- 修改hdfs-site.xml
<configuration>
//設置HDFS文件副本數
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>true</value>
</property>
//設置HDFS元數據文件存放路徑
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
//設置其他用戶執行操作是會提醒沒有權限的問題
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
- 修改mapred-site.xml
將/usr/local/hadoop/etc/hadoop/mapred-site.xml.template的後綴.template去掉。然後
vim /usr/local/hadoop/etc/hadoop/mapred-site.xml
在結尾添加以下:
<configuration>
<property>
<name>mapreduce.framework</name>
<value>yarn</value>
</property>
</configuration>
15. yarn-site.xml
在結尾添加以下:
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
</configuration>
16. 修改slaves文件
將localhost直接改成主機名(這裏爲master),然後再添加節點主機名:我這裏爲Slave1 Slave2
這裏截圖只截了一半,master後面還有Slave1 Slave2
這裏必須要三個都寫,不然後面克隆的時候另外的兩臺節點主機還要回來重新配置slave文件。
三、克隆master搭建完全分佈式
- 右鍵master–>管理–>克隆–>虛擬機中當前狀態–>創建完整的克隆
如下圖所示,克隆了兩臺分別爲Slave1 Slave2 - 重命名主機
啓動三臺虛擬主機,分別對兩臺節點主機命名爲Slave1 Slave2
sudo vim /etc/hostname
然後分別查看虛擬機的ip
ifconfig
我的ip分別爲
192.168.31.31
192.168.31.14
192.168.31.163
前三段必須要相同,不然無法搭建,只要在相同的環境即可。
然後分別在Xshell上連接三臺虛擬主機。這樣做的目的是防止直接在虛擬機上操作造成卡頓。
- 驗證三臺主機之間能否ping通
由於之前的master主機上我們已經配置了ssh免密登陸了,所以克隆出來的兩臺節點主機理論上也是可以的。
我們在master主機上
ssh Slave1
ssh Slave2
然後在一臺節點主機上的操作以此類推,如果三臺主機之間都可以相互連接即可。
由於電腦太卡,就不在這裏截圖了。
四、將mater的java hadoop環境變量複製到節點主機上
- 格式化master主機hadoop環境
/usr/local/hadoop/bin/hdfs namenode -format
注意:只能格式化一次,再次格式化的時候需要將tmp文件夾恢復到初始狀態。
- 克隆環境
sudo scp -r /usr/local mjx@Slave1:/usr/local/jdk1.8
sudo scp -r /usr/local mjx@Slave2:/usr/local/jdk1.8
sudo scp -r /usr/local mjx@Slave1:/usr/local/hadoop
sudo scp -r /usr/local mjx@Slave2:/usr/local/jdk1.8
其中的參數說明:
/usr/local 是節點主機上jdk 和 hadoop的安裝目錄,/usr/local/jdk1.8是master主機的jdk1.8目錄
/usr/local/hadoop是master主機的hadoop目錄。
mjx是用戶名,三臺主機的用戶名都是mjx。
-
進入到master 啓動hadoop集羣
只需要在master中啓動即可。
然後分別查看三臺虛擬機的啓動狀態。
可以看到master和兩臺節點主機都正常啓動。- 瀏覽器可視化管理Hadoop集羣
到此完畢!
- 瀏覽器可視化管理Hadoop集羣