云存储技术:HBase HDFS 无感知迁移方案

news2024/11/15 17:34:46

在大数据生态系统中,HBase 和 HDFS 是两个关键组件。HBase 是一个分布式列式数据库,常用于实时读写大规模数据;HDFS 是一个高可靠的分布式文件系统,用于存储海量数据。

8f785ac92f440c371a589850f05512ec.png

1、背景

随着业务的发展和技术的进步,可能需要对现有的HBase/Hadoop集群进行迁移,或是因为各种原因(如成本控制、硬件升级、地理位置调整等)进行机房搬迁。这样的操作不仅涉及到大量的技术细节,还需要考虑业务连续性和数据一致性等关键因素。

2、重难点

在集群迁移过程中,为了避免HDFS NameNode的单点故障风险,并增强系统的高可用性和容错能力,HDFS需要采用多NameNode(MultiNN)架构。在这一架构下,至少需要三个及以上的NameNode节点来确保在替换和迁移过程中,能够无缝地进行NameNode的切换和迁移,从而实现服务的不间断运行。

3、涉及迁移的角色

公共服务

  1. ZooKeeper:5台

HBASE

  1. HMaster:1台

  2. HRegion Server:n台

  3. HBase thrift-Server:n台

HDFS

  1. NameNode【重点】:2台HA

  2. JN:5台

  3. DFS-Router:2台

  4. ZKFC:2台

4、迁移流程

e0abe9cd6eb1cb05bd0fa1d76ae2df91.png

step1: 扩容ZK

预备知识:

  1. zk节点dead过半后,如果leader down掉,将无法选主

  2. zk集群如果无法选主,HBase集群服务将彻底挂掉

  3. 如果zk只剩下leader存活,其他follower全部宕机,hbase服务正常

扩容步骤:

  1. 扩容新集群的7台zk到原zk集群

说明:采取5台old+7台new方式进行扩容,因为如果5+5扩容,双数10台实际效果等于9台,扩容完毕后,再次缩容的时候就有风险了,因为dead过半了 一旦leader挂了就没法选主了。扩成成5+7后,这样就算第二轮关闭原来5台节点,新leader挂了也可以容错选主;主要操作成本在于让hbase识别扩容后的zk集群,需要重启生效。

step 2: JournalNode扩容

扩容步骤(扩入新集群的5台JN):

  1. 修改配置文件:在所有 NameNode(包括 nn1nn2)以及所有 JournalNode 上编辑 hdfs-site.xml 配置文件,以新增的 JournalNode 配置信息。

  2. 依次重启 JournalNode:逐一重启每一个 JournalNode 实例,确保在重启下一个 JournalNode 之前,当前重启的 JournalNode 已经处于稳定状态。

  3. 重启 NameNode 并切换角色:首先重启处于 Standby 模式的 NameNode,随后通过操作命令进行主备切换,之后再重启另一个 NameNode,以此来确保新的 JournalNode 配置被主 NameNode 所识别并使用。

说明:为保证JounalNode的高可用,需要先扩容后再缩容,避免单点风险(3台old+5台new 类似于上述zk)。

step 3: 迁移NN主节点

预备知识:机房搬迁/集群迁移,只要是涉及到换HDFS主节点,就不可避免的会带来单点风险,为了保证底层存储服务的稳定性,数据的一致性,必须随时保证有两个及以上的主节点可以正常提供服务,需要新增多NN(一主多备)的功能。

dd300c53f90e302f68ca0b5d304d2802.png

扩容步骤:

  1. 修改HA配置,添加在新集群上的Standby节点

  2. 拷贝老standby节点的fsimage editlog到新节点对应目录(整个namenode目录)

  3. 将三个节点的相关配置更新到所有的DataNode节点上,并refresh使配置生效

  4. 观察所有DataNode节点是否能成功汇报至新增Standby节点,fsimage是否能从两个Standby节点向Active节点成功更新

  5. 重复上述步骤,将所有NameNode都更新为新集群的节点,完成HDFS主节点的迁移

说明:通过上述步骤将可用NameNode个数随时保证在2个及以上,避免单点风险。

step 4: 迁移DN数据节点

迁移步骤:

  1. 扩容新集群的DN节点到该集群

  2. 采用decommission将老集群的DN节点逐步下掉(数据自动挪到新机器上)

说明:Decommission占用DN自身的带宽进行数据的迁移,不占用额外的计算资源。

