温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Hadoop高可用集群如何搭建

发布时间:2021-12-09 14:32:16 来源:亿速云 阅读:175 作者:iii 栏目:大数据

本篇内容介绍了“Hadoop高可用集群如何搭建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、集群规划

共5个节点,主机名分别是hadoop101、hadoop102、hadoop103、hadoop104、hadoop105

初始启动集群,hadoop101上运行active namenode即主namenode;hadoop102上运行standby namenode即从namenode

每个节点运行的进程如下表

机器名运行进程
hadoop101NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager
hadoop102NameNode/zkfc/Zookeeper/Journalnode/DataNode/NodeManager
hadoop103Zookeeper/Journalnode/DataNode/NodeManager
hadoop104ResourceManager
hadoop105ResourceManager

二、五节点Hadoop HA搭建

准备5台虚拟机,在做五节点hadoop-2.7.3 HA安装之前,要求完成每台虚拟机的环境准备。

1. 虚拟机环境准备

举一反三:参考安装3节点hadoop-2.7.3集群时,在解压hadoop-2.7.3.tar.gz压缩包之前的操作;李老师之前已经讲过,不再赘述)

mac安装VMWare虚拟化软件

VMWare下安装CenoOS7 虚拟机关闭防火墙 禁用selinux 配置虚拟网卡 配置虚拟机网络 安装JDK 配置时间同步 修改主机名 修改ip地址 修改/etc/hosts 各节点免密钥登陆 重启虚拟机

2. 安装zookeeper集群

hadoop101、hadoop102、hadoop103上安装zookeeper集群

3. 五节点Hadoop HA搭建

注意:

此文档使用<font color=red>普通用户</font>操作,如bruce; hadoop安装到用户主目录下,如/home/bruce <font color=red>请根据自己的实际情况修改</font>

3.1 解压hadoop压缩包

在node-01上解压hadoop压缩包到用户主目录(**~**表示用户主目录/home/bruce)

[daniel@hadoop101software]$ tar -zxvf hadoop-2.7.3.tar.gz -C/opt/moudle/

3.2 修改hadoop-env.sh

hadoop2.x的配置文件全部在$HADOOP_HOME/etc/hadoop下

[daniel@hadoop101 moudle]$ cd hadoop-2.7.3/etc/hadoop/

修改hadoop-env.sh;保存退出

export JAVA_HOME=/usr/java/jdk1.8.0_211-amd64

注意:JAVA_HOME值修改为<font color=red>自己jdk的实际目录</font>

3.3 修改core-site.xml

注意: 情况一:值/home/bruce/hadoop-2.7.3/tmp根据实际情况修改 情况二:值node-01:2181,node-02:2181,node-03:2181根据实际情况修改,修改成安装了zookeeper的虚拟机的主机名

<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<!-- 指定hadoop临时目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/moudle/hadoop-2.7.3/tmp</value>
</property>
<!-- 指定zookeeper地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>
</configuration>

3.4 修改hdfs-site.xml

注意:

情况一:属性值qjournal://node-01:8485;node-02:8485;node-03:8485/ns1中的主机名,修改成实际安装zookeeper的虚拟机的主机名 情况二:属性值/home/bruce/hadoop-2.7.3/journal中”/home/bruce/hadoop-2.7.3”替换成实际hadoop文件夹的路径 情况三:属性值/home/bruce/.ssh/id_rsa中/home/bruce根据实际情况替换

<configuration>
<!--指定hdfs的nameservice为ns1,需要和core-site.xml中的保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<!-- ns1下面有两个NameNode,分别是nn1,nn2 -->
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<!-- nn1的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop101:9000</value>
</property>
<!-- nn1的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop101:50070</value>
</property>
<!-- nn2的RPC通信地址 -->
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop102:9000</value>
</property>
<!-- nn2的http通信地址 -->
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop102:50070</value>
</property>
<!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop101:8485;hadoop102:8485;hadoop103:8485/ns1</value>
</property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/moudle/hadoop-2.7.3/journal</value>
</property>
<!-- 开启NameNode失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<!-- 使用sshfence隔离机制时需要ssh免登陆 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/daniel/.ssh/id_rsa</value>
</property>
<!-- 配置sshfence隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>

