先稍稍吐下与标题无关的事情。
少更了两周,原因是最近家里有点事,搬家忙死了。

clipboard.png

上图是搬家的运动量,还是在请人帮忙搬的情况下。再加上去杭州,这个月的运动量感觉把之前一年的运动量都做完了。

搬家完后,又赶着去云栖大会,去杭州一个星期。
超简单地说下云栖大会心得:

1.无处不在的人脸识别
2.个人觉得商汤的人工智能很屌,很多例子,而其他公司讲PPT
3.科技展对于一线城市的码农来说,大部分没用过,起码网上也听过看过,没多少让人眼前一亮的东西
4.科研或教授的讲座,我就觉得含金量很高。公司的讲座,那就...
5.嗯,有美女

ok!转入正题:

背景

原本有5台服务器

s1.jc.com,namenode,resourcemanager,
s2.jc.com,namenode,datanode,nodemanager,
s3.jc.com,resourcemanager,datanode,nodemanager,journalnode,
s4.jc.com,datanode,nodemanager,journalnode,
s5.jc.com,datanode,nodemanager,journalnode,

现在增加3台机器

s6.jc.com,datanode,nodemanager,
s7.jc.com,datanode,nodemanager,
s8.jc.com,datanode,nodemanager,

增加3台机子后,当数据同步完成,且业务正常跑后,因为成本问题,且s4,s5硬盘太小。需要将s4,s5服务器释放。

那么问题来了,s4,s5上跑有journalnode,因为journalnode是做日志节点,用于两个namenode的failover。

所以需要处理journanode的数据,并且新集群中,还是一样得要有3个journalnode
所以新的集群结构是

s1.jc.com,namenode,resourcemanager,
s2.jc.com,namenode,datanode,nodemanager,
s3.jc.com,resourcemanager,datanode,nodemanager,journalnode,
s6.jc.com,datanode,nodemanager,journalnode,
s7.jc.com,datanode,nodemanager,journalnode,
s8.jc.com,datanode,nodemanager,

过程

Hadoop版本hadoop-2.7.3
全程跟yarn没关系,所以resourcemanager和nodemanager都可以不动

关闭必要的进程

此次实践过程中,我只关闭了namenode和journalnode,其他datanode和yarn都没关

关闭两个namenode

在两台namenode运行

hadoop-daemon.sh stop namenode

实在stop不了可以kill -9

关闭三个journalnode

在三台journalnode运行

hadoop-daemon.sh stop journalnode

实在stop不了可以kill -9

修改

修改hdfs-size.xml配置文件

理论上只需要修改两个namenode和每个journalnode节点的hdfs-site.xml
原hdfs-site.xml

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://s4.jc.com:8485;s5.jc.com:8485;s3.jc.com:8485/ns</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/hadoopDataDir/journal</value>
    </property>

新hdfs-site.xml

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://s6.jc.com:8485;s7.jc.com:8485;s3.jc.com:8485/ns</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/data/hadoopDataDir/journal</value>
    </property>

复制原journalnode数据

将s4服务器的/data/bigdata/hadoopDataDir/journal复制至s6和s7服务器

scp -r /data/hadoopDataDir/journal jc@s6.jc.com:/data/hadoopDataDir/
scp -r /data/hadoopDataDir/journal jc@s7.jc.com:/data/hadoopDataDir/

启动

启动journalnode节点

在s3,s6,s7服务器启动journalnode

hadoop-daemon.sh start journalnode

需看日志是否启动正常

启动namenode节点

在s1,s2节点启动namenode

hadoop-daemon.sh stop namenode

此时就能访问hdfs的web界面看是否启动正常,另外在命令行看namenode日志,可以看到有数据块正在挪动。


电脑杂技集团
208 声望32 粉丝

这家伙好像很懂计算机~