纯属记录笔记…,没有实际操作过。
MR优化
- map和reduce的个数
- 一个分片就是一个块,一个块对应一个maptask
- Hadoop源码中有一个计算公式
- min(max_split_size,max(min_split_size,block_size))
- min_split_size默认值0(最小分片大小)
- max取的时候取的是block_size,block_size默认是128
- max_split_size默认值256(最大分片大小)
- 这个公式决定了map的个数
- 肯定不能直接去修改HDFS的block_size
- 一般在实际的生产环境中HDFS一旦format格式化之后,block_size大小不会去修改的
- 通过修改max_split_size和min_split_size来影响map的个数
- 并行执行
- 针对有些互相没有依赖关系的独立的job,可以选择并发的执行job hive.exec.parallel
- 是否开启并行执行的功能
hive.exec.parallel.thread.number - 设置并行执行的线程个数
- 一般在工作中会选择去开启该功能
- 根据实际的集群的状况和服务器的性能合理的设置线程数目
- JVM重用
- mapreduce.job.jvm.numtasks通过合理的测试,设置一个合理的数目
- 推测执行
- 当某个任务出现迟迟不结束的情况,那么会考虑开启推测执行,开启一个一模一样的任务去完成
- 两个任务谁先完成&