VMware中搭建Hadoop集群简易步骤(文字版)
VMware中搭建Hadoop集群(文字版)
所用各工具版本:
- 系统镜像:CentOS-7-x86_64-DVD-1810
- VM version:VMware Workstation Pro15
- Java version:jdk-8u221-linux-x64
- Hadoop version:hadoop-2.7.7
准备步骤:
- 下载CentOS-7镜像、下载匹配的Sun JDK包、下载匹配的Hadoop包
- 将Vmware中的VMnet8网络设置成“NAT模式”,设置子网IP、子网掩码、网关
集群规划:
- 集群搭建之前,应该进行 集群规划 ,文件中的某些配置需要基于对集群的规划,进行配置之前,需要先计划好Hadoop中的各个组件服务器应该搭载在哪台主机上,实现 负载均衡,避免由于宕机而造成不可逆损失,集群规划 是搭建分布式环境之前的最重要步骤之一,本次实验中具体规划如下:
hadoop101 | hadoop102 | hadoop103 | |
---|---|---|---|
HDFS | NameNode DateNode | DateNode | DateNode SecondaryNameNode |
YARN | NodeManager | ResourceManager NodeManager | NodeManager |
正式步骤:
1. 安装系统镜像
- “软件安装” 选择“Server with GUI”,这样就具备了如ssh、UI界面等一系列基本工具,“磁盘划分” 选择默认或者自己手动分区都可,自定义最好
2. 创建root用户和普通用户
- 注意普通用户的用户名必须要全部小写,本次创建的用户名为
tomandersen
3. 安装Vmware Tools
- 打开桌面自带的磁盘镜像,解压tar.gz到桌面,执行文件夹中
vmware-install.pl
文件,安装完成后,在Linux系统中调整分辨率到合适配置
4. 添加普通用户sudo权限并实现免密使用sudo命令
- 方法1: 使用 visudo命令 或者直接手动修改 /etc/sudoers配置文件,在
root ALL=(ALL) ALL
后方添加设置,格式为<用户名> ALL=(ALL) NOPASSWD:ALL
,如tomandersen ALL=(ALL) NOPASSWD:ALL
即可实现指定用户使用sudo命令无需密码,也可以使用命令“sudo -s”实现无密码登录root用户。 - 方法2: 或者也可以使用实现组内用户全部免密使用sudo命令:①创建名为hadoop的用户组,②将用户添加到hadoop组,③将root组成员设置成全部免密:格式为
%<组名> ALL=(ALL) NOPASSWD:ALL
,如%hadoop ALL=(ALL) NOPASSWD:ALL
5. 修改网卡名(可以不修改)
6. 设置静态IP:
7. 修改主机名:
- 方法1: 可以手动编辑 /etc/sysconfig/network文件,添加或者设置
NETWORKING=yes
和HOSTNAME=<新主机名>
如HOSTNAME=hadoop101
,重启生效 - 方法2: 使用命令格式为
hostnamectl set-hostname <新主机名>
,如hostnamectl set-hostname hadoop101
,立即生效 - 方法3: 修改/etc/hostname文件,直接添加进这个文件的字符串即为主机名,如
hadoop101
,重启生效
8. 配置/etc/hosts文件
- 添加集群中各个主机IP地址与主机名的映射关系,如
192.168.126.101 hadoop101
192.168.126.102 hadoop102
192.168.126.103 hadoop103
9. 禁用防火墙 firewalld
systemctl disable firewalld.service
- 注意:在CentOS 7或RHEL 7或Fedora中防火墙由firewalld来管理
10. 在/opt/下创建module和software文件夹并将所属权赋给之前创建的普通用户
- 创建文件夹:
sudo mkdir module
和sudo mkdir software
- 改变文件夹所属组和所属用户:
sudo chown tomandersen:tomandersen module/ software/
11. 使用XShell工具远程连接主机Hadoop101将JDK和Hadoop包传入到/opt/software/路径下
- 可以在XShell中使用
rz
命令,或者直接拖拽文件到对应区域
12. 卸载现有JDK
- 使用yum命令查看是否安装有JDK:
sudo yum list installed | grep java
,然后将jdk相关包删除:sudo yum remove <包名>
- 自带的是Open JDK,这里我们使用Sun JDK
13. 重装JDK
- 将
/opt/software/
路径下的JDK解压到/opt/module/
路径下:tar -zxvf jdk-8u221-linux-x64.tar.gz -C /opt/module/
(因为解压目录不在当前路径下所以使用tar命令需要增加-C参数) - 设置和添加全局环境变量
JAVA_HOME
和PATH
:使用sudo+vi命令修改/etc/profile
文件,在末尾添加export JAVA_HOME=/opt/module/jdk1.8.0_221
和export PATH=$PATH:$JAVA_HOME/bin
- 重新加载/etc/profile文件使其生效:
source /etc/profile
,检查环境变量JAVA_HOME:which java
14. 安装Hadoop
- 同样将
/opt/software/
路径下的Hadoop包解压到/opt/module/
路径下:tar -xzvf hadoop-2.7.7.tar.gz -C /opt/module/
- 设置和添加全局环境变量
HADOOP_HOME
和PATH
:使用sudo+vi命令修改/etc/profile文件,在末尾添加export HADOOP_HOME=/opt/module/hadoop-2.7.7
、export PATH=$PATH:$HADOOP_HOME/bin
- 重新加载/etc/profile文件使其生效:
source /etc/profile
,检查是否安装成功:hadoop version
15. 配置Hadoop
- 进入
hadoop-2.7.7/etc/hadoop
路径下配置相关文件,具体参考Hadoop集群极简入门基础配置教程
16. 完全拷贝虚拟机并且更改新其他主机名和IP
- 完全拷贝虚拟机
hadoop101
,生成hadoop102
和hadoop103
,这样hadoop101
的配置信息也一并同步到了其他主机中 - 在
hadoop102
和hadoop103
中将主机名分别设置成对应主机名:hostnamectl set-hostname hadoop102
和hostnamectl set-hostname hadoop103
- 分别修改主机IP地址,本次实验中
hadoop102
和hadoop103
地址分别设置为192.168.126.102
和192.168.126.103
,然后重启网卡更新IP地址
17. 设置各主机间ssh免密登录
18. 使用ntp进行集群时间同步
19. 格式化NameNode节点
- 在第一次启动集群之前需要格式化NameNode节点
hdfs namenode -format
或者hadoop namenode -format
,建议用前者,后者命令将被弃用 - 如果不是第一次格式化NameNode,需要事先删除
data
和logs
文件夹
20. 启动HDFS集群
- 使用
hadoop-2.7.7/sbin/
路径下的start-dfs.sh
脚本启动HDFS集群,在节点上使用jps
命令查看Java进程,观察进程启动情况是否和集群规划中的匹配 - 注意:只能在NameNode主机上启动HDFS集群,否则无法启动NameNode进程,而只能启动DataNode
21. 启动YARN集群:
- 使用
hadoop-2.7.7/sbin/
路径下的start-yarn.sh
脚本启动YARN集群,在节点上使用jps
命令查看Java进程,观察进程启动情况是否和集群规划中的匹配 - 注意:只能在ResourceManager主机上启动YARN集群,否则无法启动ResourceManager进程,而只能启动NodeManager
22. 运行测试:
- 使用Hadoop自带的例子测试集群是否搭建成功,观察运行结果:
hadoop jar /opt/module/hadoop-2.7.7/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.7.jar pi 10 10