先稍稍吐下与标题无关的事情。
少更了两周,原因是最近家里有点事,搬家忙死了。
上图是搬家的运动量,还是在请人帮忙搬的情况下。再加上去杭州,这个月的运动量感觉把之前一年的运动量都做完了。
搬家完后,又赶着去云栖大会,去杭州一个星期。
超简单地说下云栖大会心得:
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日志,可以看到有数据块正在挪动。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。