Hadoop集群(双节点)安装配置

网友投稿 378 2022-11-17

Hadoop集群(双节点)安装配置

集群安装前置条件

已掌握Hadoop单机伪分布式安装配置,否则先查看​​Hadoop伪分布式安装与配置​​。

环境

Ubuntu 18.04 + JDK 1.8 + Hadoop 2.10 + SSH

本教程简单的使用两个节点作为集群环境:一个Master节点,一个Slave节点。

准备工作

Hadoop 集群的安装配置大致为如下流程:

选定一台机器作为 Master在 Master 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境在 Master 节点上安装 Hadoop,并完成配置在其他 Slave 节点上配置 hadoop 用户、安装 SSH server、安装 Java 环境将 Master 节点上的 /usr/local/hadoop 目录复制到其他 Slave 节点上在 Master 节点上开启 Hadoop

如果你已按照​​Hadoop伪分布式安装与配置​​进行过单机伪分布式安装,且能正常运行,将此虚拟机实例进行克隆即可。

先关闭当前虚拟机实例。

选择创建完整克隆,此时你就创建了一个跟前者功能完全相同的虚拟机实例(SSH+Java+Hadoop已拥有),就不用再重新配置了。

网络配置

两个虚拟机实例的网络适配器选用NAT模式即可。

查看Linux的几点IP地址(命令为ifconfig),即inet地址。

Master节点IP

Slave节点IP

首先在Master节点上关闭Hadoop(/usr/local/hadoop/sbin/stop-dfs.sh),在进行后续进群配置。

为了便于区分,我们修改一下各个节点的主机名

sudo vim /etc/hostname

然后根据上述我们查到的两个节点的IP地址修改自己所用节点的IP映射

sudo vim /etc/hosts

在 Master与Slave1节点的/etc/hosts 中将该映射关系填写上去即可(一般该文件中只有一个 127.0.0.1,其对应名为 localhost,如果有多余的应删除,特别是不能有 “127.0.0.1 Master” 这样的记录):

修改完成后需要重启一下,重启后在终端中才会看到机器名的变化。接下来的操作中请注意区分 Master 节点与 Slave 节点的操作。

配置好后需要在各个节点上测试是否相互 ping 得通,如果ping不通,后面的步骤无法执行

ping Master -c 3 # 在Slave1节点上测试ping Slave1 -c 3 # 在Master节点上测试

例如我在Master节点上ping Slave1,显示如下

牢记:继续下一步配置前,请先完成所有节点的网络配置,修改过的主机名需重启才能生效。

SSH无密码登陆节点

此操作是要让 Master 节点可以无密码 SSH 登陆到各个 Slave 节点上。

首先生成 Master 节点的公匙,在 Master 节点的终端中执行(因为改过主机名,所以还需要删掉原有的再重新生成一次):

cd ~/.ssh # 如果没有该目录,先执行一次ssh localhostrm ./id_rsa* # 删除之前生成的公匙(如果有)ssh-keygen -t rsa # 一直按回车就可以

让 Master 节点需能无密码 SSH 本机,在 Master 节点上执行

cat ./id_rsa.pub >> ./authorized_keys

完成后可执行 ​​ssh Master​​​ 验证一下(可能需要输入 yes,成功后执行 ​​exit​​ 返回原来的终端)。接着在 Master 节点将上公匙传输到 Slave1 节点:

scp ~/.ssh/id_rsa.pub hadoop@Slave1:/home/hadoop/

scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(hadoop),输入完成后会提示传输完毕,如下图所示:

接着在 Slave1 节点上,将 ssh 公匙加入授权

mkdir ~/.ssh # 如果不存在该文件夹需先创建,若已存在则忽略cat ~/id_rsa.pub >> ~/.ssh/authorized_keysrm ~/id_rsa.pub # 用完就可以删掉了

如果有其他 Slave 节点,也要执行将 Master 公匙传输到 Slave 节点、在 Slave 节点上加入授权这两步。

这样,在 Master 节点上就可以无密码 SSH 到各个 Slave 节点了,可在 Master 节点上执行如下命令进行检验

ssh Slave1

配置PATH变量

