分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)

本文涉及的产品
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 分布式系统详解--框架(Hadoop-HDFS的HA搭建及测试)

分布式系统详解 - 框架(Hadoop的HDFS的HA搭建及测试)

一,背景概述

解决问题1:通过上面的图我们可以明确的看出来,如果的的Namenode坏掉了,那我们的整个集群可以说就是要瘫痪了也就是单节点故障问题。

于是现在就出现了另外一张图,我截取的〜在这儿我们看到有两个名称节点,一个是(Acticve),另外一个是待机。

该图特点:

1,他们被上面ZKFS - ZK转移控制器操控。

2,他们质检也可以进行共享元数据。

3,他们被Zookeeper Cluster进行监控协调。

在这里没有secondaryNamenode,却分为了两处。也就是说,一个是正在活跃使用的,另外一个就是随时待命的。

Hdfs ha几大重点:

(1)保证两个名称节点里面的内存中的存储文件元数据同步,名称节点启动时会读镜像文件。

(2)变化的记录信息同步。

(3)日志文件的安全性。分布式的存储日志文件(2N + 1)基数个。使用动物园管理员进行监控.zookeeper对时间同步要求比较高。

(4)客户端如何知道访问哪一个namenode.1,使用代理代理0.2,隔离机制0.3,使用sshfence.4,两个namenome之间无密码登录。

(5)名称节点是哪一个ACTIVE.1,动物园管理员通过选举选出动物园管理员。通过监控,自动排除。

      Hadoop2.x官方提供两种HDFS HA解决方案,一种是NFS,另外一种是QJM(由cloudra提出,原理类似于zookeeper)。在这篇文章当中我们使用QJM来完成,主备namenode之间通过一组Journalnode同步元数据信息。一条数据只要成功写入Journalnode就被认为是写入成功。通常配置基数个Journalnode。

二,配置规划

IP 主机名                                   节点
192.168.71.234 centos01 namenode,datanode,journalnode,qurnompeerMain,ZKF
192.168.71.235 centos02 namenode,datanode,journalnode,qurnompeerMain,ZKF
192.168.71.233 MyLinux datanode,journalnode,qurnompeerMain

 

 

 

 

 

设置免登陆

centos01 - > MyLinux,centos01,centos02

centos02 - > MyLinux,centos01,centos02

centos01 < - > centos02

三,HDFS的HA配置

3.1将普通集群进行备份

mv /opt/hadoop-2.7.5 /opt/hadoop-2.7.5_bak

3.2重新解压hadoop,这次我们将目录放在/ user / local下面

tar -zxvf /opt/hadoop-2.7.5.tar.gz -C /usr/local/

3.3修改解压后的目录中vi ./etc/hadoop/hadoop-env.sh修改器jdk目录 - 第一个文件

3.4修改解压后的目录中vi ./etc/hadoop/core-site.xml

<configuration>
<!--指定hdfs的命名空间 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://qf</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hahadoopdata/tmp</value>
</property>
<!--配置操作hdfs的缓冲大小-->
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
</configuration>

3.5修改解压后的目录中vi ./etc/hadoop/hdfs-site.xml

<configuration>
<!--块大小-->
<property>
  <name>dfs.block.size</name>
  <value>134217728</value>
</property>
<!--hdfs存储的元数据位置-->
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/home/hahadoopdata/dfs/name</value>
</property>
<!--hdfs的数据存放位置-->
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/home/hahadoopdata/dfs/data</value>
</property>
<!--指定hdfs的虚拟服务名-->
<property>
  <name>dfs.nameservices</name>
  <value>qf</value>
</property>
<!--指定hdfs的虚拟服务名下的namenode的名字-->
<property>
  <name>dfs.ha.namenodes.qf</name>
  <value>nn1,nn2</value>
</property>
<!--指定namenode的内部通讯地址-->
<property>
  <name>dfs.namenode.rpc-address.qf.nn1</name>
  <value>centos01:9000</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.qf.nn2</name>
  <value>centos02:9000</value>
</property>
<!--指定namenode的web ui通讯地址-->
<property>
  <name>dfs.namenode.http-address.qf.nn1</name>
  <value>centos01:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.qf.nn2</name>
  <value>centos02:50070</value>
</property>
<!--指定journalnode数据共享目录-->
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://centos01:8485;centos02:8485;MyLinux:8485/qf</value>
</property>
<!--指定namenode的失败进行自动切换的主类-->
<property>
  <name>dfs.client.failover.proxy.provider.qf</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
 
<!--是否开启namenode的失败进行自动切换的主类-->
<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
<!--指定两个active状态都存在时,杀死其中一个-->
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>
<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
 
<property>
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
</property>
<!--指定journalnode本地的数据共享目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/home/hahadoopdata/journal/data</value>
</property>
<!--指定zk的集群地址,用来协调namenode服务-->
<property>
  <name>ha.zookeeper.quorum</name>
  <value>centos01:2181,centos02:2181,MyLinux:2181</value>
</property>
 
</configuration>

3.6修改解压后的目录中vi ./etc/hadoop/slaves

centos01
centos02
MyLinux

