Hadoop 与 MapReduce

近来工作原因需要接触大数据,此前对于大数据基本是听得多了解的少,借此机会仔细研究了一下 Hadoop,记录下 MapReduce 相关的一些概念,大体分为HDFS(存储)、YARN(调度)、MapReduce(计算)。

HDFS:

NameNode : 存储元数据,指挥官,有人要写数据先问问NameNode,分配DataNode,然后数据写到DataNode的数据块上。

DataNode :干具体的活,存数据,提供读写服务。

Secondary NameNode :辅助NameNode做Checkpoint,NameNode只有重启的时候才会把操作记录edits合并到镜像文件fsimage中,得到一个快照,时效性很差,因此需要SN定期同步一下NameNode的edits文件,更新fsimage,并且适时把fsimage同步回NameNode。(拿redis对比一下,edits相对于AOF,fsimage相对于RDB)

类似的架构还有 zk 的 leader、follower、observer,kafka 的 controller,RocketMQ 的 nameserver、broker等,设计思路就是中心化控制,一对多,好处就是简单方便,缺点就是中心节点挂了服务就暂时不可用,需要failover。

HDFS架构图

写:同步进行(类似zk)

1、先访问NameNode,返回分配的DataNode列表和block id

2、客户端写一个DataNode,然后这些DataNode复制数据块,复制完了告诉客户端完成

3、客户端告诉NameNode完成

4、NameNode确认,更新元数据

读:

1、访问NameNode,返回DataNode列表和block id

2、找个可用的DataNode读即可

MapReduce:

计算模型:

MapReduce计算模型

1、从HDFS上读取数据

2、Mapping,分别对读取的数据块统计,生成 KV对,不同的块并行计算(统计词频)。


Mapping

        2.1 Combining,局部聚合Mapping的结果,提高性能。


Combining

3、Shuffling,对生成的所有KV对按Key组合,同样的Key放到一起。

        3.1 Partitioning,按key做hash取模分配,不同的key分配到不同的多个 reducer 上,多个Reducer并行。

4、Reducing,对Shuffling之后的结果归约,把相同Key的Value进行计算(求和)。


Partitioning and Reducing

5、输出结果

YARN:

ResourceManager:全局资源管理和任务调度

ApplicationMaster:单个作业的资源管理和任务监控

NodeManager:单个节点的资源管理和监控

Container:资源申请的单位和任务运行的容器

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容