一、環境準備
1、準備3臺虛擬機
- Hadoop131:192.168.56.131
- Hadoop132:192.168.56.132
- Hadoop133:192.168.56.133
本例系統版本 CentOS-7.8,已安裝jdk1.8
2、hosts配置,關閉防火墻
vi /etc/hosts
添加如下內容,然后保存
192.168.56.131 hadoop131
192.168.56.132 hadoop132
192.168.56.133 hadoop133
關閉防火墻
systemctl stop firewalld
3、配置證書登錄(免秘鑰)
三臺服務器都要操作一遍
ssh-keygen -t rsa -N '' -f /root/.ssh/id_rsa -q
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop131
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop132
ssh-copy-id -i /root/.ssh/id_rsa.pub root@hadoop133
4、創建 Xsync
分發指令
rsync
是Linux系統下的一個非常實用的數據備份和同步工具,它可以在本地或遠程系統之間進行文件或目錄的同步和備份。這個指令的基本原理是通過對比源文件和目標文件的差異,只復制差異部分,從而提高數據傳輸的效率。
由于 xsync
是對 rsync 的再封裝,因此需要先安裝 rsync
yum install -y rsync
三臺服務器都要安裝
rsync
本節內容參考:xsync 集群同步工具
在 /usr/bin 下新建 xsync.sh
vi /usr/bin/xsync.sh
將以下內容粘貼到 xsync.sh
腳本中
#!/bin/bash#1. 判斷參數個數
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍歷集群所有機器
for host in hadoop131 hadoop132 hadoop133
doecho ==================== $host ====================#3. 遍歷所有目錄,挨個發送for file in $@do#4. 判斷文件是否存在if [ -e $file ]then#5. 獲取父目錄pdir=$(cd -P $(dirname $file); pwd)#6. 獲取當前文件的名稱fname=$(basename $file)ssh $host "mkdir -p $pdir"rsync -av $pdir/$fname $host:$pdirelseecho $file does not exists!fidone
done
修改文件權限
chmod 777 /usr/bin/xsync.sh
5、創建批量執行腳本 xcall.sh
創建文件xcall.sh
vi /usr/bin/xcall.sh
# 修改文件權限
chmod 777 /usr/bin/xcall.sh
復制如下內容
#!/bin/bash#1. 判斷參數個數
if [ $# -lt 1 ]
thenecho Not Enough Arguement!exit;
fi#2. 遍歷集群所有機器
for host in hadoop131 hadoop132 hadoop133
doecho ------ $host ------ssh $host "$*"
done
二、安裝配置Hadoop
1、下載Hadoop并安裝
# 下載Hadoop軟件包
wget --no-check-certificate https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz# 解壓安裝
tar -xzvf hadoop-3.3.6.tar.gz
#創建Hdoop程序&數據目錄;
mkdir -p /data/
#將Hadoop程序部署至/data/hadoop目錄下;
mv hadoop-3.3.6/ /data/hadoop/
#查看Hadoop是否部署成功;
ls -l /data/hadoop/
2、配置Hadoop環境變量
配置環境變量,/etc/profile.d/hadoop_env.sh
export HADOOP_HOME=/data/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
使用source讓新增環境生效
source /etc/profile
配置完成后分發到其他服務器
xsync.sh /etc/profile.d/hadoop_env.sh
3、Hadoop集群配置
1)配置 core-site.xml
vi /data/hadoop/etc/hadoop/core-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- 指定NameNode的地址 --><property><name>fs.defaultFS</name><value>hdfs://hadoop131:9000</value></property><!-- 指定Hadoop數據的存儲目錄 --><property><name>hadoop.tmp.dir</name><!-- /tmp/hadoop-${user.name} --><value>/data/hadoop/data</value><description>A base for other temporary directories.</description></property><!-- 配置HDFS網頁登錄使用的靜態用戶為hadoopuser --><property><name>hadoop.http.staticuser.user</name><value>hadoopuser</value></property><!-- 配置該hadoopuser(superuser)允許通過代理訪問的主機節點 --><property><name>hadoop.proxyuser.hadoopuser.hosts</name><value>*</value></property><!--配置該hadoopuser(superuser)允許通過代理用戶所屬組--><property><name>hadoop.proxyuser.hadoopuser.groups</name><value>*</value></property><!--配置該hadoopuser(superuser)允許通過代理的用戶 --><property><name>hadoop.proxyuser.hadoopuser.users</name><value>*</value></property>
</configuration>
2)配置 hdfs-site.xml
vi /data/hadoop/etc/hadoop/hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- nn web端訪問地址--><property><name>dfs.namenode.http-address</name><value>hadoop131:9870</value></property><!-- 2nn web端訪問地址--><property><name>dfs.namenode.secondary.http-address</name><value>hadoop133:9868</value></property><!--測試環境指定HDFS副本的數量1 --><property><name>dfs.replication</name><value>1</value></property>
</configuration>
3)配置 mapred-site.xml
vi /data/hadoop/etc/hadoop/mapred-site.xml
使用yarn,如下配置
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
4)配置 yarn-site.xml
vi /data/hadoop/etc/hadoop/yarn-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration><!-- 設置ResourceManager的主機名 --><property><name>yarn.resourcemanager.hostname</name> <value>hadoop131</value> </property> <!-- 設置NodeManager的輔助服務,通常為mapreduce_shuffle以支持MapReduce作業 --><property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property><!-- 設置每個NodeManager可用的內存量(以MB為單位) --><property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> </property><!--分別設置容器請求的最小和最大內存限制--><property> <name>yarn.scheduler.minimum-allocation-mb</name> <value>1024</value> </property> <property> <name>yarn.scheduler.maximum-allocation-mb</name> <value>8192</value> </property><!--分別設置容器請求的最小和最大虛擬CPU核心數--><property><name>yarn.scheduler.minimum-allocation-vcores</name><value>1</value> </property> <property> <name>yarn.scheduler.maximum-allocation-vcores</name><value>4</value> </property>
</configuration>
4)修改 workers
vi /data/hadoop/etc/hadoop/workers
hadoop131
hadoop132
hadoop133
5)修改Hadoop默認啟動、關閉腳本,添加root執行權限
cd /data/hadoop/sbin/
for i in `ls start*.sh stop*.sh`;do sed -i "1a\HDFS_DATANODE_USER=root\nHDFS_DATANODE_SECURE_USER=root\nHDFS_NAMENODE_USER=root\nHDFS_SECONDARYNAMENODE_USER=root\nYARN_RESOURCEMANAGER_USER=root\n\YARN_NODEMANAGER_USER=root" $i ;done
6)將hadoop131部署完成的hadoop所有文件、目錄同步至其他兩個節點
xsync.sh /data/hadoop/
4、啟動hadoop
在啟動hadoop之前,我們需要做一步非常關鍵的步驟,需要在Namenode上執行初始化命令,初始化name目錄和數據目錄。
#初始化集群;
/data/hadoop/bin/hdfs namenode -format
#停止所有服務;
/data/hadoop/sbin/stop-all.sh
#kill方式停止服務;
ps -ef|grep hadoop|grep java |grep -v grep |awk '{print $2}'|xargs kill -9
sleep 2
#啟動所有服務;
/data/hadoop/sbin/start-all.sh
5、Hadoop集群驗證
使用上面的xcall.sh命令查看進程
xcall.sh jps
結果如下
------ hadoop131 jps ------
7640 ResourceManager
7864 NodeManager
7260 DataNode
8877 Jps
7086 NameNode
------ hadoop132 jps ------
4549 DataNode
5479 Jps
4654 NodeManager
------ hadoop133 jps ------
4896 NodeManager
5733 Jps
4715 DataNode
4813 SecondaryNameNode
也可以分別查看3個節點Hadoop服務進程和端口信息
#查看服務進程;
ps -ef|grep -aiE hadoop
#查看服務監聽端口;
netstat -ntpl
#執行JPS命令查看JAVA進程;
jps
#查看Hadoop日志內容;
tail -fn 100 /data/hadoop/logs/*.log
6、Hadoop WEB測試
根據如上Hadoop配置,Hadoop大數據平臺部署成功,訪問hadoop131 9870端口 http://192.168.56.131:9870/,可以看見如下頁面:
訪問Hadoop集群WEB地址:http://192.168.56.131:8088/,可以看見如下頁面:
至此,Hadoop集群環境部署完成!
參考
- https://hadoop.apache.org/
- https://blog.csdn.net/xiaolong1155/article/details/131127712