1 虚拟机安装centos9 stream(略)
2 虚拟机配置静态ip(略)
参考:https://blog.csdn.net/m0_62943934/article/details/144168667
https://blog.csdn.net/weixin_45784337/article/details/130871716
3 前置软件包安装
-
epel-next-release安装
`vim /etc/yum.repos.d/epel.repo` 在文件中粘贴内容如下: `[epel]` `name=Extra Packages for Enterprise Linux $releasever - $basearch` `baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch` `enabled=1` `gpgcheck=1` `gpgkey=https://mirrors.aliyun.com/epel/RPM-GPG-KEY-EPEL-9` 接着执行以下命令 `dnf clean all` `dnf makecache` ` dnf install epel-release epel-next-release` -
安装其它基础软件包
`dnf install openssl-devel lrzsz chrony rsync net-tools psmisc nc libzstd` 启动chronyd `systemctl start chronyd` `systemctl enable chronyd` 查看状态 `chronyc sources -v` -
修改主机名,添加主机映射
[root@CentOS9-01 ~]# hostnamectl --static set-hostname hadoop2429 [root@CentOS9-01 ~]# vim /etc/hosts 添加内容,根据自己配置的虚拟机ip来,windows宿主机系统的hosts文件一样添加以下内容 192.168.242.9 hadoop2429 192.168.242.8 hadoop2428 192.168.242.7 hadoop2427 -
创建普通用户
useradd your_user_name(如我的juno) passwd your_user_name设置密码 reboot重启虚拟机 visudo在root的一行下,添加你创建的用户具有root权限

-
在/opt目录下创建用于存放安装包和安装软件的文件夹
mkdir /opt/module mkdir /opt/software 修改文件夹的所有者 chown juno:juno /opt/module /opt/software修改后ll查看两个文件夹的拥有者和所属组为juno

-
关闭防火墙
[root@CentOS9-01 ~]# systemctl stop firewalld [root@CentOS9-01 ~]# systemctl disable firewalld -
关闭虚拟机
-
给当前虚拟机拍摄快照
VM中右键虚拟机名称–>快照–>拍摄快照
然后快照–>快照管理,查看选中快照

-
克隆虚拟机


-
修改克隆虚拟机主机名和ip


开启克隆的虚拟机,我的叫hadoop2428, 2427 hostnamectl --static set-hostname your_hostname#根据自己之前的host来 cd /etc/NetworkManager/system-connections ls查看自己的网络连接名称,如:我的Profile 1.nmconnection vim Profile 1.nmconnection打开该文件,修改其中的ip地址和网关,根据自己host文件中自己设置的来,我的需要将address1的192.168.242.9/24分别改成192.168.242.8/24和192.168.242.7/24 修改完使生效:保存退出链接文件后执行nmcli con up 你的连接名称,如我的Profile 1 ping www.baidu.com,如果能ping通则配置成功
4 hadoop安装配置
-
安装hadoop和jdk
将hadoop和jdk的压缩包上传到之前创建的/opt/software文件夹(我用的xftp)

然后解压到/opt/module下
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /opt/module/ tar -zxvf hadoop-3.4.2.tar.gz -C /opt/module/
配置环境变量
/etc/profile.d/my_env.sh 添加如下内容(自己的hadoop和jdk实际安装路径)
:wq保存退出
java -version检查jdk是否安装成功
hadoop version
hadoop checknative

显示openssl组件false,但此时hadoop核心功能已安装,可使用,下面两个模块更加不紧要,如果涉及数据透明加密需要openssl,所以这里解决一下
-
降低openssl版本
上图EVP_CIPHER_CTX block_size说明版本不兼容,查阅资料显示hadoop3一般用openssl1.1.1以上就行,由于centos9系统默认为openssl3,所以从github下载编译源码安装
wget https://github.com/openssl/openssl/releases/download/OpenSSL_1_1_1w/openssl-1.1.1w.tar.gz#下载 tar -zxvf openssl-1.1.1w.tar.gz#解压 cd openssl-1.1.1w进入解压文件夹 ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w#配置
显示缺乏FindBin,解决:
sudo yum/dnf install perl perl-FindBin perl -e 'use FindBin; print "FindBin module is available\n"' ./config --prefix=/usr/local/openssl-1.1.1w --openssldir=/usr/local/openssl-1.1.1w#再次配置 make#编译 sudo make install#安装 echo 'export PATH=/usr/local/openssl-1.1.1w/bin:$PATH' >> ~/.bashrc echo 'export LD_LIBRARY_PATH=/usr/local/openssl-1.1.1w/lib:$LD_LIBRARY_PATH' >> ~/.bashrc#配置环境变量 source ~/.bashrc#使生效 /usr/local/openssl-1.1.1w/bin/openssl version#验证是否安成功再次执行hadoop checknative报错:无法加载libcrypto.so动态链接库

