学习过Storm,在这将MapReduce和Storm先进行比较。 更加有助学习。
MapReduce | Storm | |
---|---|---|
JobTracker | Nimbus | |
Role | TaskTracker | Supervisor |
Child | Worker | |
Application | Job | Topology |
Interface | Mapper/Reducer | Spout/Bolt |
关于MapReduce
思想其实就是源于Lisp中的Map/Reduce
以下举例Clojure中的Reduce函数
- Clojure中的Map
Map 是把一组数据一对一的映射为另外的一组数据,其映射的规则由一个函数来指定,比如对 [1, 2, 3, 4] 进行乘 2 的映射就变成了 [2, 4, 6, 8]。
(map inc [1 2 3 4 5])
;;=> (2 3 4 5 6)
user=> (map list [1 2 3] '(a b c) '(4 5))
((1 a 4) (2 b 5))
;相当于
user=> (list (list 1 'a 4) (list 2 'b 5))
((1 a 4) (2 b 5))
- Clojure中的Reduce
Reduce 是对一组数据进行归约,这个归约的规则由一个函数指定,比如对 [1, 2, 3, 4] 进行求和的归约得到结果是 10 ,而对它进行求积的归约结果是 24。
(reduce + [1 2 3 4 5]) ;;=> 15
; = (+ (+ (+ 1 2) 3) 4) ;;=> 15
(reduce conj #{} [:a :b :c]) ;; =>(conj (conj (conj #{} :a):b):c)
; #{:c :b :a}
Map/Reduce
(reduce + 2 (map inc [1 2 3 4 5])) ;;=> 22
Hadoop中,MapReduce过程分三个步骤:
- Map(主要是分解并行的任务)
- Combine(主要是为了提高Reduce的效率)
- Reduce(把处理后的结果再汇总起来) 。
Hadoop分别从三个角度将主机划分为两种角色:
- 第一,最基本的划分为Master和Slave,即主人与奴隶;
- 第二,从HDFS的角度,将主机划分为NameNode和DataNode(NameNode就是目录管理者);
- 第三,从MapReduce的角度,将主机划分为JobTracker和TaskTracker。
原文链接:Hadoop学习笔记—初探,转载请注明来源!