3.5 修改mapred-site.xml

重命名文件

[daniel@hadoop101 hadoop]$ mv mapred-site.xml.template mapred-site.xml
[daniel@hadoop101 hadoop]$ vim mapred-site.xml

修改mapred-site.xml

<configuration>
<!-- 指定mr框架为yarn方式 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

3.6 修改yarn-site.xml

注意:

情况一:属性yarn.resourcemanager.hostname.rm1的值node-04根据实际情况替换 情况二:属性yarn.resourcemanager.hostname.rm2的值node-05根据实际情况替换 情况三:属性值node-01:2181,node-02:2181,node-03:2181根据实际情况替换;替换成实际安装zookeeper的虚拟机的主机名

<configuration>
<!-- 开启RM高可靠 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id为yrc,意为yarn cluster -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop104</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop105</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hadoop101:2181,hadoop102:2181,hadoop103:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

3.7 修改slaves

node-01、node-02、node-03上运行了datanode、nodemanager,所以修改slaves内容替换为:

node-01
node-02
node-03

3.8 远程拷贝hadoop文件夹

说明:~表示用户主目录

scp -r ~/hadoop-2.7.3/ node-02:~
scp -r ~/hadoop-2.7.3/ node-03:~
scp -r ~/hadoop-2.7.3/ node-04:~
scp -r ~/hadoop-2.7.3/ node-05:~

3.9 配置环境变量

node-01到node-05五个节点,<font color='red'>都配置环境变量</font>

#将hadoop添加到环境变量中
vim ~/.bash_profile

添加内容如下(注意:若HADOOP_HOME已经存在,则修改):

export HADOOP_HOME=/home/bruce/hadoop-2.7.3/
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

编译文件,使新增环境变量生效

source ~/.bash_profile

4. 启动与初始化hadoop集群

**注意:**严格按照下面的步骤 先检查各台hadoop环境变量是否设置好

4.1 启动zookeeper集群

注意:根据zookeeper实际安装情况,启动zookeeper

分别在node-01、node-02、node-03上启动zookeeper

[daniel@hadoop101 zookeeper-3.4.2]$ bin/zkServer.sh start
[daniel@hadoop102 zookeeper-3.4.2]$ bin/zkServer.sh start  
[daniel@hadoop103 zookeeper-3.4.2]$ bin/zkServer.sh start

查看状态:一个为leader,另外两个为follower

[daniel@hadoop101 zookeeper-3.4.2]$ bin/zkServer.sh status
JMX enabled by default
Using config: /opt/moudle/zookeeper-3.4.2/bin/../conf/zoo.cfg
Mode: leader

4.2 启动journalnode

分别在node-01、node-02、node-03上执行

[daniel@hadoop101 hadoop-2.7.3]$ hadoop-daemon.sh start journalnode
[daniel@hadoop102 zookeeper-3.4.2]$ hadoop-daemon.sh start journalnode 
[daniel@hadoop103 zookeeper-3.4.2]$ hadoop-daemon.sh start journalnode

运行jps命令检验,node-01、node-02、node-03上多了JournalNode进程

4.3 格式化HDFS

#根据集群规划node-01、node-02上运行namenode;所以<font color='red'>只在主namenode节点</font>即node-01上执行命令:

[daniel@hadoop101 hadoop-2.7.3]$ hdfs namenode -format

4.4 拷贝hadoop.tmp.dir

格式化后会根据core-site.xml中的hadoop.tmp.dir属性值/home/bruce/hadoop-2.7.3/tmp,并生成此文件夹

Hadoop高可用集群如何搭建