step 5: RegionServer滚动重启

重启步骤:(换机器灰度重启)

  1. 新机器上新增hadoop客户端相关的HA配置(有router的话,可以配置router地址进行解析)

  2. 新机器上修改扩容后zk相关配置

  3. 逐步启动新机器的RS服务,观察服务是否能正常稳定运行

  4. 逐步停掉老机器的服务,并观察服务是否正常,若出现问题,立刻回滚

step 6: 替换HBase Master节点

预备知识:HBase Master负责一些周期性的清理工作,负载均衡,元数据操作;短时间无法提供服务是不会影响线上的请求的。

替换步骤:

  1. 新机器上新增hadoop客户端相关的HA配置(有router的话,可以配置router地址进行解析),并修改扩容后zk相关配置

  2. 停老机器上的Master服务

  3. 启动新机器的Master服务

  4. 观察服务是否正常,若出现问题,立刻回滚

step 7: zk缩容

缩容后只留下5台新集群的zk节点,并修改NameNode,DataNode,HMaster,RegionServer服务上的相关配置。

step 8: JournalNode缩容

缩容后只留下5台新集群的JN节点,并修改NameNode上相关的配置。

step 9: RegionServer滚动重启

滚动重启步骤:

  1. 依次将rs上的region无缝分配到其他机器,将rs挪到其他RSGroup中,业务几乎无感知

    move_servers_rsgroup 'dest',['server1:port']
  2. 待rs上所有region都分配到其他机器上,可以重启机器,使新配置生效

  3. 最后将重启完的rs挪回原来的RSGroup,集群负载均衡后,即可正常提供服务

step 10: 重启所有NameNode节点并切换主备
升级遇到可优化问题
1. refresh node for DN

(1)执行refresh node,对于老的ns,是否应该区别对待,只向新建立ns进行汇报,减少汇报开销

(2)执行refresh node生效标志,目前是异步非阻塞执行,判断成功标志成本很高,是否应该做成同步阻塞执行

关键DN日志标志着命令生效:

  • refresh命令生效:Refresh request received for nameservices

  • 开始为某台NN提供Block pool服务:starting to offer service

  • 开始与NN挥手建联:beginning handshake with NN

标志着子流程阶段性成功:

  • 成功注册到NN:successfully registered with NN

标志着refresh导致DN异常

  • 根本性配置错误:Invalid host name: local host is: (unknown); destination host is

  • 根本性配置错误:Namenode for *** remains unresolved for ID null

  • 【重点校验】偶发性错误,初始化注册block pool失败:Initialization failed for Block pool <registering>

2. 部分命令失效

前提:hdfs://xxxxx域名解析到router的lvs

(1)fsck失败,因为fsck访问hdfs://xxxxx:50070端口转向NN的web port,需要lvs上加上web端口解析

(2)升级后getReplicatedBlockStats方法不生效的原因是该方法走了hdfs://xxxxx域名,但是我们把他做成了router域名,在router实现上该方法没有支持, 所以暂时无法使用 ~/software/hadoop/bin/hdfs dfsadmin -report -live

解决办法:HDFS-14714. RBF: implement getReplicatedBlockStats interface. Contributed by Chen Zhang.

(3)同上,balance也无法工作:org.apache.hadoop.ipc.RemoteException(java.lang.UnsupportedOperationException): Operation "isUpgradeFinalized" is not supported

(4)balance执行中方法解析uri中"_"是非法的导致无法启动

2024-05-30 02:00:46,832 ERROR org.apache.hadoop.hdfs.server.balancer.Balancer: Exiting balancer due an exception
java.lang.IllegalArgumentException: Illegal character in hostname at index 10: hdfs://xxxxx
        at org.apache.hadoop.hdfs.DFSUtil.createUri(DFSUtil.java:1232)
        at org.apache.hadoop.hdfs.DFSUtil.getNameServiceUris(DFSUtil.java:820)
        at org.apache.hadoop.hdfs.DFSUtil.getInternalNsRpcUris(DFSUtil.java:791)
        at org.apache.hadoop.hdfs.server.balancer.Balancer$Cli.run(Balancer.java:820)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:76)
        at org.apache.hadoop.hdfs.server.balancer.Balancer.main(Balancer.java:968)
        
备注:要留意hadoop-work-balancer-***.out中的日志

更多产品和技术文章,敬请关注👆

