1. Hadoop中的压缩作为一种常用的优化手段,经常被用在什么场景下?
数据规模很大和工作负载密集的情况下, 比如说在处理Mapper, Reducer运行过程的数据时进行压缩, 以减少磁盘IO, 提高MR的运行速度
2. 如果想要使用压缩,Hadoop如何对某一种压缩编码格式进行取舍?
从多方面来看, 首先判断是否属于Hadoop自带, 其次需要看其是否支持切分, 换成压缩格式后, 原来的程序是否需要修改, 然后就是看性能了, 压缩速度和解压速度.
3. 你们公司常用的压缩方式有哪些?
Gzip
Bzip2
Lzo
Snappy…
4. 从哪些方面定位MR执行的效率(如何分析MR执行慢的原因)
一方面是看计算机性能, 如CPU, 内存, 磁盘健康, 网络等会影响MR的执行效率; 另一方面是靠I/O操作优化, 如果数据发生倾斜, Map和Reduce数设置不合理, 或者是Map运行时间太长, 导致Reduce等待时间过久, 又或者是MR需要处理的小文件过多, 还是处理大量的不可切片的超大压缩文件都会导致MR执行慢. 部分操作次数太多的话也会对MR的执行效率产生影响, 比如Spill次数过多, 或者是Merge次数过多都会影响效率.
5. 如果想对MR程序进行优化,应该从哪些方面入手以及可能用到的优化手段?
我们可以从六个方面入手: 数据输入, Map阶段, Reduce阶段, IO传输, 数据倾斜问题和常用的调优参数.
在数据输入方面, 优化手段可以采用在执行MR任务前合并小文件和采用CombineTextInputFormat来作为输入; 在Map阶段通过减少溢写(Spill)次数以及减少合并(Merge)次数才进行优