Hadoop完全分布模式环境搭建
Hadoop的环境搭建一共3种模式,单机模式,伪分布模式,完全分布模式,本次实验搭建采用完全分布模式+虚拟机对Hadoop基本环境进行搭建。
本次环境搭建的配置如下:
Hadoop版本 | Hadoop 2.10 | hadoop-2.10.0.tar.gz | ||||
Java 版本 | JDK 1.8 | jdk-8u211-linux-x64.tar.gz | ||||
Linux 版本 | CentOS7-1908 | CentOS-7-x86_64-DVD-1908.iso | ||||
虚拟机配置VMware15 本次实验一共3台虚拟机,采用NAT模式链接 | |||||
虚拟机角色名 | 主机名 | IP | CPU | 内存 | 硬盘 |
Master | hadoop1 | 192.168.100.101 | 2 | 2G | 20G |
Slave | hadoop2 | 192.168.100.102 | 2 | 2G | 20G |
Slave | hadoop3 | 192.168.100.103 | 2 | 2G | 20G |
一、虚拟机创建
(1)虚拟网络配置
1、虚拟网络配置,修改VMnet8(NAT模式)子网为所需要的IP网段,这里修改为192.168.100.0
2、进行NAT设置,将网关设置为192.168.100.2
3、修改DHCP设置,将DHCP的可分配的IP池范围进行修改,也可以不使用DHCP服务
4、在Windows系统中配置网络适配器,在“控制面板\网络和 Internet\网络连接”中找到VMnet8,在其属性中进行如下修改:
(2)虚拟机创建
在虚拟机自定义硬件中
- 内存为2G
- 处理器为数量1,内核2
- 网络适配器,选择自定义VMnet8(NAT模式)
- 移除声卡,打印机等没必要的硬件配置
(3)安装CentOS7
1、在开始安装前,按TAB键,在quite前键入
net.ifnames=0 biosdevname=0
修改网络适配器名称为eth0
此步也可以跳过,后续需要先查看到网络适配器名称
2、为了快速搭建环境,CentOS的硬盘采用自动分配即可
语言选择为中文
开始安装并等待安装完成
(4)配置网络
1、配置IP地址
vi /etc/sysconfig/network-scripts/ifcfg-eth0
如果之前跳过了网络适配器名修改,需要先到相应目录下查找
根据下图进行修改:
其实前面安装的时候已经修改了一些,这里只需要修改BOOTPROTO=static即可
2、重启网络服务
service network restart
3、测试ping www.baidu.com
证明网络没有问题
4、如果ping不通
请查看windows的服务中的VMware NAT Service有没有运行
5.修改hosts
vi /etc/hosts
(5)安装JDK
这里先进行hadoop1的JDK安装,然后再进行克隆,不然直接克隆三台机器需要分别安装
1.将JDK安装包通过XFtp或者其他的文件传输器上传到虚拟机中
这里将jdk-8u211-linux-x64.tar.gz传到了/opt/目录下,其他目录也可以传输,看个人
2.解压压缩包
命令:tar -zxvf jdk-8u211-linux-x64.tar.gz
3.重命名java
命令:mv jdk-8u211 java
4.配置系统变量
命令:vi /etc/profile
在最后插入如图
5.重新加载profile
命令:source /etc/profile
6.验证安装
命令:java -version
(6)克隆主机
这里通过克隆的方式创建出hadoop2和hadoop3两台虚拟主机
1、拍摄当前状态的快照
可以保留当前主机的一些状态和配置的副本
在VMware中找到hadoop1的主机,右键快照,创建一个快照
2、克隆主机
右键hadoop1的主机——管理——克隆——现有快照——完整克隆
接下来就是一些存储位置和硬件的配置,不做赘述。克隆完成后
(7) 修改克隆主机名和IP地址
这里的操作,两台克隆主机均执行
1.修改主机名
命令:hostnamectl set-hostname 新的主机名
2.查看修改后主机名是否生效
命令:hostname
3.修改IP地址
命令:vi /etc/sysconfig/network-scripts/ifcfg-eth0
把地址改成相应的地址即可,然后重新启动网络服务
2.验证
当两台虚拟主机均修改完成后,进行网络互通测试
主要命令:ping 主机名
二、SSH免密登录
Hadoop在节点之间进行通信通过是SSH协议,但每一次进行SSH协议通信过程,有两种验证模式,一是密码验证,二是选择免密验证,为了Hadoop运行期间没有密码验证,需要进行配置免密验证,SSH免密验证的原理在于非对称加密中的公钥与私钥的关系,具体的原理此处不做赘述,实际操作就是将主机的公钥保存到另一台主机上即可。
这里以Hadoop1向hadoop2发送公钥,则hadoop1可以对hadoop2进行免密登录为例,后续三台机器操作重复,确保互相能够免密登录即可。
(1)生成密钥对
命令: ssh-keygen -t rsa
命令: cd /root/.ssh
打开 .ssh目录并查看刚生成的密钥对
Id_rsa 表示私钥
Id_rsa 表示公钥
起初文件夹内是没有authorized_keys文件的,这里是已经做过了所以有显示
(2)发送公钥到hadoop2
命令:scp id_rsa.pub hadoop2://opt/hadoop1_pub_key
这里通过SCP 将 id_rsa.pub 公钥文件传输到hadoop2的/opt目录下,并命名为hadoop1_pub_key
等待传输完成即可,期间需要进行一个ssh密码登录
进入Hadoop2进行查看
(3)在hadoop2中将刚传输的公钥进行注册
命令:cat Hadoop1_id_rsa /root/.ssh/authorized_keys
将上面的hadoop1的公钥内容追加到authorize_keys文件中
命令:cat /root/.ssh/authorized_keys
查看是否添加成功
这里显示添加成功了
(4)在Hadoop1中对hadoop2进行免密ssh登录
命令:ssh hadoop2
成功登录,接下来就是三台机器各自生成公钥发送给其他主机,然后其他主机再进行注册公钥即可。
命令:exit
登出ssh链接
三、Hadoop安装及配置
这里的Hadoop安装以hadoop1主机为例,安装配置完成后,直接通过SCP将hadoop文件进行分发传输到其他主机即可。
本文将hadoop安在了/opt目录下,其他目录也可以,看个人
(1)解压Hadoop压缩包并重命名
命令:tar -zxvf hadoop的压缩包名
命令: mv 解压后的hadoop名称 新的hadoop名称
(2)配置环境变量并验证
命令:vi /etc/profile
添加如下内容:
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
命令:source /etc/profile
重新加载profile文件
命令:hadoop version
验证hadoop是否安装成功
(3)hadoop配置
1、进入到hadoop配置文件夹下查看要修改如下文件
命令:cd /opt/hadoop/etc/hadoop
依次进行标注的文件的修改:
Core-site.xml是配置Hadoop核心信息的配置文件
Hdfs-site.xml是配置HDFS文件系统的配置文件
Mapred-site.xml是配置MapReduce的配置文件,这里有一个.template文件,复制命名为mapred-site.xml 文件即可
Yarn-site.xml 是配置Yarn资源管理组件的配置文件
Slaves 是注册其他节点主机名的文件
这些文件统一都用 vi修改即可
1.Core-site.xml添加如下:
这里主要配置了哪台主机为namenode,程序主服务主机
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode节点主机名:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:临时文件的存储路径</value>
</property>
</configuration>
2.hdifs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:namenode目录存储路径 </value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:datanode目录存储路径</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>secondary-namenode主机名:9001</value>
</property>
</configuration>
3.mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4.yarn-site.xml
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode主机名</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
5.slaves
添加两个datanode节点主机名即可
6.配置Hadoop的jdk环境
命令:vi hadoop-env.sh
找到下图的内容,进行修改为本机jdk的目录
(4)传输修改后Hadoop文件到其他机器
注意先退出hadoop目录
命令:scp -r /opt/hadoop @主机名:/存放目录
这里是将hadoop文件夹直接发送到hadoop3主机/opt/hadoop中
等待发送成功后,添加hadoop的环境变量
命令vi /etc/profile,此处不再赘述
(5)启动并验证
在Hadoop1中执行
命令:hadoop namenode -format
格式化hdfs文件系统
命令:start-all.sh
启动hadoop
命令:jps
三台机器分布输入jps命令查看hadoop是否启动成功
在浏览器输入:http://主机名:50070