您的位置:首页 > Web前端 > Node.js

Hadoop迁移namenode

2014-01-22 15:08 239 查看
由于集群中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中的配置.

<property>
<name>dfs.namenode.name.dir</name>
<value>file:/hadoop/name</value>
<final>ture</final>
</property>


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



这里是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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: