什么是Map Reduce编程及其运作方式
数据科学是一项研究,它使用各种工具和技术从数据中提取有意义的见解,以促进业务增长。尽管它是在计算机出现时诞生的,但最近的炒作是由于生成了大量的非结构化数据以及现代计算机具有空前的计算能力的结果。
但是,在大众中对该领域的真正含义存在很多误解,许多人认为这是根据数据预测未来结果。尽管预测分析是数据科学的一部分,但它肯定不是数据科学所代表的全部。在分析项目中,首要任务是建立管道并获取相关数据,以便以后执行预测性分析。负责构建此类ETL管道并创建完美数据流系统的专业人员是数据工程师,该领域称为数据工程。
多年来,数据工程师的角色已经发生了很大的变化。以前,它是关于使用结构化查询语言构建关系数据库管理系统或运行ETL作业。如今,来自多种来源的大量非结构化数据导致大数据的出现。它只是大量不同形式的大量数据,如果正确挖掘,它们会携带大量信息。
现在,专业人员面临的最大挑战是分析传统文件存储系统无法处理的这些巨大的数据。Hadoop解决了这个问题,Hadoop是一个开放源代码Apache框架,旨在处理集群形式的大数据。Hadoop具有用于处理数据的多个组件,其中一个组件称为Map Reduce。
什么是Hadoop?
Hadoop由Doug Cutting和Mike Cafarella于2006年创建,Hadoop促进了以并行集群的形式对大型数据集进行分布式存储和处理。HDFS或Hadoop分布式文件系统是Hadoop的存储组件,可以使用Map Reduce编程来存储不同的文件格式以进行处理,我们将在本文稍后介绍。
HDFS在大型群集上运行,并遵循主/从体系结构。文件的元数据,即有关文件在节点中相对位置的信息,由作为主节点的NameNode管理,可以保存几个DataNode来存储数据。Hadoop的其他一些组件是–
纱线–它管理资源并执行作业调度。
Hive –它允许用户编写类似SQL的查询来分析数据。
Sqoop –用于Hadoop分布式文件系统和关系数据库管理系统之间的结构化数据传输。
Flume –与Sqoop相似,但它有助于在HDFS和源之间传输非结构化和半结构化数据。
Kafka – Hadoop的消息传递平台。
Mahout –用于在大数据上创建
机器学习操作。
Hadoop是一个广阔的概念,每个组件的详细说明都超出了本博客的范围。但是,我们将深入探讨其组成部分之一-Map Reduce,并了解其工作原理。
什么是Map Reduce编程
Map Reduce是一种编程范例,可在Hadoop集群中的数百或数千个服务器之间实现大规模扩展,即假设您有一个要运行的作业,并且您使用MapReduce框架编写了Job,然后如果有一千台计算机可用,作业可能在那几千台机器中运行。
大数据传统上不会存储在HDFS中。数据被分成几小块数据块,分别存储在各个数据节点中。在一个集中的位置没有完整的数据,因此本机客户端应用程序无法立即处理信息。因此,需要一个特定的框架,该框架具有处理作为数据块保留在相应数据节点中的数据的能力,并且处理可以去那里处理该数据并返回结果。简而言之,并行处理数据可以加快处理速度。
为了提高性能并提高效率,开发了并行化的思想。该过程是自动化的并同时执行。分散的指令也可以在单台计算机或不同的CPU上运行。为了获得直接的磁盘访问权限,多台计算机使用SAN或存储区域网络,这是群集文件系统的一种常见类型,而分布式文件系统则使用网络来发送数据。
在这种主要/从属数据处理体系结构中,一个常见的术语是负载平衡,其中在处理器之间分配任务以避免任何DataNode上的过载。与静态平衡器不同,动态平衡器提供了更大的灵活性。
Map-Reduce算法可在三个阶段运行-Mapper阶段,Sort和Shuffle阶段以及Reducer阶段。为了执行基本计算,它为Google工程师提供了抽象,同时隐藏了容错,并行化和负载平衡的细节。
映射阶段–在此阶段,将输入数据映射到分配给该数据的所有映射器上的中间键/值对。
随机播放和排序阶段–此阶段充当Map和Reduce阶段之间的桥梁,以减少计算时间。在此,根据键同时对数据进行混洗和排序,即,将来自映射器阶段的所有中间值相对于键分组在一起并传递给约简函数。
还原阶段–排序后的数据是还原器的输入,该数据汇总与每个键对应的值并产生所需的输出。
Map Reduce如何工作
在多台计算机上,将分布Map调用,并且将输入数据自动划分为M件,每件M大小为16至64兆字节。然后,在计算机集群上启动该程序的许多副本。
在这些副本中,一个是主副本,其余的是从属副本。主机将M映射和R精简任务分配给从属。主机将为任何空闲的工作人员分配任务。
地图任务工作者将读取输入的内容,并将键值对传递给用户定义的Map函数。在内存缓冲区中,将生成中间键值对。
缓冲对以周期性的方式写入本地磁盘。然后,分区功能将它们划分为R个区域。主机将缓冲键值对的位置转发给reduce worker。
从主服务器获取位置后,reduce worker读取缓冲的数据。读取数据后,将根据将相似事件组合在一起的中间键对数据进行排序。
Reduce函数定义了用户接收到一组与其对应的唯一中间键相对应的中间值的集合。最终的输出文件将包含Reduce函数的附加输出。
一旦完成所有“贴图”和“缩小”任务,主程序将唤醒用户程序。在R输出文件中,可以找到成功的MapReduce执行输出。
执行后,主机会通过发送定期的ping来检查每个工人的存活率。如果任何工作人员不响应ping,则如果重置时间及其以前的工作,则在一定时间点后将其标记为失败。
如果发生故障,将重新执行已完成的映射任务,因为它们的输出在本地磁盘中不可访问。存储在全局文件系统中的输出不需要重新执行。
Map Reduce编程的一些示例是–
Map Reduce编程可以计算URL访问的频率。网页的日志将由map函数处理,并存储为输出<URL,1>,然后由Reduce函数通过添加所有相同的URL并输出其计数来处理。
Map Reduce编程还可用于解析文档并计算与每个文档相对应的单词数。
对于给定的URL,可以在Map Reduce的帮助下获得所有相关源URL的列表。
为了计算每个主机项向量,可以使用map reduce编程。主机名和术语向量对将通过Map函数为每个文档创建,该函数将由reduce函数处理,而reduce函数将删除频率较低的术语并给出最终的主机名,术语向量。
结论
数据工程是任何数据科学项目中的关键步骤,而Map Reduce无疑是其中的重要部分。在本文中,我们对大数据有一个简短的直觉,并概述了Hadoop。然后,我们解释了Map Reduce编程及其工作流程,并很少提供Map Reduce编程的实际应用。

关注 CDA人工智能学院 ,回复“录播”获取更多人工智能精选直播视频!