摘要:本文讲解了在Ubuntu22.04上搭建Hadoop分布式集群的教程
前言
本篇博客主要讲解如何在Linux虚拟机上搭建Hadoop的分布式集群
最近在网上找Hadoop在Ubuntu上的搭建教程,却发现大多是在Centos上搭建的,许多配置不尽相同,出于记录和提供帮助的想法,我写下了本篇博客。
如果您是Linux小白,请先阅读
Hadoop配置教程的前期准备-CSDN博客
,如果您有一定Linux基础可以在命令报错后自行解决,那么您可以直接阅读本教程。
前期准备
VMware版本可以任意选择,其他资源版本建议保持一致或相近
VMware:VMware Workstation Pro v16.1.2(版本可以任意)
Ubuntu:ubuntu-22.04.4-desktop-amd64.iso
JDK:jdk-8u171-linux-x64.tar.gz
Hadoop:hadoop-3.4.0.tar.gz
- Ubuntu:ubuntu-releases-22.04安装包下载_开源镜像站-阿里云*
jdk:https://repo.huaweicloud.com/java/jdk/8u171-b11/
Hadoop:https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.4.0/
一、JDK、Hadoop下载
Hadoop的分布式和伪分布式的JDK、Hadoop下载操作一致
详见:Hadoop伪分布式搭建教程-CSDN博客
二、JDK配置
** **Hadoop的分布式和伪分布式的JDK配置操作一致
详见:Hadoop伪分布式搭建教程-CSDN博客
三、ssh免密登录
在之后操作集群的时候我们需要经常登录主机和从机,所以设置SSH免密登录时有必要的。
输入如下代码:生成无密码密钥对,询问保存路径直接输入回车,生成密钥对:id_rsa和id_rsa.pub,默认存储在~/.ssh目录下。
ssh-keygen -t rsa -P ''
接下来:把id_rsa.pub追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
然后修改权限:
chmod 600 ~/.ssh/authorized_keys
接着需要启用RSA认证,启动公钥私钥配对认证方式:vim /etc/ssh/sshd_config 如果提示权限不足在命令前加上sudo;
修改ssh配置:
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile %h/.ssh/authorized_keys # 公钥文件路径
重启ssh:
service ssh restart
四、Hadoop配置
** **Hadoop的分布式和伪分布式的Hadoop配置操作基本一致,但需要对部分文件进行修改,我们在这里重新配置各个文件(没有做伪分布的直接看这个就行)。
** 需要修改的配置文件有:**
** hadoop-env.sh**
** yarn-env.sh**
** **core-site.xml
** hdfs-site.xml**
** yarn-site.xml**
** mapred-site.xml**
** workers**
首先进入Hadoop安装路径下的/etc/hadoop-3.4.0/etc/hadoop目录下,然后依次编辑上述文件。
cd /app/hadoop-3.4.0/etc/hadoop
4.1编辑hadoop-env.sh
在hadoop-env.sh文件中添加以下代码:
export JAVA_HOME=/app/jdk1.8.0_171
export HADOOP_HOME=/app/hadoop-3.4.0
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_LOG_DIR=$HADOOP_HOME/logs
4.2编辑yarn-env.sh
在yarn-env.sh文件中添加以下代码:
export JAVA_HOME=/app/jdk1.8.0_171
4.3编辑core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoop-1:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
4.4编辑hdfs-site.xml
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.namenode.hosts</name>
<value>hadoop-1,hadoop-2,hadoop-3</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>100</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>localhost:9870</value>
</property>
<property>
<name>dfs.datanode.data.dir.perm</name>
<value>700</value>
</property>
</configuration>
4.5编辑yarn-site.xml
这里的192.168.147.101要填你虚拟机自己的IP地址
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop-1</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.147.101:8099</value>
<description>这个地址是mr管理界面的</description>
</property>
</configuration>
4.6编辑mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=/app/hadoop-3.4.0</value>
</property>
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/app/hadoop-3.4.0</value>
</property>
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/app/hadoop-3.4.0</value>
</property>
</configuration>
4.7添加workers
在workers文件中添加三台主机名,(如果你的hadoop版本是2.x,则需要修改slaves文件)
hadoop-1
hadoop-2
hadoop-3
4.8配置环境变量
在配置环境变量之前,由于我们在配置文件中用到了一些没有创建的文件夹路径,所以我们先来创建文件夹
mkdir -p /usr/hadoop/tmp
mkdir /usr/hadoop/hdfs
mkdir /usr/hadoop/hdfs/data
mkdir /usr/hadoop/hdfs/name
将Hadoop添加到/etc/profile环境变量中
vim /etc/profile
export HADOOP_HOME=/app/hadoop-3.4.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
4.9使文件生效
source /etc/profile
五、修改hadoop启动、停止文件
首先进入Hadoop的sbin目录下
cd /app/hadoop-3.4.0/sbin
在start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh,stop-yarn.sh顶部添加以下参数:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
六、虚拟机克隆
6.1克隆前的准备
在克隆虚拟机之前,我们还需要对集群进行一些配置
首先对配置好的第一台虚拟机修改主机名为hadoop-1
hostnamectl set-hostname hadoop-1 # 修改主机名
修改hadoop-1的IP地址(根据你自己的IP地址修改下面的静态IP地址和网关、DNS)
vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
ens33: # 请根据你的实际接口名称替换这个
#dhcp: no # 禁用 DHCP
addresses:
- 192.168.147.101/24 # 设置静态 IP 地址和子网掩码
routes:
- to: default #默认路由
via: 192.168.147.2 # 设置网关
nameservers:
addresses:
- 192.168.147.2 # 设置 DNS 服务器
配置主机映射,修改hosts文件,在/etc/hosts文件中添加以下内容(也是根据你自己的IP地址进行修改):
vim /etc/hosts
192.168.147.101 hadoop-1
192.168.147.102 hadoop-2
192.168.147.103 hadoop-3
(由于我们还没有克隆虚拟机,所以这里的hadoop-2和hadoop-3的IP地址暂时是不存在的,现在先把它们的IP配置好,方便虚拟机克隆以后的修改,在6.3会讲解克隆机的IP配置)
6.2克隆虚拟机
首先将我们的虚拟机关机,然后找到右键虚拟机找到克隆选项--->选择创建完整克隆,其他选项默认就可以了
6.3修改克隆机的配置
克隆两台虚拟机hadoop-2和hadoop-3,然后启动我们的三台虚拟机
将第二台和第三台虚拟机修改主机名为hadoop-2、hadoop-3(分别在各自主机上运行)
hostnamectl set-hostname hadoop-2 # 修改主机名,在hadoop-2上运行
hostnamectl set-hostname hadoop-3 # 修改主机名,在hadoop-3上运行
将hadoop-2和hadoop-3的静态IP地址单独修改(我的hadoop-2是192.168.147.102,hadoop-3是192.167.147.103),具体要根据你的IP修改
vim /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
renderer: NetworkManager
ethernets:
ens33: # 请根据你的实际接口名称替换这个
#dhcp: no # 禁用 DHCP
addresses:
- 192.168.147.101/24 # 设置静态 IP 地址和子网掩码
routes:
- to: default #默认路由
via: 192.168.147.2 # 设置网关
nameservers:
addresses:
- 192.168.147.2 # 设置 DNS 服务器
七、启动Hadoop集群
虚拟机克隆完成以后,将三台虚拟机hadoop-1,hadoop-2和hadoop-3全部开机启动。
#如果重启后连不上网,并且命令行ping www.baidu.com出现域名解析出现暂时性错误
#使用sudo dhclient ens33可以获取并配置网络接口
详见: ubuntu出现“域名解析出现暂时性错误”解决办法-CSDN博客
由于重启了虚拟机,我们需要先生效一下配置文件
source /etc/profile
- 然后在主节点(hadoop-1)上运行hadoop namenode -format进行格式化
hadoop namenode -format
2.然后启动hadoop(只需要在hadoop-1上启动),可以使用start-dfs.sh、start-yarn.sh分别启动,也可以使用start-all.sh一键全部启动(hadoop-2和hadoop-3会自动启动)
start-all.sh
3.检查各个机子的启动的结点,分别在hadoop-1,hadoop-2和hadoop-3查看jps
jps
- 如果你的三台虚拟机出现下图结果表示Hadoop分布式搭建并启动成功:
或者是登陆localhost:9870,查看集群是否有三台虚拟机。如果出现下图,恭喜您,您的Hadoop分布式搭建到此成功!
如果没有成功,可能是IP地址没有改对,确保另外两台虚拟机的IP跟我们在hadoop-1中配置的IP是一样的
八、总结
以上就是本文要讲的内容,主要涉及JDK、Hadoop的安装和配置,ssh免密登录、虚拟机克隆和静态IP地址修改等操作。
希望本篇博客对您有所帮助,感谢您的阅读!
参考内容:
Hadoop-001-本地虚拟机环境搭建_虚拟机新建hadoop1-CSDN博客
Hadoop-002-部署并配置HDFS集群-CSDN博客
Hadoop集群搭建完整版(奶妈保姆级别教程,超级详细),一个半小时即可完成
Hadoop完全分布式集群搭建教程
版权归原作者 赶紧写完去睡觉 所有, 如有侵权,请联系我们删除。