`
无尘道长
  • 浏览: 160760 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

迁移namenode

阅读更多

   由于hbase集群的namenode所在机柜需要尽快让出,因此需迁移namenode,旧nn的ip是0.238,新的ip是0.249,249服务器是之前老hbase集群的一个数据节点,由于基于hbase的应用的写入操作均是先写redis队列,再异步写hbase,并且我在停止hbase集群服务时不会停止zookeeper(zk停止服务后,client端重试机制会导致一个请求超过几十秒的等待),因此可以允许短暂的hbase服务停止,不会影响带来收入的充值业务,以下记录了整个迁移过程:

 

1、环境准备 

   1)创建hadoop用户(之前的hbase集群的root用户),并且把存放数据的/data/hdfs目录的所属用户给hadoop用户:chown -R hadoop:hadoop /data/hdfs,删除之前的内容 

  2)修改主机名与旧nn服务器的主机名称一样,注意如果配置有dns服务则主机名称不能相同,目前没有配置因此可以如此做,主机名称保持相同,可以只用修改hosts对应的ip地址即可,不用修改hadoop、hbase等相关的nn服务器的域名,修改后重启服务器

  3)从旧nn上copy hosts的内容到新nn上,并nn对应的ip改为新nn的ip

  4)配置ssh,端口与其它节点保持一致,改为2222,生成ssh钥匙对,并编辑authorized_keys文件,把snn和新nn的公钥均放置其中,并对该文件赋予600的权限:chmod 600 ~/.ssh/authorized_keys

  5)删除之前安装的jdk版本,重新安装于其它节点相同的jdk

 

2、配置新nn服务器的hadoop

  1)从旧nn服务器拷贝hadoop文件到新nn,保持目录结构相同

  2)配置hadoop用户的环境变量:vi  /home/hadoop/.bash_profile,配置java、hadoop的home和path

  3)删除hadoop目录下的tmp、logs文件内容

  4)检查core-site.xml、hdfs-site.xml、masters、slaves、hadoop-env.sh文件的配置,如果不合理,此时可以借机修改

 

3、配置新nn服务器的hbase

  1)从旧nn服务器拷贝hbase文件到新nn,保持目录结构相同

  2)配置hadoop用户的环境变量:vi  /home/hadoop/.bash_profile,配置hbase的home和path

  3)删除hbase目录下的tmp、logs文件内容

  4)检查hbase-site.xml、hbase-env.sh、regionservers文件的配置,如果不合理,此时可以借机修改

 

4、检查hadoop和hbase的所有节点的配置文件,如果有不合理的地方,可以借此重启的机会修改,注意就nn也需要修改,万一迁移失败要回滚还需要启动旧nn

 

5、提前准备好计划执行的命令:

  1)停止hbase(在旧nn服务器上执行):hbase-daemons.sh stop regionserver   hbase-daemon.sh stop master,停止nn服务器的zk:hbase-daemon.sh stop zookeeper(由于之前负责hbase的同事配置了4个zk,因此可以停止nn的zk,只需要其它三个即可)

  2)停止hdfs(在旧nn服务器上执行): stop-dfs.sh   stop-mapred.sh,由于之前维护hbase的同学对hbase进行了扩容,但是扩容时没有修改把其它节点的slaves文件里添加新节点的主机名称,因此导致stop时遗留了一台服务器,可以手动kill

  3)Copy nn的元数据目录到新nn服务器:

在旧nn上执行:

scp -P 33312 -r /data/hdfs/dfs/name Wang_Neng@192.168.0.249:/tmp/hadoop_name

在新nn上执行(注意:需提前打开一个root用户登录的新nn服务器终端,以便执行如下命令):

mv /tmp/hadoop_name/* /data/hdfs/dfs/name/

chown -R hadoop:hadoop /data/hdfs/

  4)启动hdfs(在新nn上执行):start-dfs.sh

  5)启动hbase(在新nn上执行):

  hbase-daemon.sh start master

  hbase-daemons.sh start regionserver

 

6、打开一个新的xshell终端,在该终端中打开所有的hbase集群的节点(除旧nn),以root用户登录,打开每个服务器的hosts文件,vi编辑,把旧nn的ip换成新nn的ip,修改完后,先不保存,等停止hadoop、hbase后再保存,避免对停止服务器产生影响

 

7、打开一个新的xshell终端,在该终端中打开所有的hbase集群的节点(除旧nn),以hadoop用户登录,打开每个服务器的/home/hadoop/.ssh/authorized_keys文件,vi编辑,把旧nn的ssh公钥换成新nn的公钥,修改完后,先不保存,等停止hadoop、hbase后再保存,避免对停止服务器产生影响

 

8、准备工作准备完后按照步骤5的子步骤进行操作,当执行完3)步后,一定要检查一下新nn的元数据文件大小是否正确,确保无误,然后保存第6步骤修改的host,保存第7步骤修改的ssh文件,并且需要手动在新snn上ssh访问一下snn和数据节点,否则会导致启动hdfs时出现ssh问题

 

9、启动hdfs

10、启动hbase的master、regionserver

11、在停止hbase服务后需在启动hbase前完成hbase客户端应用所在服务器的hosts文件的修改,该工作需要其他同事支持,并行操作

12、修改nginx配置,把hbase的master监控页面的server修改为新nn的ip,自此迁移完成。

 

注意:迁移前需先进行迁移演练,在迁移前准备好需要执行的脚步、配置文件等,并做好迁移失败的准备。

 

后记:本计划2分钟完成,实际上花了12分钟,究其原因,有两点:

1、高估了操作的速度,和停止、启动hbase、hdfs的时间

2、过于乐观或者经验不足,在迁移的过程中遇到了一些问题,一一呈列如下:

  a)原hbase维护者在扩容时,相关配置没有修改彻底,导致无法在nn节点停止扩容的数据节点,花了时间查问题、手动kill、并完善配置 ----------迁移前应该彻底检查每台服务器的所有配置,尤其是nn的每个配置

  b)ssh配置好后,必须先手动访问,并选择yes,把访问记录添加到known_hosts中,避免多次启动--------线上业务分秒必争

  c)拷贝元数据时,由于在第5步提前准备命令时在新nn服务器上产生了临时的元数据,迁移前忘了清除,导致在迁移过程中copy元数据出现覆盖提示,为确保万无一失,删除后又进行了重copy,随着迁移的时间推移,各种应用开始报警,在高度紧张的情况下出现了一次copy错误,总共copy了三次元数据 ---------迁移前一定要检查每一个环节是否到位,最好在迁移前再按照事前准备的步骤推演一次

  d)有一个节点的配置文件配置错了,不符合xml格式,导致启动失败,其实这个问题是在配置完nginx可以看到hbase监控页面后才发现有一个节点没有起来,发现时已经是几分钟之后了,在启动时居然没有发现有一个节点没有起来,呵呵,过于紧张,没办法,在我们公司hbase是提供在线核心数据服务的数据库,很多关键业务均依赖它 ---------没有配置文件管理工具则只能细致又细致。

 

  还好,除了迁移时间长一些,没有其它问题,由于写是先写redis队列,部分业务的读是先读redis,因此对收入没有影响,对用户体验略有影响,其实如果不着急,应该在半夜业务低峰时处理最好,当然如果那样则会有一堆人陪我熬夜了,嘿嘿。

 

分享到:
评论

相关推荐

    hadoop集群安装、配置、维护文档

    5. **迁移namenode节点.txt**: 名Node是Hadoop HDFS的主要元数据管理节点,其迁移可能涉及备份现有NameNode的数据,配置新的NameNode服务器,执行格式化操作,更新集群的配置文件,以及将备份数据恢复到新节点。这...

    hadoop版本迁移(不损失数据和用户信息等)

    以下是一个详尽的Hadoop版本迁移步骤,确保数据完整性的同时进行版本升级。 首先,确保在迁移前备份所有重要数据。这包括HDFS的元数据(如fsimage文件),以及用户数据、配置文件等。fsimage文件包含了HDFS的所有...

    RDBMS到Hadoop的迁移方案.pptx

    Hadoop的HDFS(Hadoop Distributed File System)提供了这种解决方案,通过NameNode和DataNode实现数据的分布式存储,可以动态扩展,同时元数据管理确保数据定位的高效。 2. **处理问题**:烹饪不过来的比喻意味着...

    基于HDFS+FTP的文件存储与迁移实验代码.zip

    在本实验中,我们将探讨如何利用Hadoop的分布式文件系统(HDFS)和FTP协议进行文件的存储与迁移。这个"基于HDFS+FTP的文件存储与迁移实验代码.zip"包含了一个名为"HDFS_FTP_ForMyProject-master"的项目源码,这为...

    SQL-DFS:一种基于HDFS的海量小文件存储系统.pdf

    入小文件处理模块实现了小文件元数据由 NameNode 内存到元数据存储集群的迁移,借助关系数据库集群实现了小文件元数据的快速读写,并对小文件读取过程进行化,减少了文件客户端对 NameNode 的请求次数;通过将部分 ...

    SQL-DFS:一种基于HDFS 的海量小文件存储系统

    通过在NameNode 中加入小文件处理模块实现了小文件元数据由NameNode 内存到元数据存储集群的迁移,借助关系数据库集群实现了小文件元数据的快速读写,并对小文件读取过程进行优化,减少了文件客户端对NameNode 的请求...

    罗李:构建一个跨机房的Hadoop集群

    - 对于大规模数据迁移,需要利用像FastCopy这样高效的数据迁移工具,虽然它比distcp更快且不需要物理拷贝,但仍然需要注意迁移过程的资源消耗和时间成本。 - 在保证用户透明度方面,可能需要实现一些高级的调度和...

    hadoop配置.zip

    本压缩包文件"hadop配置.zip"提供了一个简单的Hadoop高可用性(HA)配置参考,特别针对NameNode的迁移。以下是对配置过程的详细说明: 一、Hadoop HA概述 Hadoop HA主要通过在两个不同的节点上设置NameNode的热备来...

    Hadoop HA配置

    3. 进行Hadoop从非HA集群向HA集群迁移时,可以重用之前secondarynamenode节点的硬件资源。 九、总结 Hadoop HA配置通过引入双NameNode和仲裁日志节点,有效地解决了单点故障问题,极大提升了集群的稳定性和可靠性。...

    揭秘大数据存储基石HDFS-理论篇.pptx_揭秘大数据存储基石HDFS_pptx_

    NameNode监控DataNode的状态,当发现某个DataNode故障时,会自动将该节点上的数据块副本迁移到其他健康的DataNode上。同时,副本的自动复制机制也能确保即使在部分节点故障的情况下,数据仍然可以被访问。 ### 6. ...

    Hadoop的最新进展.

    为了克服NameNode单点故障问题,社区提出了HDFS Federation和AvatarNameNode解决方案,其中Federation允许数据跨越多个独立的命名空间,而AvatarNameNode则提供了NameNode的高可用性,确保在主NameNode失败时,备...

    Hadoop3以及高可用HA搭建方式.zip

    在IT行业中,Hadoop是一个广泛使用的开源框架,用于存储和处理大数据。Hadoop3是其最新版本,...在实际应用中,还需要考虑网络配置、安全性、数据迁移策略等复杂因素。因此,持续学习和实践是掌握Hadoop3 HA的关键。

    安装笔记:hadoop+hbase+sqoop2+phoenix+kerberos

    SecondaryNameNode则定期与NameNode同步,以防NameNode故障时的数据恢复。 YARN则负责资源调度,包括ResourceManager和NodeManager。ResourceManager全局管理计算资源,NodeManager则是每个节点上的工作进程,负责...

    Hadoop分布式文件系统结构与设计中文.pdf

    NameNode和DataNode的软件可以在运行Java的任何机器上部署,但通常NameNode会单独在一台机器上运行,以避免影响整个系统的元数据管理。 HDFS支持类似于传统文件系统的目录结构,允许创建、删除和重命名文件及目录,...

    hadoop高可用搭建文档

    升级或迁移时,务必查阅官方文档,了解具体改动。 通过以上步骤,你可以成功搭建一个适用于生产环境的Hadoop高可用集群,确保系统的稳定性和可靠性。记住,良好的监控和维护是保持Hadoop HA的关键。

    Hadoop_硬件HA_配置

    在NameNode之间进行手动切换,观察系统是否能够无缝地在两台服务器之间迁移服务。同时,监控DataNode和其他服务的行为,确保整个Hadoop集群的稳定性不受影响。 总结来说,配置Hadoop硬件HA涉及多方面的步骤,包括...

    Hadoop源代码分析

    2. **心跳机制**:DataNode定期向NameNode发送心跳信号,报告自身的健康状况和数据块状态,同时也接收NameNode的指令。 3. **数据块管理**:DataNode管理本地存储的数据块,包括创建、删除、复制等操作。数据块通常...

Global site tag (gtag.js) - Google Analytics