今天因为不了解hadoop,误操作把hdfs上数据全删了,下面是整个经过。
起因
因为之前HADOOP_PID_DIR没有配置,默认在/tmp目录下,然后过一段时间pid文件被系统删了。今天改了配置文件core-site.xml,想重启hadoop集群的时候,报错
|
|
于是我写了个脚本跑到每个节点上去
|
|
之后终于可以stop-dfs.sh,本以为事情就解决了,没想到发生了后面一连串的故事。
经过
在利用MR做phoenix bulkload的时候,报错hadoop集群处于safe mode下,于是我就直接
|
|
然后再执行MR的时候报错
|
|
于是执行
|
|
发现有一些corrupt blocks,这时没注意备份数和具体文件是哪些直接执行了
|
|
雪崩!! 整个hdfs全被我删了。 这里应该先 -move 移到 /lost+found下, 不能武断的直接delete, 如果备份数大于2还好。 所以正确的做法应该是先
|
|
等待没有反应,再推出安全模式,然后等hdfs自动把备份数增加到2,再move。这样确保数据安全。
后续
因为之前还用了hbase和phoenix,直接把hdfs全删了,导致hbase和zk数据不一致需要先清理掉过期的数据。先stop-hbase.sh,再执行
|
|
然后重新进入phoenix,生成phoenix的系统表,确保基本组件正常运行。
之后重新生成数据,重新导入。。。