Hadoop3.1.3搭建涉及的软件:
https://pan.quark.cn/s/6b6427bbdf62#/list/share
一、VMWare软件中安装CentOS7
在vmware软件中安装CentOS7,安装完成后启动虚拟机。(步骤参见CentOS7安装教程)
二、Linux环境搭建
1、配置虚拟机网络
(1)设置VMware虚拟机的网络方式为NAT(网络地址转换)
(2)修改主机IP地址的操作步骤如下:
① 启动虚拟机,登录root账户
② 切换到/etc/sysconfig/network-scripts/目录下,命令如下所示:
cd /etc/sysconfig/network-scripts/
(可以通过ls命令查询该目录下有哪些目录及文件)
③ 编辑该目录下的ifcfg-ens33文件,命令如下所示:
vi ifcfg-ens33
按下键盘上的字母i,即可开始修改ifcfg-ens33中的内容,其中红色斜体字为需要修改内容
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
*BOOTPROTO=static #dhcp为动态ip地址,需要修改为static,即静态ip *
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
DEVICE=ens33
NAME=ens33
*ONBOOT=yes *#设置开机时启动网卡
#添加网络配置信息,包括静态IP地址参数IPADDR、网关参数GATEWAY、
子网掩码参数NETMASK、DNS配置参数DNS1、DNS2
*IPADDR=192.168.133.100 *#静态ip地址,此处第三位值需要和前面虚拟网络编辑器下主机保持一致(本主机第三位是133)
*GATEWAY=192.168.133.2 *#网关ip,此处第三位数值需要和前面虚拟网络编辑器下主机保持一致(本主机第三位是133)
*NETMASK=255.255.255.0 *#子网掩码,NETMASK=255.255.255.0,也可以写成PREFIX=24
*DNS1=8.8.8.8 *#国际通用DNS
*DNS2=114.114.114.114 *#国内通用DNS
④网卡信息修改完成后,保存并退出vi编辑器(先按下Esc键,再输入:wq),接着需要重新启动网络服务,使修改的内容生效,命令如下所示:
systemctl restart network
⑤网卡重启完成后,可以查看网络配置信息,命令如下所示:
ip addr
⑥ping一下外网,例如www.baidu.com,保证网络畅通(以上述IP地址为例,ping
若重启网络失败,显示如下报错信息:
需要关闭NetworkManager服务,并设置该服务不再启动,命令为:
systemctl stopNetworkManager
systemctldisable NetworkManager
然后再次重启网络: systemctlrestart network
2、修改主机名
(1) 编辑/etc/hostname文件,永久保存主机名
(2) 删除原有内容,添加master(将主机名修改为master)
添加完成后,保存并退出hostname文件
(3) 使用reboot命令重启使修改内容生效
启动后重新登录,可以看到主机名已修改成功
3、配置主机名和IP之间的对应关系
(1) 编辑/etc/hosts文件,将IP地址与主机名一一对应
(2) IP地址与主机名的映射输入格式为:IP地址 主机名(其中IP地址为前面设置的静态IP地址),不要删除原有内容,切换到新行,直接新增
4、关闭虚拟机防火墙
(1) 查看防火墙状态(systemctl statusfirewalld),默认防火墙是开启状态的
(2) 关闭防火墙(systemctlstop firewalld),然后设置防火墙开机不启动(systemctldisable firewalld)
5、MobaXterm进行远程连接(使用xshell、putty等工具也可以)
(主机ip需要自己主机设置的保持一致,用户名输入root)
出现如下状态说明登录成功,后续的操作就可以在MobaXterm中继续
三、安装配置JDK
(1)在/opt/下新建两个目录software[存放安装包]、install[存放解压后的软件],命令为:
mkdir /opt/install
mkdir /opt/software
(2)上传JDK安装包到master主机
先在路径框中输入/opt/software,敲击回车键,定位到software目录后,点击上方绿色的上传按钮,即可将本地电脑的安装包上传至此目录下(hadoop安装包可以一起上传过去)
此时左下角会出现上传进度,上传完成后在software目录下可看到上传内容
(3)安装JDK到/opt/install/目录下(以下均使用绝对路径,可以自行选择使用相对路径):
jdk安装命令为:tar -zxvf /opt/software/jdk-8u341-linux-x64.tar.gz -C /opt/install/
(4)将安装后的目录简短重命名为jdk,方便后续配置环境变量
mv /opt/install/jdk1.8.0_341/ jdk
(5)配置jdk环境变量
①打开环境配置文档:vi /etc/profile
②在文件末尾添加以下指令,添加完成后保存退出编辑模式
export JAVA_HOME=/opt/install/jdk
export PATH=$PATH:$JAVA_HOME/bin
③使用source命令使配置的环境生效,命令为: source /etc/profile
④验证环境变量是否配置成功
验证java命令为: java -version
四、克隆虚拟机
1、关闭master主机,依次克隆出两台新的虚拟机
(指定不同的虚拟机名称和存储路径)
2、更改克隆后两台虚拟机的mac地址(两台虚拟机都需要操作)
3、修改两台新虚拟机的主机名、ip地址
(修改方法参照第一台虚拟机)[设置克隆后的第二、三台主机ip地址时将xx换成自己虚拟机查到的]
主机名
IP地址
第一台主机
master
192.168.xx.100
第二台主机
slave1
192.168.xx.101
第三台主机
slave2
192.168.xx.102
以第二台主机为例:
修改ip地址:
修改主机名
修改完毕后输入reboot,重启虚拟机,即可生效刚刚修改的内容
第三台虚拟机依样操作即可
4、设置三台虚拟机的映射关系
①在master主机下输入命令 vi /etc/hosts进入映射文件,新增另外两台主机和ip的映射关系
②通过scp远程命令,将更改后的hosts文件复制给slave1、slave2,指令分别为:
scp /etc/hosts slave1:/etc/hosts
scp /etc/hosts slave2:/etc/hosts
(由于尚未实现免密登录,所以在远程传输时需要输入传输主机的密码,后面配置过免密后就不再需要输密码了)
③ping另外两台主机名
④接着在第二第三台主机上做同样的测试,如果都可以ping通,说明网络是互通的
五、配置免密登录
1、输入命令ssh-keygen生成密钥对
(注意:三台主机均需执行, SSH密钥默认保留在~/.ssh目录中)
从一个节点到另外一个节点,也就是使用ssh命令时需要密码,配置免密后就可以实现无密码登录
2、拷贝公钥信息ssh-copy-id
分别在master、slave1和slave2三个节点上执行以下三条命令(该命令是将自身的公钥信息复制并追加到全部主机的授权文件authorized_keys中)
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
3、主机间相互登录做验证
使用ssh指令尝试三台主机相互登录,能相互间免密登录说明配置成功(exit可以退出当前登录状态),例如:
六、Hadoop完全分布式安装
Hadoop平台搭建3种模式:单机模式、伪分布式模式和全分布式集群模式
单机(本地)模式:这种模式在一台单机上运行,没有分布式文件系统,而是直接读写本地操作系统的文件系统。在单机模式中不会存在守护进程,所有东西都运行在一个JVM上。这里同样没有DFS,使用的是本地文件系统。单机模式适用于开发过程中运行MapReduce程序,这也是最少使用的一个模式。
伪分布式模式:也是在一台单机上运行,但用不同的Java进程模仿分布式运行中的各类结点,伪分布式适用于开发和测试环境,在这个模式中,所有守护进程都在同一台机器上运行。
全分布式模式:全分布模式通常被用于生产环境,使用N台主机组成一个Hadoop集群,Hadoop守护进程运行在每台主机之上。在分布式环境下,主节点和从节点会分开。 Hadoop 的完全分布式安装至少由三个及以上的实体机或者虚拟机组成的集群。一个Hadoop集群环境中,进程NameNode、SecondaryName通常分配在不同的节点上。 各节点及守护进程安排如下:
IP地址
主机名称
HDFS
YARN
192.168.xxx.100
master(主节点)
NameNode
DataNode
ResourceManager
NodeManager
192.168.xxx.101
slave1(从节点)
SecondaryNameNode
DataNode
NodeManager
192.168.xxx.102
slave2(从节点)
DataNode
NodeManager
IP地址和主机名都跟随自己配置的机器设置,指定一台做主节点,两台做从节点
1、Hadoop环境配置
①安装Hadoop到/opt/install/ 目录下(以下均使用绝对路径,可以自行选择相对路径),命令为:
tar -zxvf/opt/software/hadoop-3.1.3.tar.gz -C /opt/install/
②将安装后的目录简短重命名为hadoop,命令为
mv /opt/install/hadoop-3.1.3/ hadoop
③配置hadoop的环境变量
打开环境配置文档:vi /etc/profile
在文件末尾添加以下指令,添加完成后保存并退出编辑模式
export HADOOP_HOME=/opt/install/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HDFS_NAMENODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export HDFS_DATANODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
④使用source命令使配置的环境生效,命令为:
source /etc/profile
⑤验证环境变量是否配置成功
验证hadoop命令为: hadoop version
2、Hadoop完全分布文件配置
(配置文件在hadoop安装目录下面的etc/hadoop中,全路径为:/opt/install/hadoop/etc/hadoop)
需要修改的核心配置文件包括:hadoop-env.sh、yarn-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、workers
①修改hadoop-env.sh 文件
在文件末尾添加Java环境安装路径,指令:
export JAVA_HOME=/opt/install/jdk
②修改 yarn-env.sh 文件
此文件是 YARN 框架运行环境配置,也需要在文件末尾添加Java环境安装路径,指令:
export JAVA_HOME=/opt/install/jdk
③修改 core-site.xml 文件
<configuration></configuration><!-- 设置namenode内部通信端口 hdfs://主机名:端口号 --> <property> <name>fs.defaultFS</name> <value>hdfs://master:9820</value> </property> <!-- 设置hadoop数据存储的临时文件夹 --> <property> <name>hadoop.tmp.dir</name> <value>/opt/install/hadoop/tmp</value> </property>
④修改hdfs-site.xml文件
<configuration></configuration><!--设置hdfs的副本数--> <property> <name>dfs.replication</name> <value>3</value> </property> <!--设置namenode文件存储路径--> <property> <name>dfs.name.dir</name> <value>/opt/install/hadoop/tmp/hdfs/name</value> </property> <!--设置datanode文件存储路径--> <property> <name>dfs.data.dir</name> <value>/opt/install/hadoop/tmp/hdfs/data</value> </property> <!-- namenode的web端访问地址:主机名:端⼝号 --> <property> <name>dfs.namenode.http-address</name> <value>master:9870</value> </property> <!-- secondarynamenode的web端访问地址:主机名:端⼝号--> <property> <name>dfs.namenode.secondary.http-address</name> <value>slave1:9868</value> </property>
⑤修改mapred-site.xml文件
<configuration></configuration><!--指定mapreduce程序运行在yarn上--> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <!--设置历史服务器内部通信端口--> <property> <name>mapreduce.jobhistory.address</name> <value>master:10020</value> </property> <!--设置历史服务器web端访问地址--> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>master:19888</value> </property>
⑥修改yarn-site.xml文件
<configuration><property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property>
</configuration><property> <name>yarn.resourcemanager.hostname</name> <value>master</value> </property> <!--配置resourceManager的web端地址--> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property>
⑦修改workers文件
(把需要启动datanode进程的节点列入)
删除原有的localhost,新增master、slave1、slave2
3、拷贝hadoop安装目录到另外两台机器(slave1,slave2)
scp -r /opt/install/hadoop/ slave1:/opt/install/
scp -r /opt/install/hadoop/ slave2:/opt/install/
4、拷贝环境变量配置文件到另外两台机器(slave1,slave2)
scp /etc/profile slave1:/etc/profile
scp /etc/profile slave2:/etc/profile
5、在每一台机器都执行环境变量生效命令:
source /etc/profile
七、Hadoop分布式集群启动
1、在master主机上格式化namenode节点
在 hadoop 的安装目录/opt/install/hadoop/bin下执行命令:
hdfs namenode -format
出现successfully formatted说明格式化成功
提示:格式化命令必须在NameNode所在的节点上执行(本次操作将namenode配置在了master主机下,所以在master上进行格式化)
- 格式化 NameNode只在集群第一次启动前做一次即可。
- 如果格式化失败,原因大多是配置文件写错了,需要检查并修改配置文件,请注意,修改结束后需再次进行格式化,格式化之前,一定要先停止上次启动的所有进程,然后再删除tmp和logs两个目录中的数据
[删除logs指令:rm -rf /opt/install/hadoop/logs]
[删除tmp指令:rm-rf /opt/install/hadoop/tmp]
2、启动集群
在master主机的任意目录下操作即可
①启动namenode和datanode
一次性启动namenode和datanode节点,命令为:start-dfs.sh
也可以单独启动namenode节点和datanode节点:
启动namenode节点:hadoop-daemon.sh start namenode
启动datanode节点: hadoop-daemon.sh start datanode
②启动resourcemanager和nodemanager
一次性启动resourcemanager和nodemanager节点,命令为:start-yarn.sh
也可以单独启动resourcemanager节点和nodemanager节点,
启动resourcemanager节点:yarn-daemon.sh start resourcemanager
启动nodemanager节点: yarn-daemon.sh start nodemanager
【可选】一次性启动namenode、datanode、resourcemanager和nodemanager,命令为:start-all.sh
3、停止集群
stop-dfs.sh、stop-yarn.sh【或者只使用stop-all.sh】
4、使用jps查看节点
各主机出现以下对应节点,说明启动成功
master主机:namenode、datanode、resourcemanager、nodemanager
slave1主机:secondarynamenode、datanode、nodemanager
slave2主机:datanode、nodemanager
启动/停止历史服务器(启动后可以看到历史服务进程)
在master主机中输入启动指令:
mapred --daemon starthistoryserver
(停止使用mapred --daemon stop historyserver)
再查看节点,可以看到多出JobHistoryServer进程
5、访问对应的Web界面【通过[主机名:端口]访问】
查看namenode的web端: http://master:9870
查看yarn的web端: http://master:8088
查看历史服务的web端:http://master:19888(该进程未启动的话就不用查看了)
只能通过[IP:端口]访问web 端,无法通过[主机名:端口]访问
原因:本地电脑没有配置ip和主机名的映射关系,所以本地电脑无法识别主机名
解决方法:本地电脑找到hosts文件,添加映射关系
①输入路径:C:\Windows\System32\drivers\etc
②打开hosts文件(使用记事本方式)
③将在虚拟机中配置过的三台主机的ip地址和主机名映射关系在hosts文件中再写一遍,然后保存即可
版权归原作者 一十一_ 所有, 如有侵权,请联系我们删除。