360智汇云是以"汇聚数据价值,助力智能未来"为目标的企业应用开放服务平台,融合360丰富的产品、技术力量,为客户提供平台服务。

目前,智汇云提供数据库、中间件、存储、大数据、人工智能、计算、网络、视联物联与通信等多种产品服务以及一站式解决方案,助力客户降本增效,累计服务业务1000+。

智汇云致力于为各行各业的业务及应用提供强有力的产品、技术服务,帮助企业和业务实现更大的商业价值。

官网:https://zyun.360.cn

客服电话:4000052360

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1996903.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HDMI vs DP:LED显示屏背后的高清传输大揭秘

在如今数字化高速发展的时代&#xff0c;LED显示屏以其高亮度、高清晰度、长寿命等优点&#xff0c;广泛应用于广告、会议、娱乐等多个领域。然而&#xff0c;要让这些绚丽多彩的画面完美呈现&#xff0c;离不开背后默默工作的接口技术。今天&#xff0c;我们就来揭开LED显示屏…

前端react集成OIDC

文章目录 OpenID Connect (OIDC)3种 授权模式 【服务端】express 集成OIDC【前端】react 集成OIDCoidc-client-js库 原生集成react-oidc-context 库非组件获取user信息 OAuth 2.0 协议主要用于资源授权。 OpenID Connect (OIDC) https://openid.net/specs/openid-connect-core…

【安当产品应用案例100集】007-工业控制系统防勒索解决方案-安当RDM防勒索

《工业控制系统网络安全防护指南》是由工业和信息化部于2024年1月19日发布&#xff0c;旨在指导企业提升工业控制系统网络安全防护水平&#xff0c;确保新型工业化发展的安全根基。该指南适用于使用和运营工业控制系统的企业&#xff0c;包括但不限于可编程逻辑控制器&#xff…

【生成式人工智能-十-文字、图片、声音生成策略】

人工智能生成文字、图片、声音的方法 生成的本质生成的策略文字AR (Autoregressive Generation)图像和视频 NAR(Non-Autoregressive Generation)解决NAR生成品质低的问题 AR NAR 生成的本质 文字、图像、声音的生成的本质&#xff0c;就是给模型一个输入&#xff0c;模型把基…

大模型应用中的幻觉问题是什么?

大模型应用中的幻觉问题是什么&#xff1f; 在现代自然语言处理领域&#xff0c;大语言模型&#xff08;如GPT系列&#xff09;以其惊人的生成能力和语言理解能力被广泛应用。然而&#xff0c;随着这些模型的广泛使用&#xff0c;幻觉问题逐渐显现出其对实际应用的潜在影响。本…

怎样快速查询数家公司是否存在关联关系?

▶关联关系的查询是企业稳健运营和长期发展的关键环节 企业在关键时期需要查询数家公司是否存在关联关系&#xff0c;以确保合规性和透明度。这通常发生在年度审计、税务申报、并购活动、上市准备、风险评估和法律诉讼时。监管合规性检查、内部控制加强、市场策略制定、资金管…

加速区域市场扩张,ATFX任命Amer Zino为中东和北非业务发展总监

全球领先的差价合约经纪商ATFX再度向世界展示了其吸纳行业顶尖复合型人才的决心和能力。日前&#xff0c;ATFX旗下机构业务ATFX Connect宣布一项重磅人事任命&#xff0c;行业杰出领袖Amer Zino加入公司&#xff0c;出任中东和北非业务发展总监一职&#xff0c;并将常驻工作地阿…

【ARM】ULINK Pro如何和SWD接口进行连接调试

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决ULINK Pro和JTAR接口进行连接问题。 2、 问题场景 因为ULINK Pro本身自带的接口是Cortex-M ETM Interface 20-pin Connector。所以无法和JTAR接口直接进行连接。 图2-1 3、软硬件环境 1&#xff09;、软件版…

综合交易系统---强大的问财自定义实盘交易系统上线

这几天知识星球的朋友的需要&#xff0c;我重新写了问财自定义实盘交易系统&#xff0c;同时把数据库上线了&#xff0c;网页 https://gitee.com/li-xingguo11111/xg_data 调用网页的源代码数据服务器地址 http://124.220.32.224:8888/ 问财实盘设置&#xff0c;打开总结交易系…

【从零开始一步步学习VSOA开发】VSOA数据报

