public class map默认值 { public static void main(String[] args) { Map<String, String> resultMap = new HashMap(16); if (resultMap.isEmpty()) { System.out.println("map默认是空"); } if (resultMap != null) { System.out.println("map默认不是null"
java8支持了函数编程,可以让java代码更简洁和易读. 传统 for 循环方式: List<String> list = Arrays.asList("C","C++","VB","Java","Python"); for (String language : list) { System.out.println(language); } 采用 lamda方式: list.forEach(l
上一节分析了Job由JobClient提交到JobTracker的流程,利用RPC机制,JobTracker接收到Job ID和Job所在HDFS的目录,够早了JobInProgress对象,丢入队列,另一个线程从队列中取出JobInProgress对象,并丢入线程池中执行,执行JobInProgress的initJob方法,我们逐步分析. public void initJob(JobInProgress job) { if (null == job) { LOG.info("Init on
一.Partitioner介绍 Partitioner的作用是对Mapper产生的中间结果进行分片,以便将同一分组的数据交给同一个Reduce处理,它直接影响Reduce阶段的负载均衡(个人理解:就是按照Reduce的个数,将Mapper产生的中间结果按照关键字送给不同的Reduce,Reduce对相同关键字的数据进行处理). Partitioner在Map/Reduce中所处的位置,如下: 二.Partitioner的源代码解析 将相同关键字Key送到哪个Reduce上处理. public a
mapred.tasktracker.map.tasks.maximum 官方解释:The maximum number of map tasks that will be run simultaneously by a task tracker. 我的理解:一个tasktracker最多可以同时运行的map任务数量 默认值:2 优化值:mapred.tasktracker.map.tasks.maximum = cpu数量 cpu数量 = 服务器CPU总核数 / 每个CPU的核数服务器CPU