无题 PP要开心 2025-08-27 2022-12-31 Hadoop完全分布式搭建 一、VMware软件使用 1.1 配置VM软件网络 1.1.1 软件打开左上角编辑,虚拟网络编辑器;
1.1.2 点击更改设置;
1.1.3 首先修改VMnet1仅主机类型,子网IP改为10.10.Y.0(Y可以选择自己喜欢的数字),子网掩码255.255.255.0
1.1.4 修改VMnet8 NAT模式,子网IP改为172.128.X.0(X可以选择自己喜欢的数字),子网掩码255.255.255.0
1.1.5 点击确定应用更改。
1.2 创建VM虚拟机 1.2.1 打开VMware软件,点击创建新的虚拟机;
1.2.2 选择典型(推荐);
1.2.3 选择稍后安装操作系统后下一步;
1.2.4 客户端操作系统选择Linux,版本选择CentOS 7 64位
1.2.5 虚拟机名称node1,位置自定义
1.2.6 磁盘大小设置20GB,并选择将虚拟磁盘拆分成多个文件
1.2.7 自定义硬件,新CD/DVD (IDE)选择使用ISO映像文件,CentOS镜像文件
1.2.8 安装1.2.1—1.2.7步骤创建node2和node3虚拟机 二、安装Centos7系统 2.1 开启虚拟机 2.1.1 打开VMware软件主页面,选择左侧需要打开的虚拟机
2.1.2 开启虚拟机
2.2 安装配置 2.2.1 使用键盘方向键选择Install CentOS 7后回车
2.2.2 选择语言后,进入安装信息摘要后,下来打开安装位置,然后直接点完成
2.2.3 打开网卡 (1)选择网络和主机名
(2)点击右侧按钮打开网卡
2.2.4 开始安装
2.2.5 设置ROOT密码 (1)点击ROOT密码
(2)设置ROOT密码:注意密码太简单的话,设置完成后需要点击两次完成才可以
2.2.6 完成安装,重启虚拟机
三、基础配置 3.1 分别把node1、node2、node3的IP改为静态IP 3.1.1 查看当前虚拟机IP,以及网卡名称 1 [root@localhost ~]# ip a
3.1.2 使用cd命令进入网卡配置文件目录,并查看网卡配置文件名 1 2 [root@localhost ~]# cd /etc/sysconfig/network-scripts/ [root@localhost network-scripts]# ls
3.1.3 修改网卡配置 1 [root@localhost network-scripts]# vi ifcfg-ens33
配置文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="dhcp" #将dhcp修改为static DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="f4bcef7e-636c-4f02-865f-c88a5d470ea6" DEVICE="ens33" ONBOOT="yes" #若为NO需要修改为yes # 添加以下四条 IPADDR=172.129.7.6 #需要在VM软件虚拟网络编辑器中设置的IP段内 PREFIX=24 #子网掩码 GATEWAY=172.129.7.2 #需要在VM软件虚拟网络编辑器中设置的网关相同 DNS1=8.8.8.8 #添加DNS服务器
3.1.4 重启网络服务 1 [root@localhost network-scripts]# service network restart
3.2 修改主机名以及IP地址映射 3.2.1 修改主机名 (1)修改主机名命令 1 hostnamectl set-hostname 新主机名
(2)node1: 1 2 3 [root@localhost ~]# hostnamectl set-hostname node1 [root@localhost ~]# bash #刷新主机名信息 [root@node1 ~]# hostname #查看当前主机名
(3)node2: 1 2 3 [root@localhost ~]# hostnamectl set-hostname node2 [root@localhost ~]# bash #刷新主机名信息 [root@node2 ~]# hostname #查看当前主机名
(4)node3: 1 2 3 [root@localhost ~]# hostnamectl set-hostname node3 [root@localhost ~]# bash #刷新主机名信息 [root@node3 ~]# hostname #查看当前主机名
3.1.1 IP地址映射 (1)通过vi命令打开hosts文件 1 [root@node1 ~]# vi /etc/hosts
(2)添加node1、node2、node3主机IP地址映射信息
1 2 3 4 5 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 172.129.7.6 node1 172.129.7.7 node2 172.129.7.8 node3
(3)在node2和node3主机重复3.1.1(1)—3.1.1(2)步骤完成IP地址映射 3.3 防火墙服务、selinux服务永久关闭 3.3.1 永久关闭防火墙服务 (1)查看当前防火墙服务状态 1 [root@node1 ~]# systemctl status firewalld.service
(2)临时关闭防火墙服务 1 [root@node1 ~]# systemctl stop firewalld.service
(3)永久关闭防火墙服务 1 [root@node1 ~]# systemctl disable firewalld.service
(4)在node2和node3主机重复3.1.1(1)—3.1.1(2)步骤永久关闭防火墙服务 3.3.2 永久关闭selinux服务 (1)查看当前selinux服务模式 1 [root@node1 ~]# getenforce
(2)修改selinux服务配置文件 1 [root@node1 ~]# vi /etc/selinux/config #通过vi命令打开selinux服务配置文件并进行修改
selinux服务配置
1 2 3 4 5 6 7 8 9 10 11 # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing #将enforcing修改为disabled # SELINUXTYPE= can take one of three values: # targeted - Targeted processes are protected, # minimum - Modification of targeted policy. Only selected processes are protected. # mls - Multi Level Security protection. SELINUXTYPE=targeted
(3)重启虚拟机使配置文件生效
(4)重启后查看selinux服务模式 1 [root@node1 ~]# getenforce
(5)在node2和node3主机重复3.1.2(1)—3.1.2(4)步骤永久关闭selinux服务 3.3 SSH免密 3.3.1 生成密钥 1 [root@node1 ~]# ssh-keygen -t rsa #一直回车,直至出现下图红框内容
3.3.2 使用ssh-copy-id命令把复制到node1、node2、node3 1 2 3 4 [root@node1 ~]# ssh-copy-id node1 [root@node1 ~]# ssh-copy-id node2 [root@node1 ~]# ssh-copy-id node3 # 出现下图,输入yes 回车,然后输入目标主机密码回车
3.3.3 在node2和node3主机重复3.3.1—3.3.2步骤完成免密 四、安装JDK 4.1 创建安装目录 4.1.1 分别在三台主机创建export目录,并在export目录下分别创建servers、soft目录 1 2 3 4 5 [root@node1 ~]# cd / [root@node1 /]# mkdir /export [root@node1 /]# mkdir /export/{servers,soft} # servers 用于存放解压后的文件 # soft 用于存放软件包
4.2 上传JDK软件包 使用Xftp 7、SecureCRT、MobaXterm_Personal等软件上传,因人而异。
4.3 解压JDK软件包至servers目录 1 [root@node1 /]# tar -zxvf /export/soft/jdk-8u162-linux-x64.tar.gz -C /export/servers/
4.4 将解压后的JKD软件包名字修改为jdk,以便后续其他组件部署 1 [root@node1 /]# mv /export/servers/jdk1.8.0_162/ /export/servers/jdk
4.5 配置环境变量 4.5.1 使用vi命令打开环境变量文件 1 [root@node1 /]# vi /etc/profile
4.5.2 添加JDK的环境变量 (1)同时按住Shift键+G键,使光标跳至最后一行 (2)添加JAVA_HOME和PATH环境变量 1 2 export JAVA_HOME=/export/servers/jdk export PATH=:$JAVA_HOME/bin:$PATH
4.5.3 加载环境变量文件,使其生效 1 [root@node1 /]# source /etc/profile
4.5.4 查看java的版本信息 1 [root@node1 /]# java -version
4.6 将JDK和环境变量分发给node2和node3 1 2 3 4 [root@node1 /]# scp -r /export/servers/jdk/ node2:/export/servers/ [root@node1 /]# scp -r /export/servers/jdk/ node3:/export/servers/ [root@node1 /]# scp /etc/profile node2:/etc/ [root@node1 /]# scp /etc/profile node3:/etc/
4.7 在node2和node3加载环境变量文件,并查看java版本 1 2 [root@node2 /]# source /etc/profile [root@node2 /]# java -version
1 2 [root@node3 /]# source /etc/profile [root@node3 /]# java -version
五、安装Hadoop 5.1 上传Hadoop软件包 参考4.2
5.2 解压Hadoop软件包至servers目录 1 [root@node1 ~]# tar -zxvf /export/soft/hadoop-2.7.1.tar.gz -C /export/servers/
5.3 将解压后的Hadoop软件包名字修改为hadoop 1 [root@node1 ~]# mv /export/servers/hadoop-2.7.1/ /export/servers/hadoop
5.4 配置环境变量 5.4.1 使用vi命令打开环境变量文件 1 [root@node1 ~]# vi /etc/profile
5.4.2 添加Hadoop的环境变量 (1)同时按住Shift键+G键,使光标跳至最后一行 (2)添加HADOOP_HOME和PATH环境变量 1 2 export HADOOP_HOME=/export/servers/hadoopexport PATH=$PATH :$HADOOP_HOME /bin:$HADOOP_HOME /sbin
5.4.3 加载环境变量文件,使其生效 1 [root@node1 ~]# source /etc/profile
5.4.4 查看Hadoop的版本信息 1 [root@node1 ~]# hadoop version
5.5 配置Hadoop配置文件 5.5.1 配置hadoop-env.sh (1)使用vi命令打开hadoop-env.sh文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/hadoop-env.sh
(2)修改文件中export JAVA_HOME=配置 1 export JAVA_HOME=/export/servers/jdk
修改前:
修改后:
5.5.2 配置core-site.xml (1)使用vi命令打开core-site.xml文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/core-site.xml
(2)在 之间添加以下配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <property> <!--namenode的URL地址(必须写)--> <name>fs.defaultFS</name> <value>hdfs://node1:9000</value> </property> <property> <!--SequenceFiles中使用的读/写缓冲区的大小,单位为KB,131072KB默认为64M(该配置可选)--> <name>io.file.buffer.size</name> <value>131072</value> </property> <property> <!--hadoop临时文件路径(可选配置)--> <name>hadoop.tmp.dir</name> <value>/export/servers/hadoop/dfs/tmp</value> </property> <property> <name>dfs.journalnode.edits.dir</name> <value>/export/servers/hadoop/journalnode</value> </property>
5.5.3 配置hdfs-site.xml (1)使用vi命令打开hadoop-env.sh文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/hdfs-site.xml
(2)在 之间添加以下配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <property> <!--hadoop的副本数量,默认为3(必须写)--> <name>dfs.replication</name> <value>3</value> </property> <property> <!--在本地文件系统所在的NameNode的存储空间和持续化处理日志(必须写)--> <name>dfs.namenode.name.dir</name> <value>/export/servers/hadoop/dfs/name</value> </property> <property> <!--在本地文件系统所在的DataNode的存储空间和持续化处理日志(必须写)--> <name>dfs.datanode.data.dir</name> <value>/export/servers/hadoop/dfs/data</value> </property> <property> <!--设置namenode线程,处理datanode发出rpc请求数量(可选配置)--> <name>dfs.namenode.handler.count</name> <value>100</value> </property>
5.5.4 配置mapred-site.xml (1)复制mapred-site.xml.template并重命名为mapred-site.xml 1 [root@node1 ~]# cp /export/servers/hadoop/etc/hadoop/mapred-site.xml.template /export/servers/hadoop/etc/hadoop/mapred-site.xml
(2)使用vi命令打开mapred-site.xml文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/mapred-site.xml
(3)在 之间添加以下配置 1 2 3 4 5 6 7 8 9 10 11 12 <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>node1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>node1:19888</value> </property>
5.5.5 配置yarn-site.xml (1)使用vi命令打开yarn-site.xml文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/yarn-site.xml
(2)在 之间添加以下配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>node1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>node1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>node1:8031</value> </property> <property> <name>yarn.log-aggregation-enable</name> <value>true </value> </property> <!-- 提高内存虚拟化率 --> <property> <name>yarn.nodemanager.vmem-pmem-ratio</name> <value>3.0</value> </property>
5.5.6 配置slaves (1)使用vi命令打开slaves文件 1 [root@node1 ~]# vi /export/servers/hadoop/etc/hadoop/slaves
(2)删除localhost添加以下配置
5.6 将Hadoop文件和环境变量文件分发给slave1和slave2 1 2 3 4 [root@node1 ~]# scp -r /export/servers/hadoop/ node2:/export/servers/ [root@node1 ~]# scp -r /export/servers/hadoop/ node3:/export/servers/ [root@node1 ~]# scp /etc/profile node2:/etc/profile [root@node1 ~]# scp /etc/profile node3:/etc/profile
5.7 在node2和node3加载环境变量文件 1 2 3 [root@node2 ~]# source /etc/profile [root@node3 ~]# source /etc/profile
5.8 对namenode进行格式化(在node1) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 [root@node1 ~]# hdfs namenode -format 22/12/31 17:03:27 INFO namenode.NameNode: STARTUP_MSG: /************************************************************ STARTUP_MSG: Starting NameNode STARTUP_MSG: host = node1/172.129.7.6 STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.7.1 STARTUP_MSG: classpath = /export/servers/hadoop/etc/hadoop:(此次省略) STARTUP_MSG: build = https://git-wip-us.apache.org/repos/asf/hadoop.git -r 15ecc87ccf4a0228f35af08fc56de536e6ce657a; compiled by 'jenkins' on 2015-06-29T06:04Z STARTUP_MSG: java = 1.8.0_162 ************************************************************/ ...省略 22/12/31 17:03:28 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1869874649-172.129.7.6-1672477408700 22/12/31 17:03:28 INFO common.Storage: Storage directory /export/servers/hadoop/dfs/name has been successfully formatted. 22/12/31 17:03:28 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 22/12/31 17:03:28 INFO util.ExitUtil: Exiting with status 0 22/12/31 17:03:28 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at node1/172.129.7.6 ************************************************************/
5.9 启动hadoop集群,查看守护进程 5.9.1 启动集群 1 [root@node1 ~]# start-all.sh
5.9.2 jps查看进程 (1)node1
1 2 3 4 5 6 7 [root@node1 ~]# jps 17427 NameNode 18308 Jps 17637 DataNode 17787 SecondaryNameNode 17932 ResourceManager 18061 NodeManager
(2)node2
1 2 3 4 [root@node2 ~]# jps 17332 NodeManager 17429 Jps 17247 DataNode
(3)node3
1 2 3 4 [root@node3 ~]# jps 17193 DataNode 17278 NodeManager 17375 Jps