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

集群安装前置条件

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

环境

Ubuntu 18.04 + JDK 1.8 + Hadoop 2.10 + SSH

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

准备工作

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

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

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

先关闭当前虚拟机实例。

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

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

网络配置

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

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

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

Master节点IP

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

Slave节点IP

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

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

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

sudo vim /etc/hostname

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

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

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

sudo vim /etc/hosts

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

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

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

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

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

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

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

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

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

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

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

scp 是 secure copy 的简写,用于在 Linux 下进行远程拷贝文件,类似于 cp 命令,不过 cp 只能在本机中拷贝。执行 scp 时会要求输入 Slave1 上 hadoop 用户的密码(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

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

配置PATH变量

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

vim ~/.bashrc

在文件中添加下面一行

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

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

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

source ~/.bashrc

配置集群/分布式环境

集群/分布式模式需要修改 /usr/local/hadoop/etc/hadoop 中的5个配置文件,更多设置项可点击查看官方说明,这里仅设置了正常启动所必须的设置项: slaves、​​core-site.xml​​、​​hdfs-site.xml​​、​​mapred-site.xml​​、​​yarn-site.xml​​ 。

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

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

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

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.http-address                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

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

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

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

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

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

hdfs dfsadmin -report

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

也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态​​http://master:50070/​

执行分布式实例

执行分布式实例过程与伪分布式模式一样,首先创建 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集群(双节点)安装配置

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

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

Original: https://blog.51cto.com/u_15692358/5399375
Author: mb62b13c6f57f4d
Title: Hadoop集群(双节点)安装配置

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/517186/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球