hadoop学习笔记(二)——hadoop思想简介,hadoop学习笔记


这几天阅读《hadoop实战》,初步了解了一下hadoop的核心思想,简要的比较如下:

1.  hadoop是一个开源框架,可编写和运行分布式应用处理大数据,具有方便、简单、健壮性、可扩展性等优点

2.  MapReduce程序的执行分为两个阶段,为mapping和reducing。每个阶段均定义为数据处理函数,分别被称为mapper和reducer。在mapping阶段,MapReduce获取输入数据并将数据单元装入mapper;在reducing阶段,reducer处理来自mapper的所有输出,并给出最终结果。总之,mapper将输入进行过滤和转换,是reducer可以完成聚合。

3.  hadoop在分布式计算和分布式存储中都采用了主从(master/slave)结构,分布式存储过程被称为hadoop文件系统,简称HDFS,namenode位于HDFS的主端,指导从端的datanode执行底层的I/O任务,namenode是HDFS的书记员,跟踪文件如何被分成文件块,而这些块又被哪些节点存储,以及分布式文件系统的整体运行状态是否正常。

4.  datanode提供数据块的备份存储,并持续不断的与namenode进行通信,以保持namenode中元数据的最新状态。

5.  secondary namenode(SNN)是一个用于检测HDFS集群状态的守护进程,SNN与namenode的不同之处在于它不接受或记录HDFS的任何实时变化,相反,SNN与namenode相互通信,根据集群配置的时间间隔获取HDFS元数据的快照。

6.  jobtracker守护进程是应用程序和hadoop之间的纽带。一旦代码提交到集群上,jobtracker就会确定执行计划,包括决定处理哪些文件、为不同的任务分配节点以及监控所有任务的运行。每个hadoop集群只有一个jobtracker守护进程,通常运行在服务器集群的主节点上。

7.  每个tasktracker负责执行jobtracker分配的单相任务,tasktracker的一个职责就是持续不断的与jobtracker通信,确保在此tasktracker崩溃的情况下,重新提交相应的任务到集群其他的节点上。

8.  hadoop集群的拓扑结构,在主节点上运行namenode和jobtracker守护进程,并使用独立的节点运行SNN以防主节点失效,每个从节点均驻留一个datanode和tasktracker,从而在存储数据的同一节点上执行任务。

9.  hadoop工作流:数据文件复制到HDFS中,接着MapReduce处理这个数据,但它们通常不会直接读任何一个HDFS文件,相反,它们依靠MapReduce框架来读取HDFS文件,并将之解析为独立的记录(键/值对),这些记录才是MapReduce处理的数据单元。

10.     MapReduce通过键值对来处理数据,一般形式为

map:(K1,V1)→list(K2,V2)

reduce: (K2,list(V2))→list(K3,V3)

11.     partitioner:重定向mapper输出

当使用多个reducer时,我们需要确定mapper应该把键值对输出给谁,默认的做法是对键进行散列来确定reducer

12.     MapReduce程序遵循一个模板,通常整个程序定义在一个Java类中,在这个类中driver创建一个MapReduce作业的配置对象作为作业创建和运行的蓝本。hadoop提供了一个streaming API,支持用非Java语言来编写MapReduce程序。MapReduce程序主要是关于map和reduce函数的。

相关内容