Apache Hadoop管理的23个技巧


本文由Renata Ghisloti Duarte Souza Gra撰写。

在这篇文章中,我将分享我在使用Apache Hadoop环境多年后学到的一些技巧。这里的经验主要考虑了Apache Hadoop 2.9版本,但它可以肯定地扩展到其他类似版本。

这些是构建或使用Hadoop集群时的注意事项。有些是对Cloudera发行版的考虑。无论如何,希望它有所帮助! 

1. 不要将Hadoop用于数百万个小文件。它会重载namenode并使其变慢。重载namenode并不困难。始终检查功能与文件数量。Hadoop上的文件通常应该超过100 MB。

2. 必须为namenode中的大约1百万个文件提供1 GB的内存。

3. 节点通常在5年后失败。节点故障是H adoop中最常见的问题之一。像facebook和google这样的大公司应该在一分钟内出现节点故障。

4. Cloudera Manager上的MySQL没有冗余。这可能是一个失败点。

5.信息:fsimage文件的合并发生在辅助namenode上。

6.Hadoop可以缓存块以提高性能。默认情况下,它无缓存,为0。 

7. 您可以设置一个参数,在仅将第一个或第二个数据块复制到数据节点后,将确认消息从数据节点发送回namenode,这可能会使写入数据更快。 

8. Hadoop具有机架感知功能:它知道哪个节点连接到“女巫”交换机。实际上,它是配置它的Hadoop管理员。

9. 不时检查文件以验证是否存在任何数据损坏(通常每三周一次)。这是可能的,因为datanodes存储文件校验checksum。

10.日志文件默认存储7天。

11.part-m-000来自mapper,part-m-000来自reducer job。最后的数字
对应于为该作业运行的reducer数量。part-r008有9个reducer(从0开始)。

12.您可以更改mapper和reducers任务的log.level以获取更多信息。

13. 设置日志输出:mapreduce.reduce.log.level = DEBUG

14. yarn服务器会检查Spark做了什么。localhost:4040还显示已完成的操作。

15. 检查namenode fsimage文件的放置位置非常重要。您可能想要复制此文件。

16. 对于shuffle阶段,保存到dfs.datanode.du.reserve必须将大量磁盘空间(25%)。这个阶段将写在磁盘上,所以需要有空间!

17. 删除文件后,删除一段时间后,它们会保留在.Trash目录中。默认时间为1天。

18. 你可以用flume建造一个lamdba架构。您还可以指定是否要将数据放入内存或磁盘槽中。

19.关于硬件,工作节点需要更多内核以进行更多处理。主节点不会处理那么多。

20.对于  namenode,需要更高质量的磁盘和更好的硬件(如raid - raid在工作节点上没有意义)。

21.经验法则是:如果要存储1 TB数据,则必须具有4 TB空间。
Hadoop  应用程序通常不受cpu约束。 

22. 虚拟化可能会为您带来一些好处(更易于管理),但却会影响性能。通常它会带来5%到30%的开销。

23. Hadoop不支持ipv6。你可以禁用ipv6。 您还可以   在群集内禁用selinux。两者都给了开销。

24. 初始集群的大小约为6个节点。

25. 有时,当群集太满时,您可能必须删除一个小文件才能删除更大的文件。

就这些干货了!