1. 每个core配置2~3个任务(每个任务对应一个partition),比如 46 core 的机器,配置 hibench.default.shuffle.parallelism 92
hibench.default.map.parallelism 92 //这个配置值是否生效取决于文件个数及大小和创建RDD时的参数
2. 每个executor配置4~6个 core,executor数= 总core/每个executor core
hibench.yarn.executor.num 12
hibench.yarn.executor.cores 4
3. 每个executor的内存要看处理的数据量,比如 128MB的数据 x (2~5),因Java里的对象头,字节对齐,hashcode都额外占用空间。serialize的比例可以参考UI的
Shuffle Spill (Memory) / Shuffle Spill (Disk)
spark.executor.memory 5760m
4. 由于spark.memory.fraction 默认值是0.6,如果GC时间比较长的话,可以减少为0.1~0.3来减少 GC的时间
spark.memory.fraction
5. 可以适当增加driver的资源配置
spark.driver.cores 2
spark.driver.memory 6g
6. 默认是JavaSerilizer,使用kryo serializer来提高压缩数据的性能
spark.io.compression.lz4.blockSize 64k
spark.io.compression.snappy.blockSize 64k
spark.serializer org.apac