在使用一个工具之前,还是要对它有个基本的了解。避免用起来蒙逼哈哈。
Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构,它解決了两大问题:大数据存储、大数据分析。也就是 Hadoop 的两大核心:HDFS 和 MapReduce。
HDFS(Hadoop Distributed File System)是可扩展、容错、高性能的分布式文件系统,异步复制,一次写入多次读取,主要负责存储。
MapReduce 为分布式计算框架,包含map(映射)和 reduce(归约)过程,负责在 HDFS 上进行计算(用于大规模数据集(大于1TB)的并行运算)。
一、扒扒MapReduce:啥是map 啥是reduce
map和reduce其实就是面向函数式编程模式里的2个代表性函数。
map( f(x), list ) :把函数f(x)作用在list array[]上,输出一个新的list。
例如,把一个list所有数字转为字符串:
>>> map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce(f(x),list):把函数f(x)作用在list array[]上,然后把结果继续和list的下一个元素做累计计算,类似于递归。
例如对一个队列求和:
>>> def add(x, y):
... return x + y
>>> reduce(add, [1, 3, 5, 7, 9])
25
这两个函数思想应用到大数据计算领域。MapReduce 的本质就是把一组键值对 <K1,V1> 经过 Map 阶段映射成新的键值对 <K2,V2>;接着经过 Shuffle/Sort 阶段进行排序和“洗牌”,把键值对排序,同时把相同的键的值整合;最后经过 Reduce 阶段,把整合后的键值对组进行逻辑处理,输出到新的键值对 <K3,V3>。
详细介绍也可以参考https://www.cnblogs.com/binarylei/p/8903601.html