【Hadoop】Hadoop 调优

本文介绍常用调优手段,面试重点。

1.数据压缩

优点:节约磁盘空间、减少网络数据传输、减少 I/O 操作,从而提高 MR 程序的运行速度。

缺点:增加压缩和解压操作,增加了 CPU 运算负担。

原则:运算密集型 job 少用,I/O 密集型 job 多用。

格式:DEFLATE、Gzip、bzip2、LZO,Snappy

2.小文件优化

2.1 小文件弊端

每个文件都要在 NameNode 上创建对应的元数据,这个元数据的大小约为 150byte,这样当小文件比较多的时候,就会产生很多的元数据文件,一方面会大量占用 NameNode 的内存空间,另一方面就是元数据文件过多,使得寻址索引速度变慢。

小文件过多,在进行 MR 计算时,会生成过多切片,需要启动过多的 MapTask。每个 MapTask 处理的数据量小,导致 MapTask 的处理时间比启动时间还小,白白消耗资源。

2.2 解决

  1. 在数据采集的时候,就将小文件或小批数据合成大文件再上传 HDFS。
    • Hadoop Archive 是一个高效的将小文件放入 HDFS 块中的文件存档工具,能够将多个小文件打包成一个 HAR 文件,从而达到减少 NameNode 的内存使用。
  2. 在业务处理之前,在 HDFS 上使用 MapReduce 程序对小文件进行合并。
    • SequenceFile 是由一系列的二进制 k/v 组成,如果为 key 为文件名,value 为文件内容,可将大批小文件合并成一个大文件。
  3. 在 MapReduce 处理时,可采用 CombineTextInputFormat 提高效率。
    • CombineTextInputFormat 用于将多个小文件在切片过程中生成一个单独的切片或者少量的切片。
  4. 开启 uber 模式,实现 jvm 重用
    • 默认情况下,每个 Task 任务都需要启动一个 jvm 来运行,如果 Task 任务计算的数据量很小,我们可以让同一个 Job 的多个 Task 运行在一个 Jvm 中,不必为每个 Task 都开启一个 Jvm.

猜你喜欢

转载自blog.csdn.net/weixin_45545090/article/details/126083139