ls -l /usr/local/openssl-1.1.1w/lib/#查看实际安装路径,发现有libcrypto.so动态链接库
配置动态链接库路径
cd /etc/ld.so.conf.d#进入/etc/ld.so.conf.d文件夹 echo "/usr/local/openssl-1.1.1w/lib" | sudo tee /etc/ld.so.conf.d/openssl-1.1.1w.conf#写入配置文件 sudo ldconfig#更新动态链接库
-
配置免密登陆(用于集群间免密共享文件)
home目录下执行
ssh-keygen -t rsa#生成秘钥对3次直接回车,不要密码
cd .ssh ll#查看密钥对
公钥发给需共享文件的计算机
ssh-copy-id hadoop2429 ssh-copy-id hadoop2428 ssh-copy-id hadoop2427创建xsync脚本文件(基于前置安装的rsync,用于在多台服务器间同步文件或目录的便捷脚本)
sudo vim /usr/local/bin/xsync 在文件中输入如下内容: #!/bin/bash # 检查参数个数 if [ $# -lt 1 ] then echo "没有输入参数!" exit fi # 获取文件名称 fname=$(basename $1) echo "文件名:$fname" # 获取上级目录的绝对路径 pdir=$(cd -P $(dirname $1); pwd) echo "文件路径:$pdir" # 获取当前用户 user=$(whoami) # 循环同步到各主机(根据你的实际主机名修改) for host in hadoop2429 hadoop2428 hadoop2427 do echo "===================== $host =====================" rsync -rvl $pdir/$fname $user@$host:$pdir done:wq保存退出。
设置执行权限
sudo chmod +x /usr/local/bin/xsync使用xsync命令同步.ssh文件夹
xsync .ssh
至此,普通用户就可以免密共享文件到其它节点了
-
配置集群并快速分发到所有节点
通常,正常的集群需要6台机器,NN(Name Node)一台,2NN(secondary namenode)一台,RM(resource manager)一台,3台DN+NM(每台作为Data Node机器上必须有一个Node Manager),当前用于学习的环境由于资源有限,只有三台虚拟机,于是NN, 2NN, RM分别与一个DN+NM装在一台虚拟机上。
-
将hadoop和jdk以及环境变量配置文件共享到所有虚拟机上:
cd /opt/module#进入hadoop和jdk安装路径 xsync jdk1.8.0_202/ xsync hadoop-3.4.2 sudo xsync /etc/profile.d/my_env.sh -
验证



回车,会发现另外两台虚拟机也执行了一样的命令,然后在同样的位置执行hadoop version.都执行无误说明所有节点已安装好hadoop必要环境。
-
进入hadoop文件夹修改相关配置文件


core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://hadoop2429:8020</value> </property>#namenode的默认地址 <property> <name>hadoop.data.dir</name> <value>/opt/module/hadoop-3.4.2/data</value> </property>#数据存放路径 <property> <name>hadoop.proxyuser.juno.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.juno.hosts</name> <value>*</value> </property>#后俩都是为了兼容hive的配置 </configuration>hdfs-site.xml
<configuration> <property> <name>dfs.namenode.name.dir</name> <value>file://${hadoop.data.dir}/name</value> </property> <!--namenode在本地文件系统上永久存储命名空间和事务日志的路径--> <property> <name>dfs.datanode.data.dir</name> <value>file://${hadoop.data.dir}/data</value> </property> <!--datanode在本地文件系统的数据块存储路径,逗号分隔--> <property> <name>dfs.namenode.checkpoint.dir</name> <value>file://${hadoop.data.dir}/namesecondary</value> </property> <!--secondary namenode的数据存储路径--> <property> <name>dfs.client.datanode-restart.timeout</name> <value>30</value> </property> <!--hive兼容配置--> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoop2427:9368</value> </property> <!--2NN的地址--> </configuration>yarn-site.xml
<configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.hostname</name> <value>hadoop2428</value> </property> <property> <name>yarn.nodemanager.env-whitelist</name> <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ,HADOOP_MAPRED_HOME</value> </property> </configuration>mapred-site.xml
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>workers
hadoop2429 hadoop2428 hadoop2427 -
在集群上分发配置好的hadoop配置文件
xsync /opt/module/hadoop-3.4.2/etc/hadoop -
集群启动
hdfs namenode -format#格式化hdfs,第一次启动前必须 start-dfs.sh#启动集群,NN,2NN,DN启动
在Resource Manager所在机器(hadoop2428)上执行
start-yarn.sh#RM,NN启动
回到主节点(hadoop2429)群发命令:jps



发现如预期hadoop2429上有NN,DN,NM;hadoop2428上RM,DN,NM;hadoop2427上2NN,DN,NM
-
配置历史服务器(MapReduce的已完成作业历史信息)
更改配置文件前关闭集群 stop-dfs.sh(hadoop2429) stop-yarn.sh(hadoop2428) 打开配置文件 sudo vim mapred-site.xml 添加内容 <property> <name>mapreduce.jobhistory.address</name> <value>hadoop2429:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoop2429:19888</value> </property>xsync mapred-site.xml
-
配置日志聚集
sudo vim yarn-site.xml 添加内容 <property> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <name>yarn.log-aggregation.retain-seconds</name> <value>604800</value> </property> <property> <name>yarn.log.server.url</name> <value>http://hadoop2429:19888/jobhistory/logs</value> </property>xsync yarn-site.xml
-
测试
再次启动集群
start-dfs.sh启动历史服务器
mapred --daemon start historyserver查看Java进程
jps
浏览器中输入http://192.168.242.9:9870/ (NN)的ip:端口可以打开hdfs页

http://192.168.242.8:8088/ (RM)的ip:端口打开yarn页面,需要先启动yarn才能连上

-
配置时间同步服务
群发命令启用并关闭服务
sudo systemctl enable chronyd sudo systemctl stop chronyd systemctl status chronyd//查看
master节点(NN)
sudo vim /etc/chrony.conf
重启时间同步服务
sudo systemctl restart chronydslave节点(hadoop2428 hadoop2427)

重启时间同步服务
-

6274

被折叠的 条评论
为什么被折叠?



