Hadoop冗余机制实验验证
1 目的
Hadoop视硬件错误为常态,并通过块的冗余存储机制保证数据的高可靠性。在大多数情况下,副本系数是3,HDFS的存放策略是将一个副本存放在本地机架的节点上,一个副本放在同一机架的另一个节点上,最后一个副本放在不同机架的节点上。
我们将通过实验验证Hadoop的数据高可靠性。
2 概述
实验通过对1GB的数据进行排序,分别设置副本系数为1和3来进行对比验证,在运行排序过程中,人为的关闭一个节点使之失效,来验证作业是否可以正常成功完成。
实验环境为:4个节点的Hadoop集群进行测试。
3 实验验证
3.1 副本系数为1的验证
设置副本系数为1,也就是说存放在HDFS中的文件每个块值存储一次,当块损坏时将无法正常读取数据。
使用Hadoop包org.apache.hadoop.examples.terasort下的TeraGen类来生成10000000条1GB记录数据,命令如下:
hadoop jar hadoop/hadoop-*-examples.jar teragen
生成后进行排序的命令为:
bin/hadoop jar hadoop-0.20.2-examples.jar terasort
terasort/input-GB001 terasort/output-GB001
正常情况下:
运行完的截图如下:
节点失效情况下
然后认为的将一个节点关机,发现出现两个读取错误,如下图:
通过WEB接口也可以发现有两个警告和一个死亡节点,截图如下:
通过这个实验,我们发现当设置副本系数为1是,Hadoop集群的数据没有进行冗余备份,当出现某个节点失效时,便会出现异常,致使提交的作业无法正常完成。
3.2 副本系数为3的验证
设置副本系数为3,也就是每个文件的分块块都有三个复制备份,当某些数据块出错时,HDFS可以通过复制完整的副本来产生一个新的,来治愈那些出错的数据块,使得数据块的副本恢复到预期设定的数量来保证数据的高可靠性,一个因损坏或者机器故障而丢失的块会从其他候选地点来复制来正常运行的机器上。
同样产生排序所需数据然后运行排序作业,然后我们通过WEB接口也可以发现文件的属性,如下图:
可以看到复制因子为3,块的大小为64M。
运行时人为的关闭一个机器,仍然正常运行,并成功完成排序任务:
作业正常完成,并无异常,截图如下:
4 总结
通过实验验,我们验证了Hadoop的冗余复制机制,这种机制保证了存放在HDFS中的数据的高可靠性和数据的完整一致性。
注意:截图没有显示,可以在百度文库中找到到此篇文章,或者发我邮件