将 Hadoop 安装目录加入 PATH 变量中,这样就可以在任意目录中直接使用 hadoo、hdfs 等命令了,需要在 Master 节点上进行配置

vim ~/.bashrc

在文件中添加下面一行

export PATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

保存后执行 source ~/.bashrc ,使配置生效

source ~/.bashrc

配置集群/分布式环境

1, 文件 slaves,将作为 DataNode 的主机名写入该文件,每行一个,默认为 localhost,所以在伪分布式配置时,节点即作为 NameNode 也作为 DataNode。分布式配置可以保留 localhost,也可以删掉,让 Master 节点仅作为 NameNode 使用。

此教程让 Master 节点仅作为 NameNode 使用,因此将文件中原来的 localhost 删除,只添加一行内容:Slave1。

2、文件 core-site.xml 改为下面的配置

fs.defaultFS hdfs://Master:9000 hadoop.tmp.dir file:/usr/local/hadoop/tmp Abase for other temporary directories.

3、文件 hdfs-site.xml,dfs.replication 一般设为 3,但我们只有一个 Slave 节点,所以 dfs.replication 的值设为 1

dfs.namenode.secondary. Master:50090 dfs.replication 1 dfs.namenode.name.dir file:/usr/local/hadoop/tmp/dfs/name dfs.datanode.data.dir file:/usr/local/hadoop/tmp/dfs/data

4、文件 mapred-site.xml (先重命名,默认文件名为 mapred-site.xml.template),然后配置修改如下:

mapreduce.framework.name yarn mapreduce.jobhistory.address Master:10020 mapreduce.jobhistory.webapp.address Master:19888

5、文件 yarn-site.xml

yarn.resourcemanager.hostname Master yarn.nodemanager.aux-services mapreduce_shuffle

配置好后,将 Master 上的 /usr/local/hadoop 文件夹复制到各个节点上。

因为之前有跑过伪分布式模式,建议在切换到集群模式前先删除之前的临时文件。

在 Master 节点上执行如下操作

cd /usr/local sudo rm -r ./hadoop/tmp # 删除 Hadoop 临时文件sudo rm -r ./hadoop/logs/* # 删除日志文件tar -zcf hadoop.tar.gz hadoop # 先压缩再复制cd ~scp ./hadoop.tar.gz Slave1:/home/hadoop

在 Slave1 节点上执行(可不用命令解压,直接在文件系统中提取,解压或提取时间较长,耐心等待)

sudo rm -r /usr/local/hadoop # 删掉旧的(如果存在)tar -zxf hadoop.tar.gz -C /usr/localsudo chown -R hadoop /usr/local/hadoop

PS:压缩和解压过程可能会出现重目录现象(解压后hadoop文件夹里面套了一个hadoop文件夹,而第二个文件夹里面才是我们要用到的hadoop环境),此过程自己查看不在赘述

同样,如果有其他 Slave 节点,也要执行将 hadoop.tar.gz 传输到 Slave 节点、在 Slave 节点解压文件的操作。

首次启动需要先在 Master 节点执行 NameNode 的格式化

hdfs namenode -format # 首次运行需要执行初始化,之后不需要

接着可以启动 hadoop 了,在 Master 节点上进行

start-dfs.shstart-yarn.shmr-jobhistory-daemon.sh start historyserver

通过命令 ​​jps​​ 可以查看各个节点所启动的进程。正确的话,在 Master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer 进程

在 Slave 节点可以看到 DataNode 和 NodeManager 进程

缺少任一进程都表示出错。另外还需要在 Master 节点上通过命令 ​​hdfs dfsadmin -report​​ 查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功。例如我这边一共有 1 个 Datanodes:

hdfs dfsadmin -report

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态​​HDFS 上的用户目录

hdfs dfs -mkdir -p /user/hadoop

将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中

hdfs dfs -mkdir inputhdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

通过查看 DataNode 的状态(占用大小有改变),输入文件确实复制到了 DataNode 中

关闭 Hadoop 集群也是在 Master 节点上执行的

stop-yarn.shstop-dfs.shmr-jobhistory-daemon.sh stop historyserver

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JAVA GUI基础与MouseListener用法
下一篇:wifi智能插座原理及作用详解
相关文章

 发表评论

暂时没有评论,来抢沙发吧~