Hadoop是什么?
适合大数据的分布式存储和计算平台,作者Doug Cutting ,受google三篇大数据论文启发。
Google File System中文版
Google MapReduce中文版
Google Bigtable中文版
Hadoop生态系统
Hadoop的核心项目
HDFS: hadoop distributed file system 分布式文件系统
MapReduce: 并行计算框架,基于文件系统进行数据计算。
HDFS的架构
主从结构
主节点只有一个:namenode,从节点有很多个:datanodes.
namenode负责接收用户操作请求,维护文件系统的目录结构。管理文件与block之间的关系,block与datanode之间的关系。
datanode负责存储文件,文件被分割成block存储在磁盘上。为保证数据安全,文件会有多个副本。
MapReduce
Map阶段:首先是读数据,数据来源可能是文本文件,表格,MySQL数据库。这些数据通常是成千上万的文件(叫做shards),这些shards被当做一个逻辑输入源。然后Map阶段调用用户实现的函数,叫做Mapper,独立且并行的处理每个shard。对于每个shard,Mapper返回多个键值对,这是Map阶段的输出。
Shuffle阶段:把键值对进行归类,也就是把所有相同的键的键值对归为一类。这个步骤的输出是不同的键和该键的对应的值的数据流。
Reduce阶段: 输入当然是shuffle的输出。然后Reduce阶段调用用户实现的函数,叫做Reducer,对每个不同的键和该键的对应的值的数据流进行独立、并行的处理。每个reducer遍历键对应的值,然后对值进行“置换”。这些置换通常指的的是值的聚合或者什么也不处理,然后把键值对写入数据库、表格或者文件中。