Hadoop 学习:环境搭建
环境要求
此次流程记录是 Ubuntu Server 20.04 系统下 Hadoop 集群的搭建。Linux 和 Windows 所需软件包括:(1)Java 1.5.x 及以上,必须安装,建议选择 Java 8 版本。(2)ssh 必须安装并且保证 sshd 一直运行,以便用 Hadoop 脚本管理远端 Hadoop 守护进程。
软件下载
Mobaxterm:一款多功能的远程连接工具,支持多种协议,自带 SFTP 功能,下载链接;
Java:Java 8 是目前使用最为广泛的版本(可能是因为 Java 版本迭代所带来的学习成本问题),自此安装也是选择 Java 8 为运行环境,方便维护,下载链接;
SSH:集群的工作环境需要远程连接进行管理,通过对 master 和 slaves 安装 SSH 服务,方便管理。Ubuntu 安装 SSH 服务命令 apt-get install openssh-server。
Hadoop:此次安装的重头戏,前往 Apache 官方网站下载即可,https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
软件的安装和配置
Mobaxterm 的安装
Mobaxterm 下载后,双击安装包进行安装,经典的 “下一步”,并进行安装位置的选择,完成安装。
SSH 的安装
Ubuntu 安装后默认就具有 SSH 服务,由于未进行配置,此时还是个单向的服务,“只出不进”—— 能通过 SSH 命令远程连接其他主机,其他主机不能通过 SSH 访问本机。安装 OpenSSH,在 Terminal 中输入命令:
1 | apt-get update |
配置 SSH
新建 root 用户,键入命令 passwd root,并输入、确定密码。
首先,编辑系统或者重要服务配置文件时,做好备份。键入命令
1 | cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak |
再通过 Vim 进行 SSH 的配置,
1 | vim /etc/ssh/sshd_config |
添加一行 PermitRootLogin yes,按键盘 Esc,输入英文冒号、wq,推出并保存。再重启 SSH 服务:
1 | service ssh restart |
远程连接
在虚拟主机 Terminal 中输入 ip addr,查看默认分配的 IP 地址。
打开 Mobaxterm,进行远程连接配置,新建远程连接任务,选择协议类型,根据上一步获取的信息,在 Mobaxterm 中输入虚拟主机的相关信息。
输入之前配置的 root 账户的密码,完成远程连接。
Java 的安装和配置
使用的 Mobaxterm 的 SFTP 的功能,支持拖拽上传,直接将下载的 Java 8 打包压缩包拖至文件夹中。由于处在内网环境下,传输速率应该会很快。
进入到 Java 8 所在文件夹,进行解压
1 | tar -zxvf jdk-8u321-linux-x64.tar.gz |
配置环境变量,vim /etc/profile
,在末尾添加语句,配置环境变量。
1 | JAVA_HOME=/path/to/java/jdk1.8.0_321 |
重载环境变量配置文件 source /etc/profile
,并检查 Java 是否配置完成 java -version
。
Hadoop 的安装和配置
重复安装 Java 时的步骤,拖拽上传 Hadoop 压缩包,并进行解压,验证安装。
Hadoop 分布式配置
克隆虚拟主机
将配置好的已有主机(Master)克隆两台(Node1、Node2)。
在克隆选项时,需注意选择 “创建完整克隆”,否则后续步骤将失败。
配置网络和主机名
由于 VMware 克隆机制,会将源主机的所有信息原封不动得复制一份,包括软件和硬件信息。所以需要对克隆的 Nodes 的网络进行配置。
- 生成 MAC 地址。
- 配置 IP 和网关,分别对三个主机进行配置。使用 shell 命令对网络进行配置。使用 netplan –debug apply 使得配置生效。
1
vim etc/netplan/00-installer-config.yaml
1
2
3
4
5
6
7
8
9
10# This is the network config written by 'subiquity'
network:
ethernets:
ens33:
addresses: [192.168.***.***/24]
gateway4: 192.168.***.2
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: false
version: 2 - 修改主机名分别为 master、node1、node2。
1
vim /etc/hostname
分布式集群
经过上述步骤,再通过 Mobaxterm 连接这三台主机(master、node1、node2)。
- 防火墙:分别关闭这三台主机的防火墙,并不允许防火墙自启。在 Ubuntu 20.04 版本中,
ufw status
防火墙默认时关闭(inactive)状态。
- SSH 免密:在 master 主机执行生成密钥文件,生成过程一路回车即可,并使用
1
ssh-keygen -t rsa
命令,该命令的作用其实就是将密钥复制到 node1 和 node2 的 /root/.ssh/authorized_keys 文件中,方法不限,也可手动将密钥复制到两个节点的 /root/.ssh/authorized_keys 文件中去,能达到同样的效果。实现 master 能够免密登录到 node1 和 node2。为后续的工作打好基础。1
2ssh-copy-id -i node1
ssh-copy-id -i node2
- IP 映射:修改 master 主机 IP hosts 映射,vim /etc/hosts。在 node1、node2 中做出相同的配置,或者使用命令
1
scp /etc/hosts node<id>:/etc/hosts
- Hadoop 配置文件:修改 master 主机的 Hadoop 配置文件 workers(/path/to/hadoop/etc/hadoop/workers),向其中添加主机名 node1、node2 或者二者对应的 IP。修改 hadoop-env.sh(/path/to/hadoop/etc/hadoop/hadoop-env.sh),添加 Java 安装的根目录。
修改 core-site.xml 文件,hdfs 监听端口、Hadoop 临时文件夹内容因人而异。
1 |
|
修改 hdfs-site.xml 配置文件。
1 |
|
修改 yarn-site.xml 配置文件。
1 |
|
修改 mapred-site.xml 配置文件。
1 |
|
- 拷贝 master 主机已经配置完毕的 hadoop 到 node1 和 node2 中此时应该是覆盖了。
1
scp -rf /usr/local/hadoop/hadoop-3.3.2 node<id>:/usr/local/hadoop/
- 启动 Hadoop:输入命令生成初始化文件。运行启动键本:
1
/usr/local/hadoop/hadoop-3.3.2/bin/hdfs namenode -format
1
/usr/local/hadoop/hadoop-3.3.2/sbin/start-all.sh
- 大功告成!。