Hadoop迁移namenode


由于集群中namenode节点的资源太小,想将其中一个datanode跟namenode互换。集群中还安装有hive,impala,主要修改三个地方:

1. namenode元数据

2. hive数据库

3. 将hadoop和hive的配置文件同步到impala


一、namenode元数据

NameNode主要被用来管理整个分布式文件系统的命名空间(是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以,NameNode会持久化这些数据(保存到本地的文件系统中),操作日志保存在edits中。当NameNode启动时,会从镜像文件 fsimage 中读取HDFS的状态,并且把edits文件中记录的操作应用到fsimage,也就是合并到fsimage中去。合并后更新fsimage的HDFS状态,创建一个新的edits文件来记录文件系统的变化。fsimage和 edits就是namenode的元数据。这些数据datanode是没有的,所以迁移的时候要把这些文件copy过去。

看下hafs-site.xml中的配置.



    dfs.namenode.name.dir
    file:/hadoop/name
    ture
 

配置edits和fsimage的存储路径,edits.dir这里没有配置,默认路径在哪可以看 http://master:50070 :


Hadoop迁移namenode_第1张图片


这里是image和edits日志文件在同一个目录下。/hadoop/name有 current目录,里面就是一堆的fsimage和edits文件。


将 /hadoop/name 复制到新的namenode节点,关闭集群,更新slaves,hdfs-site.xml ,core-site.xml,重启集群。


测试hadoop是否可用。


二、Hive元数据

        我的hive元数据库是mysql,看到表SDS和DBS的DB location字段,是写死的,记录了hive warehouse的路径 ,如: hdfs://master/user/warehouse,需要将其更新

为新的 master节点。


    

update DBS set DB_LOCATION_URI=REPLACE(DB_LOCATION_URI,'old host','new host');
update SDS set LOCATION=REPLACE(LOCATION,'old host','new host');

如果hive有起metastore , hiveserver,重启之。


三、修改impala


   将hadoop和hive的配置文件同步到impala,重启impala


你可能感兴趣的:(Hadoop迁移namenode)