补充说明:我这里VMware的虚拟网络设置
VMware子网IP:192.168.10.0,
网关:192.168.10.2
1.1.2 网络配置 1.1.2.1 虚拟机ip配置进入CentOS7虚拟机中,使用root用户登录,密码:123456
进入后打开命令窗口
先配置网络命令如下(如果vim使用不了,请用vi)
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改内容如下几项
BOOTPROTO="static" ONBOOT="yes" IPADDR=192.168.10.100 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=1.1.1.1 DNS2=114.114.114.114
修改后保存,‘esc’退出编辑模式,‘shift’+’;‘ 输入‘:’,输入wq,进行保存
1.1.2.2 主机名称配置命令如下
vim /etc/hostname
修改为hadoop100(如果创建虚拟机是命名为hadoop100,即为默认)
1.1.2.3 主机名称映射命令如下
vim /etc/hosts
进入后在最后添加如下内容
192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104 192.168.10.105 hadoop105 192.168.10.106 hadoop106 192.168.10.107 hadoop107 192.168.10.108 hadoop108
然后重启虚拟机
1.1.2.4 windows环境下使用虚拟机名字作为登录
我为win11环境,都差不多,进入hosts文件
C:WindowsSystem32driversetchosts
在hosts添加
192.168.10.100 hadoop100 192.168.10.101 hadoop101 192.168.10.102 hadoop102 192.168.10.103 hadoop103 192.168.10.104 hadoop104 192.168.10.105 hadoop105 192.168.10.106 hadoop106 192.168.10.107 hadoop107 192.168.10.108 hadoop108
保存后,就可使用hadoop100登录。
1.1.3 虚拟机配置 1.1.3.1 安装epel-releaseyum install -y epel-release
注意:如果是最小版系统还需要装net-tools和vim工具
1.1.3.1.1安装net-toolyum install -y net-tools1.1.3.1.2安装vim
yum install -y vim1.1.3.2 关闭、防火墙
#查看防火墙状态 firewall-cmd --state #关闭防火墙 systemctl stop firewalld.service #禁用开启启动防火墙 systemctl disable firewalld.service1.1.3.3 创建一个lizi用户
useradd lizi passwd 123456
配置root权限,方便后期sudo执行root权限命令
vim /etc/sudoers
修改/etc/sudoers文件,在%wheel下面添加一行
lizi ALL=(ALL) NOPASSWD:ALL1.1.3.4 创建module和software文件夹在opt下
使用lizi用户登录
sudo mkdir module sudo mkdir software
执行如下命令
sudo chown lizi:lizi module/ software/
权限分配给lizi用户
drwxr-xr-x. 2 lizi lizi 6 Apr 17 04:25 module drwxr-xr-x. 2 lizi lizi 6 Apr 17 04:28 software1.1.3.5 卸载桌面版自带的JDK
#进入root用户 su root #执行卸载java命令 rpm -qa | grep -i java | xargs -nl rpm -e --nodeps #如果上面卸载命令不成功用下面的命令 #先查看 rpm -qa | grep -i java #得到如下结果 javapackages-tools-3.4.1-11.el7.noarch java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64 tzdata-java-2020a-1.el7.noarch java-1.7.0-openjdk-headless-1.7.0.261-2.6.22.2.el7_8.x86_64 java-1.8.0-openjdk-1.8.0.262.b10-1.el7.x86_64 python-javapackages-3.4.1-11.el7.noarch java-1.7.0-openjdk-1.7.0.261-2.6.22.2.el7_8.x86_64 #先执行 yum remove *openjdk* #再次查看 rpm -qa | grep -i java #还剩三个 javapackages-tools-3.4.1-11.el7.noarch tzdata-java-2020a-1.el7.noarch python-javapackages-3.4.1-11.el7.noarch #分别用命令执行删除卸载 rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarch rpm -e --nodeps javapackages-tools-3.4.1-11.el7.noarch rpm -e --nodeps tzdata-java-2020a-1.el7.noarch #请按照自己的版本改变版本号1.1.3.6 禁用selinux
#修改 vim /etc/selinux/config #找到 SELINUX=enforcing #改为 SELINUX=disabled1.1.3.7 重启虚拟机
reboot
到这里模板机就配置的差不多了
1.1.4 克隆虚拟机可用步骤省略
克隆三台虚拟机分别命名:
hadoop102:IP:192.168.10.102
hadoop103:IP:192.168.10.103
hadoop104:IP:192.168.10.103
1.1.4.1 修改每一台虚拟机的IP,hostname,hosts以hadoop102为例,每一台机子都一样
vim /etc/sysconfig/network-scripts/ifcfg-ens33 vim /etc/hostname #因模板虚拟机hadoop100已经修改过这里就不用修改了 vim /etc/hosts
重复每一台虚拟机
然后重启每台虚拟机
1.2 安装java(jdk1.8)把jdk1.8上传到/opt/software里
1.2.1 解压jdktar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/1.2.2 进入jdk解压路径
cd /opt/module/ cd jdk1.8.0_321/1.2.3 配置JAVA_HOME环境 1.2.3.1 在profile.d下配置
#进入文件 cd /etc/profile.d/ #查看下面的文件 ll #创建自己的my_env.sh sudo vim my_env.sh #里面写入并保存退出 #JAVA_HOME export JAVA_HOME=/opt/module/jdk1.8.0_321 export PATH=$PATH:$JAVA_HOME/bin #重新加载profile source /etc/profile #检查路径是否成功 echo $JAVA_HOME1.3 安装hadoop
把hadoop上传到/opt/software里
1.3.1 解压hadooptar -zxvf hadoop-3.3.2.tar.gz -C /opt/module/1.3.2 进入hadoop解压路径
cd /opt/module/ cd hadoop-3.3.2/1.3.3 配置hadoop环境变量
#查询hadoop路径 pwd #复制路径 /opt/module/hadoop-3.3.2 #编辑我们自己的环境变量文件 sudo vim /etc/profile.d/my_env.sh #写入HADOOP_HOME环境变量 #HADOOP_HOME export HADOOP_HOME=/opt/module/hadoop-3.3.2 export PATH=$PATH:$HADOOP_HOME/bin export PATH=$PATH:$HADOOP_HOME/sbin #将hadoop各进程的用户设为root export HDFS_NAMENODE_USER=root export HDFS_DATANODE_USER=root export HDFS_SECONDARYNAMENODE_USER=root export YARN_RESOURCEMANAGER_USER=root export YARN_NODEMANAGER_USER=root #重新加载profile source /etc/profile #检查路径是否成功 echo $HADOOP_HOME1.3.4hadoop文件下各目录作用 1.3.4.1 bin目录(经常使用)
- hdfs:存储相关
- mapred:MapReduce计算相关
- yarn:资源调度
- hdfs-site.xml:hdfs相关配置
- mapred-site.xml:跟计算相关配置
- yarn-site.xml:跟资源相关配置
- core-site.xml:核心配置
- workers
- start-dfs.sh:启动整个集群
- start-yarn.sh:启动资源调度器
- mr-jobhistory-daemon.sh:启动历史服务器
- hadoop-daemon.sh:单节点启动
分析:
- 准备3台客户机(关闭防火墙,静态IP,主机名称)
- 安装JDK
- 配置环境变量
- 安装Hadoop
- 配置环境变量
- 配置集群
- 单点启动
- 配置ssh
- 群起并测试集群
1.1-1.2章节查看步骤
1.4.2 编写集群分发脚本xsync 1.4.2.1 scp(secure copy)安全拷贝从hadoop102拷贝到hadoop103和hadoop104
#拷贝jdk到hadoop103 scp -r jdk1.8.0_321/ lizi@hadoop103:/opt/module/ #拷贝hadoop到hadoop103(从hadoop102拉取数据到hadoop103) scp -r lizi@hadoop102:/opt/module/hadoop-3.3.2 ./ #拷贝jdk和hadoop到hadoop104(使用hadoop103,从hadoop102拷贝到hadoop104) scp -r lizi@hadoop102:/opt/module/* lizi@hadoop104:/opt/module/1.4.2.2 rsync远程同步工具(集群分发脚本) 1.4.2.2.1 rsync原始命令
rsync -av /opt/module lizi@hadoop103:/opt/1.4.2.2.2 使rsync脚本在任何路径都能使用,配置全局环境变量(这里直接放置在/home/lizi/bin)
#进入/home/lizi家目录 cd /home/lizi/ #创建bin目录 mkdir bin
创建名为xsync的脚本,内容如下
#!/bin/bash
#1.判断参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2.遍历集群所有机器
for host in hadoop102 hadoop103 hadoop104
do
echo ==================== $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:$pdir
else
echo $file does not exists!
fi
done
done
赋予权限
chmod 777 xsync1.4.3 SSH免密登录 1.4.3.1 配置hadoop102 ssh免密登录hadoop103和hadoop104
#进入/home/lizi家目录 cd ~ #进入.ssh目录 cd .ssh #执行命令,获取公钥和私钥,输入后三下回车即可 ssh-keygen -t rsa #拷贝公钥到hadoop103和hadoop104 ssh-copy-id hadoop103 ssh-copy-id hadoop104 ssh-copy-id hadoop1021.4.3.2 配置hadoop103 ssh免密登录hadoop102和hadoop104
#进入/home/lizi家目录 cd ~ #进入.ssh目录 cd .ssh #执行命令,获取公钥和私钥,输入后三下回车即可 ssh-keygen -t rsa #拷贝公钥到hadoop103和hadoop104 ssh-copy-id hadoop102 ssh-copy-id hadoop104 ssh-copy-id hadoop1031.4.3.3 配置hadoop104 ssh免密登录hadoop102和hadoop103
#进入/home/lizi家目录 cd ~ #进入.ssh目录 cd .ssh #执行命令,获取公钥和私钥,输入后三下回车即可 ssh-keygen -t rsa #拷贝公钥到hadoop103和hadoop104 ssh-copy-id hadoop102 ssh-copy-id hadoop103 ssh-copy-id hadoop1041.4.3.4 检测是否成功
每一台执行如下命令
ssh hadoop102 ssh hadoop103 ssh hadoop104 #退出登录 exit
同理,配置root用户
1.4.4 集群配置 1.4.4.1 配置hadoop-env.sh切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop
修改hadoop-env.sh
vim hadoop-env.sh
找到修改如下内容:
#修改前 # JAVA_HOME=/user/Java/testing hdfs dfs -ls #修改为(去掉#注解,并改成你自己的jdk路径) JAVA_HOME=/opt/module/jdk1.8.0_3211.4.4.2 配置core-site.xml
切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop vim core-site.xml
修改core-site.xml,在中添加
1.4.4.3 配置yarn-site.xmlhadoop.tmp.dir /opt/module/hadoop-3.3.2/tmp fs.defaultFS hdfs://hadoop102:9000
切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop vim yarn-site.xml
修改yarn-site.xml,在中添加
1.4.4.4 配置mapred-site.xmlyarn.resourcemanager.hostname hadoop102 yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.env-whitelist JAVA_HOME,HADOOP_COMMON_HOME,HADOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_HOME,PATH,LANG,TZ yarn.nodemanager.vmem-check-enabled false
切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop vim mapred-site.xml
修改mapred-site.xml,在中添加
1.4.4.5 配置hdfs-site.xmlmapreduce.framework.name yarn mapreduce.admin.user.env HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.2 yarn.app.mapreduce.an.env HADOOP_MAPRED_HOME=/opt/module/hadoop-3.3.2
切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop vim hdfs-site.xml
修改hdfs-site.xml,在中添加
1.4.4.6 修改workers文件dfs.namenode.http-address hadoop102:50070 dfs.replication 3 dfs.permissions.enabled false dfs.blocksize 134217728
切换到hadoop配置文件所在目录
cd /opt/module/hadoop-3.3.2/etc/hadoop vim workers
添加
hadoop102 hadoop103 hadoop1041.4.5 远程复制文件
#执行rxyncrsync远程同步工具脚本xsync(名字随意改) sudo /home/lizi/bin/xsync /opt/module/hadoop-3.3.2/etc/hadoop1.4.6 验证Hadoop 1.4.6.1格式化
hadoop namenode -format
没有报错格式化成功
如果在使用hadoop中出错,或者启动不起来,可能需要删除hadoop的data和logs文件夹,再重新格式化
#停止hadoop stop-all.sh #进入hadoop安装目录 cd /opt/module/hadoop-3.3.2 #删除data和logs文件夹 rm -rf data/ logs/ #格式化 hadoop namenode -format1.4.6.2 启动hadoop
在hadoop102上使用命令
#启动命令 start-all.sh #停止命令 stop-all.sh
启动hadoop所有进程
出现如下状态表示启动成功
Starting namenodes on [hadoop102] Last login: Mon Apr 18 08:11:35 PDT 2022 on pts/1 Starting datanodes Last login: Mon Apr 18 08:24:43 PDT 2022 on pts/1 localhost: Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts. hadoop103: WARNING: /opt/module/hadoop-3.3.2/logs does not exist. Creating. hadoop104: WARNING: /opt/module/hadoop-3.3.2/logs does not exist. Creating. Starting secondary namenodes [hadoop102] Last login: Mon Apr 18 08:24:46 PDT 2022 on pts/1 Starting resourcemanager Last login: Mon Apr 18 08:24:49 PDT 2022 on pts/1 Starting nodemanagers Last login: Mon Apr 18 08:24:53 PDT 2022 on pts/11.4.6.3 查看相关进程
使用命令
jps
[root@hadoop102 hadoop-3.3.2]# jps 5666 Jps 4499 DataNode 4757 SecondaryNameNode 5222 NodeManager 4268 NameNode 5022 ResourceManager
[root@hadoop103 hadoop-3.3.2]# jps 4050 Jps 3928 NodeManager 3806 DataNode
[root@hadoop104 hadoop-3.3.2]# jps 3792 DataNode 4035 Jps 3913 NodeManager1.4.6.4 使用hadoop命令查看HDFS上的命令
hadoop fs -ls /
还没有文件,暂时查询不到
1.4.6.5 浏览器访问在浏览器上输入http://hadoop102:50070/,即可查看hadoop运行相关信息



