利用Hadoop MapReduce处理数据
我们可以将MapReduce看作作一个引擎,你提供输入,其快速有效地将输入转化成输出。MapReduce是一种并行编程框架,用于处理不同系统中的大量数据。
Hadoop Reduce包括几个阶段,每个阶段都有一组重要操作,帮助你从大数据中获取需要的答案。这个流程从用户请求运行MapReduce开始,到结果被写回HDFS结束。
MapReduce既不是一个数据库,也不是数据库的直接竞争对手。它与现有技术是互补的,使得用户能够执行许多在关系型数据库中也能完成的任务。
MapReduce是如何工作的
利用MapReduce可以对存储于文件系统中的数据进行计算处理,没有必要将它加载到数据库中。MapReduce遵循主进程/工作者进程(master/worker,这与spark相同)方法,其master进程负责控制整个活动,如识别数据,并将数据划分给不同的worker进程。
MapReduce以如下方式工作:
- MapReduce的worker进程处理master进程中收集的数据,并将结果重新发送给master进程,
- 每个worker进程对自己部分的数据应用相同的代码;然而worker间没有交互,
- 然后,master把从worker那里收集到的结果整合起来,进行最后的数据处理,获取最终结果。
如果有稳定的网络日志流入,它们可能以大数据块的形式分发到不同的worker节点。轮询程序是一种简单的方法,条目被反复地依次传递到节点。MapReduce 按照一定的公式将记录传递给worker进程,以便把类似记录发送到同一个worker进程。
MapReduce环境的重要特质之一是其处理非结构化文本的特殊能力。在关系型数据库中,一切东西都存在于表、行和列中,数据已经有了定义明确的关系。但对于原始数据流来说,事实并不总是如此。MapReduce非常适合这种场合,再将数据加载到数据之前,剪裁掉多余的数据,如:解析文本、处理来自网络日志的大量信息和读取巨大的原始数据源。【信息的提炼】。
另一方面,MapReduce有精确定义每个进程所创建数据类型的责任。包括数据结构,需要或多或少地自定义编码。
利用YARN管理资源和应用
作业调度与跟踪是Hadoop MapReduce的必要组成部分。YARN(Yet Another Resource Negotiator,另一种资源协调程序)是Hadoop的核心服务,,它提供了两个主要的服务:
- 全局资源的管理;
- 每个应用程序的管理
资源管理器(ResourceManager)是主服务,用于控制Hadoop集群中每个节点上的节点管理器。调度器(Scheduler)包含在资源管理器中,它的唯一任务就是把系统资源分配给运行中的特定应用程序(任务),但它不监控或跟踪应用程序的状态。
所需的所有系统信息存储于资源容器中。它包含了详细的CPU、磁盘、网络和在节点及集群上运行应用程序所必需的其他重要资源属性。 %%%每个节点都有一个节点管理器(NodeManager),保存在集群的全局资源管理器中,监视应用程序CPU、磁盘、网络和内存的使用率,并将信息报告给资源管理器。 %%% 对于每一个运行在节点上的应用程序,都有一个对应的应用程序主机(ApplicationMaster),如果需要更多的资源来支持运行中的应用程序,该程序的ApplicationMaster会通知NodeManager,并由NodeManager代表应用程序与资源管理器(调度器)协商额外的资源。此外,NodeManager还负责在它的节点中跟踪作业状态和进程。