VSOA数据报 概念 Datagram 是 VSOA 的一种数据传输类型&#xff0c;通常这种类型用于传输一些不需要确认的数据&#xff0c;例如传输视频流数据或构建 VPN 网络。 Datagram 可以简单快速的在网络中传输数据。它即不需要建立连接&#xff0c;也不需要维护连接&#xff0c;因此…

GESP 一级 比赛

出错了 - 洛谷https://www.luogu.com.cn/contest/190441#problems 邀请码&#xff1a;zura 有讲解哦&#xff01;

SCAU学习笔记 - 高级语言程序设计课后习题

写在前面 趁着暑假赶紧把C语言的习题也补了 也欢迎看到这篇博客的小灯们来到华南农业大学喵 专栏里还有后续其他部分课程的学习笔记 如何提交自己的代码 首先给各位说一下这门课程的要求&#xff0c;首先是我们学校的校内OJ&#xff0c;我们计算机类专业的学生用的是前面这个…

突破 ES 引擎局限性在用户体验场景中的优化实践

回顾&#xff1a;ES 慢上游响应问题优化在用户体验场景中的实践-CSDN博客 上文介绍了用户体验管理平台&#xff08;简称 VoC&#xff09;在针对 ES 慢上游响应场景下的优化实践&#xff0c;本文继续介绍针对第二个痛点问题——ES 引擎局限性的性能优化实践进行介绍。 下文以搜…

MaxKB:基于 LLM大语言模型的知识库问答系统实操

1.MaxKB介绍 MaxKB 是一款基于 LLM&#xff08;Large Language Model&#xff09;大语言模型的知识库问答系统。MaxKB 的产品命名内涵为 “Max Knowledge Base”&#xff0c;为用户提供强大的学习能力和问答响应速度&#xff0c;致力于成为企业的最强大脑。与同类基于 LLM 的知…

数值分析【4】

目录 ​编辑第六章 数值积分微分 龙贝格 高斯求积 查表&#xff1f; 插值求导 两点 ​编辑 三点​编辑 第七章 ode 龙哥库塔 线性多步法 第八章 eig 幂法&#xff1a;v-》Av-》AAv-》……​编辑 反幂法 每次成得是A逆&#xff0c;这样得到摸最小的特征值​编辑 Q…

【IEEE独立出版】第四届计算机科学与区块链国际学术会议 (CCSB 2024)

第四届计算机科学与区块链国际学术会议 (CCSB 2024) 2024 4th International Conference on Computer Science and Blockchain 2024年9月6-8日 中国-深圳 老牌会议 | 涵盖计算机学科 | 往届均完成见刊、稳定检索 | 论文录用速度快 | 有ISBN号! *关于IEEE出版社 电气电子工…

使用ant design的modal时,发现自定义组件的样式(组件高度)被改变了!

一 问题描述 在项目中&#xff0c;自定义了一个组件&#xff0c;分别在界面和 antd的modal中都有使用到。但是突然发现&#xff0c;界面中的组件样式跟modal中的组件样式高度不一样。modal中的组件整体要比页面中的组件要高一点。 项目中的自定义组件比较复杂&#xff0c;因此&…

C#使用Puppeteer

Puppeteer Puppeteer是一个Node.js库&#xff0c;它提供了高级API来通过DevTools协议(Chrome DevTools Protocol https://devtools.chrome.com)控制Chrome或Chromium。 Puppeteer默认情况下无头运行(headless)。 可以配置为运行完整的Chrome或Chromium&#xff0c;运行效果如…

【中项】系统集成项目管理工程师-第11章 项目范围管理-11.2收集需求

前言&#xff1a;系统集成项目管理工程师专业&#xff0c;现分享一些教材知识点。觉得文章还不错的喜欢点赞收藏的同时帮忙点点关注。 软考同样是国家人社部和工信部组织的国家级考试&#xff0c;全称为“全国计算机与软件专业技术资格&#xff08;水平&#xff09;考试”&…

开源AI搜索平台Search4All

什么是 Search4All &#xff1f; Search4All 是个人 AI 搜索协助工具&#xff0c;是 Perplexity 的开源替代品。能让你的 LLM API 支持联网&#xff0c;搜索、新闻、网页总结&#xff0c; 软件特点&#xff1a; 集成对 LLM 的支持&#xff0c;例如 OpenAI、Groq 和 Claude。本…