Hadoop 操作备忘

DateNode 测试(添加、删除、灾难)
测试前:
master.hadoop:  248
secondaryname.hadoop:  106
slave104.hadoop:   104
slave110.hadoop:   110
slave250.hadoop:   250 (准备加入,不在集群内)
格式化DateNode:

hadoop namenode -format

平衡DateNode:

hadoop balancer

添加DataNode(添加slave250.hadoop):

在 slave250.hadoop 部署与slave104相同的hadoop环境
在 master.hadoop $HADOOP_HOME/conf/slaves 加入 slave250.hadoop
在 master.hadoop $HADOOP_HOME/bin 执行 start-all.sh
添加完成
完成标志:DFS 管理页面 Live Nodes 里新加了 slave250.hadoop

删除DataNode(删除slave110.hadoop):
在 master.hadoop $HADOOP_HOME/conf/dfs.hosts.exclude 文件添加 slave110.hadoop
在 master 执行

hadoop dfsadmin -refreshNodes

查看 DFS 管理页面  Decommissioning Nodes 变为 1,说明正在执行删除 slave110.hadoop 操作

等待 Decommissioning Nodes 变成0, Dead Nodes 变为 1,说明 slave110.hadoop 删除操作完成
在 slave110.hadoop 机器上 kill 掉 hadoop 的相关进程
删除完成
完成标志:DFS管理页面 Live Nodes  看不到 slave110.hadoop,Configured Capacity 减少相应的磁盘空间

灾难测试(强行删除 slave104.hadoop 的 hdfs 数据目录):
hadoop 自动识别了灾难,Dead Nodes 数量变为 1,此时数据正常,运行 mapreduce 程序正常
灾难恢复:在 slave104.hadoop 机器上 kill 掉 hadoop 的相关进程,清空/新建 hdfs 数据目录,在 master.hadoop $HADOOP_HOME/bin 执行 start-all.sh
完成标志:DFS 管理页面 Live Nodes 里新加了 slave104.hadoop

master 故障测试(冷备方案NameNode故障手动切换):
1. 不切换 NameNode 主机。
1).复制 SecondaryNameNode 的 fs.checkpoint.dir 目录的数据到 NameNode 的对应目录。
2).清空 NameNode 的 dfs.name.dir 目录的数据,保留空目录。
3).在 NameNode 主机执行 hadoop namenode -importCheckpoint 。
4).执行 hadoop fsck /  检查文件系统,”The filesystem under path ‘/’ is HEALTHY” 为正常结果。
5).结束 步骤 3). 中的命令,Ctrl + C
6).清空 NameNode 的 fs.checkpoint.dir 目录的数据
7). start-dfs.sh 正常启动 datenode
2. 切换 NameNode 主机
1). 修改 DNS 服务器,把 master.hadoop 指向新的 NameNode
2).复制 SecondaryNameNode 的 fs.checkpoint.dir 目录的数据到 NameNode 的对应目录。
3).清空 NameNode 的 dfs.name.dir 目录的数据,保留空目录。
4).在 NameNode 主机执行 hadoop namenode -importCheckpoint 。
5).结束 步骤 3). 中的命令,Ctrl + C
6). stop-all.sh 停掉 hadoop 集群
7).清空 NameNode 的 fs.checkpoint.dir 目录的数据
8). start-all.sh 启动 hadoop 集群