火灾背景:

Hadoop集群,4个节点,每一台配置都不一样

火灾现场:

1.突然发现DN4硬盘报警,检查硬盘,发现挂载如下:

/home 200GB

/home/data 3TB

然后发现datanode.data.dir=/home/data1,/home/data2,/home/data3,/home/data4,/home/data5

所以问题出来了:硬盘挂载和DataNode.dir不一致,空间浪费了,反而把/home撑爆了。

2.还有个现象:DN4数据盘挂载点是/home/data,DN2和DN3的挂载点是/home/data1

这个还不一致,为了datanode.data.dir配置一致,这个也需要解决

解决问题的考量:

1.如何保证HDFS现有数据不丢失?

想了好几种方法,都有一定概率造成datanode需要重装,那么数据如何保留?

因此第一步开始备份数据,找了个硬盘大的目录,直接将全部数据get到本地。(超慢,300GB数据用了近2小时)

2.如何保证DN2,DN3,DN4的硬盘挂载都用上,不浪费?

DN2的挂载:

/home 600GB

/home/data1 4TB

/home/data2 11TB

/home/data3 11TB

DN3的挂载:

/home 600GB

/home/data1 6TB

DN4的挂载:

/home 200GB

/home/data 2TB

存在几个问题:

1)DN4的挂载点是/home/data,和其他的/home/data1不一致

2)DN2的/home/data2,/home/data3如何不浪费?

因此使用了下面的方法:

DN2:在/home/data2中:

\cp -rp /home/data4 /home/data2/data4,rm -rf /home/data4,ln -s /home/data2/data4 /home/data4
\cp -rp /home/data5 /home/data3/data5,rm -rf /home/data5,ln -s /home/data3/data5 /home/data5

在DN3中:

\cp -rp /home/data2 /home/data1/data2,rm -rf /home/data2,ln -s /home/data1/data2 /home/data2
\cp -rp /home/data3 /home/data1/data3,rm -rf /home/data3,ln -s /home/data1/data3 /home/data3
\cp -rp /home/data4 /home/data1/data4,rm -rf /home/data4,ln -s /home/data1/data4 /home/data4
\cp -rp /home/data5 /home/data1/data5,rm -rf /home/data4,ln -s /home/data1/data5 /home/data5

在DN4中:

\cp -rp /home/data1 /home/data/data1,rm -rf /home/data1,ln -s /home/data/data1 /home/data1
\cp -rp /home/data2 /home/data/data2,rm -rf /home/data2,ln -s /home/data/data2 /home/data2
\cp -rp /home/data3 /home/data/data3,rm -rf /home/data3,ln -s /home/data/data3 /home/data3
\cp -rp /home/data4 /home/data/data4,rm -rf /home/data4,ln -s /home/data/data4 /home/data4
\cp -rp /home/data5 /home/data/data5,rm -rf /home/data5,ln -s /home/data/data5 /home/data5

3.datanode.data.dir配置到底应该怎么配?

目前datanode.data.dir=/home/data1,/home/data2,/home/data3,/home/data4,/home/data5

在完成了上面的软链接后,其实能发现这里已经不需要改了

总结注意事项:

1.进行本地目录软链接前,关闭集群服务,否则会出现找不到目录引起各种报错

2.拷贝目录其实可以换成mv,反而更方便。cp命令使用时,必须带p参数,保存属性,避免权限出错。

3.胆大心细,有了数据备份,最差就重装,有想法先实践

记录 一次深夜救火:datanode.data.dir的更多相关文章

  1. Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid)

    Hadoop Datanode节点无法启动(All directories in dfs.data.dir are invalid) java.io.IOException: All director ...

  2. hadoop datanode启动失败(All directories in dfs.data.dir are invalid)

    由于hadoop节点的磁盘满了,导致节点死掉,今天对其进行扩容.首先,将原节点的数据拷贝到目标节点下,从而避免数据的丢失,但是在执行hadoop_daemon.sh start datanode后没有 ...

  3. HDFS读写数据块--${dfs.data.dir}选择策略

    最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要 ...

  4. How to change data dir of mysql?

    # 1 copy orgin data dir of mysql to new one cp -R /var/lib/mysql /mysqldata chown mysql:mysql -R /my ...

  5. cassandra删除所有数据,重置为初始状态——删除<data dir>/data/* <data dir>/commitlog/* <data dir>/saved_caches/* 重启cassandra即可

    Are you looking for a method other than drop keyspace? Okay based on your clarification... I would s ...

  6. 记录一下我做Udacity 的Data Scientist Nano Degree Project

    做项目的时候看了别人的blog,决定自己也随手记录下在做项目中遇到的好的小知识点. 最近在做Udacity的Data Scientist Nano Degree Project的Customer_Se ...

  7. hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)

    本次是第一次在生产环境部署HBase,本文若有配置上的不妥之处还请高手指正. hadoop版本:hadoop-2.4.1 HBase版本:hbase-0.98.6.1-hadoop2 Zookeepe ...

  8. 懒人记录 Hadoop2.7.1 集群搭建过程

    懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...

  9. hadoop中datanode无法启动

    一.问题描述 当我多次格式化文件系统时,如 [hadoop@xsh hadoop]$ ./bin/hdfs namenode -format 会出现datanode无法启动,查看日志(/usr/loc ...

随机推荐

  1. @jsonProperty 实现返回自定义属性名字

    实现场景: 比如说前端需要返回userPic 这个字段,但是我们数据库定义的是pic字段. 可以用@jsonProperty 来实现 public class User{ @JsonProperty( ...

  2. Web API中给领域模型添加媒体类型支持

    一.媒体类型 媒体类型(也称为MIME类型)标识一段数据的格式.在HTTP中,媒体类型描述了消息体的格式.媒体类型由两个字符串组成,一个类型和一个子类型.例如:text / html: image/ ...

  3. Project facet Java version 1.8 not supported

    把其它的项目到自己的eclipse中后,进行运行项目之后,就会提示为“Project facet Java version 1.8 not supported”.   进行更改配置,进行右键项目就会弹 ...

  4. python -- leetcode 刷题之路

    第一题 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数. 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用. 示例: 给定 nums = [2, 7, 11, 15], tar ...

  5. mysql修改表结构语句

    mysql alter 用法,修改表,字段等信息   一: 修改表信息 1.修改表名 alter table test_a rename to sys_app; 2.修改表注释 alter table ...

  6. koa2学习笔记

    Koa -- 基于 Node.js 平台的下一代 web 开发框架 首先创建一个项目文件夹进行初始化 npm init -y 该命令执行后会生成一个package.json项目描述文件 安装koa n ...

  7. 026、一张图搞懂docker(2019-01-21 周一)

    参考https://www.cnblogs.com/CloudMan6/p/6961665.html    

  8. 细说tomcat之类加载器

    官网:http://tomcat.apache.org/tomcat-7.0-doc/class-loader-howto.htmlJava类加载与Tomcat类加载器层级关系对比 Java Clas ...

  9. 使用JAVA数组实现顺序表

    1,引入了JAVA泛型类,因此定义了一个Object[] 类型的数组,从而可以保存各种不同类型的对象. 2,默认构造方法创建了一个默认大小为16的Object数组:带参数的构造方法创建一个指定长度的O ...

  10. build script和all projects作用和区别

    buildscript中的声明是gradle脚本自身需要使用的资源.可以声明的资源包括依赖项.第三方插件.maven仓库地址等.而在build.gradle文件中直接声明的依赖项.仓库地址等信息是项目 ...