3.7配置免登陆

(1)ssh-keygen -t rsa一路回车

(2)ssh-copy-id centos01

        ssh-copy-id centos02

        ssh-copy-id MyLinux

3.8远程发送配置好的Hadoop的到其他两台机器上去。

scp -r ../hadoop-2.7.5/ centos02:/usr/local/

scp -r ../hadoop-2.7.5/ MyLinux:/usr/local/

四,启动(预先关闭防火墙,或将所有用到的端口允许开启)

(1)启动三台 zkServer.sh start --也就是zookeeper

(2)启动 journalnode 利用 多个进程

(3)启动 namenode

(4)启动start-dfs.sh  

4.1启动ZK三台

zkServer.sh start启动

4.2进程启动

单个进程:./sbin/hadoop-daemon.sh start journalnode

多个进程:./sbin/hadoop-daemons.sh start journalnode

4.3选择任意一台名称节点来进行格式化(centos02)

(1)hdfs namenode -format

(2)启动名称节点。

./sbin/hadoop-daemon.sh start namenode

4.4在另外一台名称节点的机子上拉去元数据(也可以使用复制)

hdfs namenode -bootstrapStandby

或者,scp -r/home/hahadoopdata/dfs -C centos01:/home/hahadoopdata/

4.5格式化zkfc

hdfs zkfc -formatZK

4.6登录zk zkCli.sh查看节点。

4.7启动。./sbin/start-dfs.sh  

五,测试

5.1查看对应进程是否均已经启动。成功

5.2查看web ui是否正常启动成功  

5.3在HDFS读写中文件  成功

上传将本地的文件上传到hdfs文件系统中.hdfs dfs -put /home/test/a.txt /

5.4一个名称节点运行停止查看另一个能否自动启动  成功

(1)关闭centos01即处于活性的进程

(2)查看centos02的web ui            

(3)重新启动centos01 ./sbin/hadoop-daemon.sh start namenode

我们发现此时的centos01已经成为待待状态

很棒很棒~~完美完美~~

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
目录
相关文章
|
1月前
|
存储 监控 数据可视化
常见的分布式定时任务调度框架
分布式定时任务调度框架用于在分布式系统中管理和调度定时任务,确保任务按预定时间和频率执行。其核心概念包括Job(任务)、Trigger(触发器)、Executor(执行器)和Scheduler(调度器)。这类框架应具备任务管理、任务监控、良好的可扩展性和高可用性等功能。常用的Java生态中的分布式任务调度框架有Quartz Scheduler、ElasticJob和XXL-JOB。
415 66
|
28天前
|
数据采集 人工智能 分布式计算
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
阿里云推出的MaxFrame是链接大数据与AI的分布式Python计算框架,提供类似Pandas的操作接口和分布式处理能力。本文从部署、功能验证到实际场景全面评测MaxFrame,涵盖分布式Pandas操作、大语言模型数据预处理及企业级应用。结果显示,MaxFrame在处理大规模数据时性能显著提升,代码兼容性强,适合从数据清洗到训练数据生成的全链路场景...
75 5
MaxFrame:链接大数据与AI的高效分布式计算框架深度评测与实践!
|
7天前
|
小程序 前端开发 关系型数据库
uniapp跨平台框架,陪玩系统并发性能测试,小程序源码搭建开发解析
多功能一体游戏陪练、语音陪玩系统的开发涉及前期准备、技术选型、系统设计与开发及测试优化。首先,通过目标用户分析和竞品分析明确功能需求,如注册登录、预约匹配、实时语音等。技术选型上,前端采用Uni-app支持多端开发,后端选用PHP框架确保稳定性能,数据库使用MySQL保证数据一致性。系统设计阶段注重UI/UX设计和前后端开发,集成WebSocket实现语音聊天。最后,通过功能、性能和用户体验测试,确保系统的稳定性和用户满意度。
|
16天前
|
人工智能 分布式计算 大数据
MaxFrame 产品评测:大数据与AI融合的Python分布式计算框架
MaxFrame是阿里云MaxCompute推出的自研Python分布式计算框架,支持大规模数据处理与AI应用。它提供类似Pandas的API,简化开发流程,并兼容多种机器学习库,加速模型训练前的数据准备。MaxFrame融合大数据和AI,提升效率、促进协作、增强创新能力。尽管初次配置稍显复杂,但其强大的功能集、性能优化及开放性使其成为现代企业与研究机构的理想选择。未来有望进一步简化使用门槛并加强社区建设。
50 7
|
26天前
|
存储 测试技术 API
pytest接口自动化测试框架搭建
通过上述步骤,我们成功搭建了一个基于 `pytest`的接口自动化测试框架。这个框架具备良好的扩展性和可维护性,能够高效地管理和执行API测试。通过封装HTTP请求逻辑、使用 `conftest.py`定义共享资源和前置条件,并利用 `pytest.ini`进行配置管理,可以大幅提高测试的自动化程度和执行效率。希望本文能为您的测试工作提供实用的指导和帮助。
88 15
|
1月前
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
297 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
1月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
78 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
1月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
93 2
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
226 6
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
103 2