将/home/bruce/hadoop-2.7.3/tmp拷贝到node-02的/home/bruce/hadoop-2.7.3中

[daniel@hadoop101 hadoop-2.7.3]$ scp -r tmp/daniel@hadoop102:/opt/moudle/hadoop-2.7.3/

4.4 格式化ZK

node-01上执行即可

[daniel@hadoop101 hadoop-2.7.3]$ hdfs zkfc -formatZK

4.5 启动HDFS

只在<font color='red'>主namenode</font>节点node-01上执行

[daniel@hadoop101 hadoop-2.7.3]$ sbin/start-dfs.sh

4.6 启动YARN

4.6.1主resourcemanager

注意:只在<font color='red'>主resourcemanager</font>即node-04上执行start-yarn.sh

把namenode和resourcemanager部署在不同节点,是因为性能问题,因为他们都要占用大量资源 <font color='red'>坑</font>:在node-04上启动yarn之前,先依次从node-04 ssh远程连接到node-01、node-02、node-03、node-04、node-05;因为初次ssh时,需要交互,输入yes,回车

[daniel@hadoop104 hadoop-2.7.3]$ sbin/start-yarn.sh
4.6.2 从resourcemanager

从resourcemanager即node-05上启动rm

[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh start resourcemanager

5. 验证集群是否可用

5.1 验证HDFS HA

5.1.1 访问WEB UI

node-01、node-02一主一备

http://node-01:50070

Hadoop高可用集群如何搭建

http://node-02:50070

Hadoop高可用集群如何搭建

5.1.2 模拟主备切换

在主namenode节点,运行

[daniel@hadoop102 hadoop-2.7.3]$ hadoop-daemon.sh stop namenode

访问之前为"备namenode"的WEB UI;发现状态更新为active

Hadoop高可用集群如何搭建

启动刚才手动停掉的namenode

hadoop-daemon.sh start namenode

访问它的WEB UI,发现状态更新为standby

Hadoop高可用集群如何搭建

5.2 验证Yarn HA

node-04、node-05主备切换

5.2.1 访问WEB UI

node-04浏览器访问

[http://hadoop104:8088/cluster/cluster](http://hadoop104:8088/cluster/cluster)

Hadoop高可用集群如何搭建

node-05浏览器访问

[http://hadoop105:8088/cluster/cluster](http://hadoop105:8088/cluster/cluster)

Hadoop高可用集群如何搭建

5.2.2 模拟主备切换

在主resourcemanager节点,运行

[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh stop resourcemanager

访问之前为"备resourcemanager"的WEB UI;发现状态更新为active

Hadoop高可用集群如何搭建

启动刚才手动停掉的resourcemanager

[daniel@hadoop105 hadoop-2.7.3]$ yarn-daemon.sh start resourcemanager

访问它的WEB UI,发现状态更新为standby

Hadoop高可用集群如何搭建

5.2.3 运行MR示例

运行一下hadoop示例中的WordCount程序:

hadoop fs -put /home/bruce/hadoop-2.7.3/LICENSE.txt /
hadoop jar hadoop-2.7.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar wordcount /LICENSE.txt /w0727

6. 集群常用命令

6.1 关闭Hadoop HA集群

正确指令执行顺序如下

主namenode上运行

stop-dfs.sh

主resoucemanager上运行

stop-yarn.sh

从resoucemanager上运行

yarn-daemon.sh stop resourcemanager

关闭zookeeper集群;每个zk服务器运行

zkServer.sh stop

6.2 常用命令

单独启动namenode

hadoop-daemon.sh start namenode

单独启动datanode

hadoop-daemon.sh start datanode

单独启动journalnode

hadoop-daemon.sh start journalnode

启动zookeeper

./zkServer.sh start

启动hdfs

start-dfs.sh

启动yarn

start-yarn.sh

单独启动resorucemanager

yarn-daemon.sh start resouremanger

“Hadoop高可用集群如何搭建”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI