虚拟机软件:VMware
centos7操作系统:CentOS-7-x86_64-DVD-1810
JDK 1.8
hadoop 3.2.0
虚拟机安装
参考文章centos7安装手册
JDK安装
hadoop3.2.0需要安装JDK1.8
下载路径:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
或者直接使用yum安装JDK
1、检查是否安装
yum list installed | grep java
2、检查发现已经有安装JDK,如果需要重新安装需要卸载
yum -y remove java-1.7.0-openjdk*
yum -y remove tzdata-java.noarch
3、查看yum列表中的JDK
yum search java | grep -i --color jdk
4、安装需要的jdk版本
yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel
5、查看JDK是否安装成功
java -version
6、配置环境变量
ls /usr/lib/jvm
JDK默认安装路径/usr/lib/jvm
7、在/etc/profile文件添加如下命令(profile 为全局环境信息,如果想在固定用户下设置jdk环境变量, 可以设置~/.bash_profile)
# set java environment
JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME CLASSPATH PATH
8、保存关闭profile文件,执行如下命令生效
source /etc/profile
9、查看JDK变量
echo $JAVA_HOME
echo $PATH
echo $CLASSPATH
配置免密码登录
更改主机名
hadoop安装,我们这里集群部署,需要准备三个虚拟机,分别为node1,node2,node3
为什么需要三个虚拟机?具体三个虚拟机分别是什么角色?详细参考本文最后部分。
三个虚拟机分别的IP地址如下
主机名 | IP地址 |
---|---|
node1 | 192.168.199.220 |
node2 | 192.168.199.221 |
node3 | 192.168.199.222 |
1、查看当前主机名
hostname
2、更改/etc/sysconfig下的network文件
vi /etc/sysconfig/network
3、配置主机名与IP映射关系
192.168.199.220 node1
192.168.199.221 node2
192.168.199.222 node3
vi /etc/hosts
4、重启虚拟机,查看主机名是否修改
克隆虚拟机
以上修改主机名为node1;node2\node3需要分别根据node1虚拟机克隆出来
1、设置node1虚拟机配置(考虑单个主机运行三个虚拟机环境,每个虚拟占用最低资源)
2、克隆node2虚拟机
3、启动node2虚拟机,更改主机名,更改步骤见上部分
4、查看node2的使用的网卡
ifconfig
5、更改IP地址(我的网卡名 ifcfg-ens33) 然后保存
vi /etc/sysconfig/network-scripts/ifcfg-ens33
6、重启服务器查看IP地址及hostname
7、node3配置与node2方式一致
配置SSH免密码登录
主要步骤主要是生成密钥和复制公钥
配置node1对node1的免密登录
1、登录node1 生成密钥,连续按回车
ssh-keygen
2、执行完会在当前目录生成.ssh文件夹,根据上图的提示可以看出 (id_rsa. 密钥) (id_rsa.pub 公钥)
3、把公钥复制到node1\node2\node3;注意node1同样需要设置
以下设置node1 对node1的免密登录设置
ssh-copy-id -i ./id_rsa.pub root@node1
上图输入指令后,按默认选择yes执行,输入目标node1的root密码
4、测试免密登录配置是否成功,如果未提示输入密码,则成功
ssh node1
5、查看node1 下.ssh文件夹,多两个文件
authorized_keys:存放远程免密登录的公钥,主要通过这个文件记录多台机器的公钥
id_rsa : 生成的私钥文件
id_rsa.pub : 生成的公钥文件
know_hosts : 已知的主机公钥清单
配置node1对node2的免密登录
1、生成密钥,如果执行过,直接复制公钥至node2,上一步我已经生成公钥与密钥,此时可以直接拷贝公钥至node2中,执行命令
cd /root/.ssh
ssh-copy-id -i ./id_rsa.pub root@node2
命令输入后按照顺序,回车,输入yes,输入node2的root密码
2、测试免密登录是否成功
ssh node2
3、接下来配置
-- node1=> node3 方法同上
为什么这样配置服务器,node1为什么需要免密登录node2和node3
我们此处只需要配置node1至其他服务器的免密登录即可。node1为NameNode 作为主节点和服务节点,node2作为存储数据的数据节点
以下介绍三个虚拟机服务器的分工与结构
NameNode: 接受客户端的读写服务,比如文件的上传和下载,保存元数据,比如文件的大小、文件创建时间、文件的拥有者、权限、路径和文件名。元数据存放在内存中,不会和磁盘发生交互。
DataNode: 简称DN,与NameNode对应,主要用来存储数据内容,本地磁盘目录存储数据块(Block),以文件形式分别存储在不同的DataNode节点上,同时存储Block的元数据信息文件。
Secondary NameNode:上面提到的NameNode 的元数据存储在内存中,为了保证数据不丢失,需要将数据保存起来,这里涉及的文件包括fsimage和edits。fsimage是整个元数据文件,在集群刚开始搭建时是空的,对元数据增删改的操作放到edits文件中。Secondary NameNode完成数据的合并操作,每隔3600秒更新一次
Hadoop 3的HDFS的完全分布式搭建
在搭建Hadoop3的完全分布式之前需要准备三台机器作为三个节点,当然我们使用的是三个虚拟机;这里假设三台服务器的名字为node1、node2、node3,其中node1为NameNode(简写NN),node2为Secondary NameNode 简写(SN),同时node1、node2、node3都设置为DataNode简写为(DN),如下表。
最后如果在node1上启动集群,需要node1免密码登录到node2、node3上开启相应的服务,下一章节说明如何设置:hadoop3.2安装手册
node1 | node2 | node3 |
---|---|---|
NN | SN | -- |
DN | DN | DN |