我想将包含所有数据和组件的hadoop服务器迁移到新服务器(更新版本的redhat)。
我在cloudera网站上看到有关如何移动名称节点的帖子, 但我不知道如何在没有数据丢失的情况下移动所有数据节点。 我们有复制因子2。 如果我一次关闭1个datanode,hdsfs会生成新的副本? 有没有办法一次迁移所有数据节点?将所有(大约20个服务器)数据节点传输到新集群的正确方法是什么?
此外,我想知道hbase是否会遇到同样的问题,或者我是否可以在新服务器上删除和添加角色
更新clearify:
我的Hadoop集群已经包含两组服务器(它们位于同一个hadoop集群中,我只是为了示例而逻辑分割它)
这两个集合都已经是共享数据和组件(namenode位于旧的服务器集合中)。 我想删除所有旧的服务器集,因此只有新的服务器集将保留在hadoop集群中。
执行是否应该像:
因为如果是这样,平衡器操作需要花费很多时间,整个操作将耗费大量时间。
同样的问题是针对hbase, 现在hbase区域和主服务器只在旧的服务器上,我想删除它并安装在新的服务器上,而不会丢失数据。
由于
答案 0 :(得分:0)
可以在不触及namenode的情况下自由添加新的Datanode。但你绝对不应该一次关闭多个。
例如,如果您选择两个服务器随机关闭,并且两个服务器都保存一个文件块,那么它就不可能在其他地方复制。因此,如果您重复使用相同的硬件,请一次升级一个。
在理想情况下,您的操作系统磁盘与HDFS磁盘分离。在这种情况下,您可以卸载它们,升级操作系统,重新安装HDFS服务,重新安装磁盘,一切都将像以前一样工作。如果您没有设置服务器的方式,则应在下次升级之前执行此操作。
为了将副本添加到任何新的数据节点,您需要1)增加复制因子或2)运行HDFS重新平衡器以确保副本在群集中混洗
我对Hbase不太熟悉,但我知道在安装该服务并将其迁移到其他服务器之前,您需要刷新区域服务器。但是如果你在没有重新平衡区域的情况下冲洗其中的大多数,那么你将拥有一个包含所有数据的服务器。我确定主服务器有类似的警告,虽然hbase backup
似乎是一个值得尝试的命令。
答案 1 :(得分:0)
@guylot - 添加新节点并运行平衡器进程后,通过退役过程将旧节点带出群集。退役过程会将数据移动到群集中的另一个节点。作为预防措施,一次只能在一个节点上运行。这将限制数据丢失事件的可能性。