记录 一次深夜救火:datanode.data.dir
火灾背景:
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的更多相关文章
- 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 ...
- hadoop datanode启动失败(All directories in dfs.data.dir are invalid)
由于hadoop节点的磁盘满了,导致节点死掉,今天对其进行扩容.首先,将原节点的数据拷贝到目标节点下,从而避免数据的丢失,但是在执行hadoop_daemon.sh start datanode后没有 ...
- HDFS读写数据块--${dfs.data.dir}选择策略
最近工作需要,看了HDFS读写数据块这部分.不过可能跟网上大部分帖子不一样,本文主要写了${dfs.data.dir}的选择策略,也就是block在DataNode上的放置策略.我主要是从我们工作需要 ...
- 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 ...
- 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 ...
- 记录一下我做Udacity 的Data Scientist Nano Degree Project
做项目的时候看了别人的blog,决定自己也随手记录下在做项目中遇到的好的小知识点. 最近在做Udacity的Data Scientist Nano Degree Project的Customer_Se ...
- hbase centOS生产环境配置笔记 (1 NameNode, 1 ResourceManager, 3 DataNode)
本次是第一次在生产环境部署HBase,本文若有配置上的不妥之处还请高手指正. hadoop版本:hadoop-2.4.1 HBase版本:hbase-0.98.6.1-hadoop2 Zookeepe ...
- 懒人记录 Hadoop2.7.1 集群搭建过程
懒人记录 Hadoop2.7.1 集群搭建过程 2016-07-02 13:15:45 总结 除了配置hosts ,和免密码互连之外,先在一台机器上装好所有东西 配置好之后,拷贝虚拟机,配置hosts ...
- hadoop中datanode无法启动
一.问题描述 当我多次格式化文件系统时,如 [hadoop@xsh hadoop]$ ./bin/hdfs namenode -format 会出现datanode无法启动,查看日志(/usr/loc ...
随机推荐
- Redash 安装部署
介绍 是一款开源的BI工具,提供了基于web的数据库查询和数据可视化功能. 官网:https://redash.io/ GitHub:https://github.com/getredash/reda ...
- Linux记录-告警脚本
#!/bin/bash export JAVA_HOME=/app/jdk/jdk1.8.0_92 export HADOOP_CONF_DIR=/home/hdfs/balancer/hadoop- ...
- Mysql:索引实战
MySQL主要提供2种方式的索引:B-Tree索引,Hash索引 B树索引具有范围查找和前缀查找的能力,对于有N节点的B树,检索一条记录的复杂度为O(LogN).相当于二分查找. 哈希索引只能做等于查 ...
- mysql一张表多个字段关联另一张表查询
如下:一张订单表多个字段关联用户表: 1.链表查询 SELECT cu.id AS 'id',cu.version AS 'version',cu.cid AS 'cid',cu.uid AS 'ui ...
- jsp页面的共用
我们经常希望一个网页,根据不同得请求显示不同得数据. 方法就是在session中添加一个变量,根据不同得值区分不同得请求类型. 后台:request.getSession().setAttribute ...
- 【leetcode-66】 加一
给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入 ...
- SignalR 2.x入门(二):SignalR在MVC5中的使用
开发(代码下载) 新建一个ASP.NET Web项目,项目类型为MVC,将认证模式改为无身份认证.在程序包管理控制台输入如下语句,安装SignalR <span style="font ...
- node中glob模块
glob glob允许使用规则,从而获取对应规则匹配的文件 node的glob模块允许你使用 * 等符号,来写一个glob规则,像在shell里一样,获取匹配对应规则文件 安装 npm install ...
- URLSearchParams 接口
URLSearchParams 接口定义了很多个用来处理 URL 参数串的方法 他可以把对象转变成url上面查询信息的写法,例如a=1&b=2 可以把请求路由中的字符串 key=1 ,拼接 ...
- vue-cli3 第三版安装搭建项目
Vue CLI是一个用于快速Vue.js开发的完整系统 3.X较2.X结构变了很多,更优雅,开发体验更好 官方:https://cli.vuejs.org/guide/ 安装:https://cli. ...