Hadoop for .NET Developers(十四):了解MapReduce和Hadoop流

【Hadoop】Hadoop 机架感知配置、原理 Hadoop机架感知1.背景Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份。这样如果本地数据损坏,节点可以从同一机架内的相邻节点拿到数据,速度肯定比从跨机架节点上拿数据要快;同时,如果整个机架的网络出现异常,也能保证在其它机架的节点上找到数据。为了降低整体的带宽消耗和读取延时,HDFS会尽量让读... 阅读详情

在Hadoop中,通过MapReduce作业解决数据处理。作业由基本配置信息组成,例如输入文件和输出文件夹的路径,由Hadoop的MapReduce层执行一系列任务。这些任务负责首先执行map和reduce功能,以便将输入数据转换为输出结果。

为了说明MapReduce如何工作,请考虑一个简单的输入文件,其中包含制表符分隔的记录(在下图的最左侧)。为了说明的目的,每一行将被标记为A到F。

这里写图片描述

MapReduce作业是根据这个输入文件指定的,通过一些内部逻辑,假设MapReduce确定记录A到C应该由一个地图任务(Map Task 0)执行,并记录D到F应由另外一个地图执行(Map Task 1 )。

定义MapReduce作业时,已经识别出Mapper类。 Mapper类是一个包含map函数的类。每个map任务针对每个输入记录执行map任务,以使map任务0执行map函数三次,一次对记录A,再次对记录B,再次对记录C.类似地,map任务1执行map函数针对其三个记录中的每一个记录D至F.

map函数被写入以接受一行输入数据,并且预期以键和值组合的形式发出输出数据。典型的map函数发出单个键和从输入数据导出的值,但是映射函数有可能根据输入数据生成零个或多个键值和值组合。在我们的例子中,map函数发出的输入数据行和键值组合之间存在一对一的相关性。

map函数发出的键和值应该如何?在我们的示例中,键被标识为具有与每个相关联的各种值的k1,k2和k3。给定map函数提供的关键和价值是完全由Mapper类开发人员提供的,但通常的关键是可以对哪些数据进行分组,并且该值是一些输入值 - 可以包括一个分隔符列表值,XML或JSON片段,或者更复杂的东西 - 这对于reduce功能将是有用的。如果现在不是100%清楚,那么希望一旦我们覆盖了减少功能。

一旦地图任务完成工作,从地图函数的各种调用输出的数据将被排序和混洗,以便将与给定键相关联的所有值排列在一起。生成减少任务并将键及其值交给处理任务。在我们的示例中,MapReduce已经生成了两个简化任务,并将k1和k2的值交给了减少任务0和k3的值以减少任务1。

作为MapReduce作业定义的一部分,定义了一个Reducer类。该类包含一个reduce函数,该函数提供了一个键值及其相关值的数组,用于通过reduce任务进行处理。 reduce函数通常会产生一个汇总值,该值可以通过给定关键字的值数组导出,但是在开发人员根据输出的输出以及它的派生方式保持相当的灵活性之前。

将每个reducer任务的reduce函数输出写入被识别为MapReduce作业配置的一部分的输出文件夹中的文件。单个文件与每个缩减任务相关联,因此在我们的示例中,使用两个简化任务,会生成两个输出文件。这些文件可以单独访问,但更典型的是使用getmerge命令(在命令行中)或类似的功能将它们组合成单个输出文件。

如果这个解释是有道理的,那么让我们给这个故事增加一点复杂性。并不是每个工作都包含一个Mapper和一个Reducer类。至少,MapReduce作业必须具有Mapper类,但是如果可以通过地图函数处理所有数据处理工作,那将是路的尽头。在这种情况下,输出文件与映射任务对齐,并在与作业配置标识的输出文件夹中找到类似的名称。

此外,MapReduce作业可以接受Combiner类。 Combiner类被定义为Reducer类(并且具有reduce函数),但它在与单个映射任务相关联的数据上运行。 Combiner类背后的想法是,在排序和混洗之前,可以“缩小”(总结)一些数据。对数据进行排序和混洗以将其转换为reduce任务是一项昂贵的操作,Combiner类可以作为优化器来减少在任务之间移动的数据量。组合器类绝对不需要,当您绝对必须将性能从我们的MapReduce作业中挤出时,您应该考虑使用它们。




在最后一篇文章中,我们使用C#构建了一个简单的MapReduce作业。但Hadoop是一个基于Java的平台。那么我们如何使用.NET语言执行MapReduce作业呢?答案是Hadoop Streaming。

简而言之,Hadoop Streaming是一种允许任何可执行文件在MapReduce作业中作为映射器和/或还原器的功能。通过此功能,MapReduce使用其标准输入和输出(即stdin和stdout)与可执行文件交换数据。而且,您可以编写和编译可执行文件,将其加载到集群,并从命令行执行流作业,您可以允许.NET SDK代表您处理流作业的安装和执行,这正是您在最后一篇文章中发生了什么。

与Hadoop Streaming一样灵活,它有一些限制。首先,可执行文件必须能够在集群中的数据节点上运行。使用.NET SDK,这意味着.NET 4.0框架(这已经在您的HDInsight数据节点上可用)依赖,因此,除非在Windows上部署Hadoop,否则无法使用.NET语言编写MapReduce作业。

接下来,Hadoop Streaming可以使用有限数量的格式的文件。对于HDInsight上的Hadoop Streaming,默认的限制是包含面向行的文本(带回车符/换行符分隔符)和JSON格式的文件的文件。如果需要以替代格式处理文件,您可以传递这些文件的名称,并利用map方法和.NET Framework的灵活性来解决这些约束。

最后,Hadoop Streaming需要数据从您的Mappers和Reducers以键+ tab +值格式的文本流动。如果您正在使用.NET SDK编写MapReduce作业(就像我们在最后一篇文章中所做的那样),那么.NET SDK将为您处理最后一个约束。

如果您想了解有关Hadoop中Hadoop Streaming的更多信息,请查看此资源。

【信息科学与工程学】计算机科学与自动化 第二百三十三篇 凤凰架构01 编号类型领域系统软件/硬件或系统集成方案及系统架构模块子模块函数名称/算法名称算法的数学分析及计算机体系架构及数据结构与算法详细设计及参数列表及数值范围设计关联知识1共识算法分布式基石状态机复制架构:Proposer/Acceptor/Learner 多节点角色模型,基于操作转移(Operation Transfer)分布式共识PaxosPaxos 协议(Prepare/Promise/Accept/Accepted 两阶段)数学基础:多数派(Quorum)投票,基于鸽巢原理保证 W+R>N 时读写集合必有 阅读详情

相关推荐

WRF-BEM相关参数说明

本参数适用于WRF-BEM模拟武汉市气候。

m0_60013472的博客 1895

Hadoop for .NET Developers(十二):实现简单的MapReduce作业

在本练习中,我们将使用C#和.NET SDK编写并执行非常简单的MapReduce作业。本练习的目的是说明MapReduce背后的最基本概念。 我们将创建的作业将在以前的博客文章中加载到本地桌面开发环境的integers.txt示例文件中运行。您可能会记得该文件由1到10,000之间的整数值列表组成,每个整数占据自己的行。 我们将写的map函数将接受一行(一个整数),确定该值是偶数还是奇数,并

极客神殿 4137

13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE

13个GNS3 appliances设备模板:IOSv/L2,IOU L2/L3,以及IOS-XE合集

haierccc的博客 1068

.Net Core 操作 Hadoop HDFS --- 学习记录

Nuget 安装包 Hadoop.WebHdfs.Client 以下代码仅仅在dfs.permissions.enabled = false 的情况下做了简单测试,仅作为备忘录。 上传文件代码 public void UploadFileTest() { string srcPath = @"D:\素材\logo\linux.jpg"; string destPath = "/TestPhoto/linux.jpg"; .

HongzhuoO的专栏 2225

手把手教你用运放搭建方波三角波发生器(附Multisim仿真文件)

本文详细解析了使用运算放大器搭建方波和三角波发生器的核心原理与设计步骤。通过剖析迟滞比较器与积分器的联动机制,指导读者进行电路设计、元件选型,并借助Multisim仿真进行参数调优与波形优化。文章提供了从理论分析、虚拟仿真到实物焊接调试的完整实践指南,并附有仿真文件,帮助硬件爱好者与初学者深入掌握这一经典模拟电路设计。

weixin_29165725的博客 637

【开关电源篇】开关电源——只需这三个阶段,从电源小白到维修大神

🔌 该篇为的原创文章跳转目录,小二持续更新跳转链接,尽情关注!

2301_81299416的博客 2378

Hadoop for .NET开发方式将数据加载到HDFS

Hadoop for .NET开发方式将数据加载到HDFS 参考文章:https://blog.csdn.net/WuLex/article/details/78069478 启动Visual Studio并创建一个新的C#控制台应用程序 使用NuGet软件包管理器, 将Microsoft.Hadoop.WebClient软件包的Microsoft .NET API添加到您的项目中 包括...

hsg77的专栏 4287

AD学习笔记(一)基础认识

文章目录AD学习笔记第一讲 AD基础认识一、两库两图(分别对应下图)1、PCB图(pcbdoc)2、原理图(schdoc)3、原理图库(schlib)4、PCB库(pcblib)二、封装1、DIP封装2、LQFP封装三、绘制整体流程1、建立工程(PrjPcb)2、建立两库两图并保存整个工程(五次)3、从库中提取绘制原理图4、原理图导入pcb图5、根据原理图布线6、pcb图交由工厂打板 AD学习笔记 第一讲 AD基础认识 一、两库两图(分别对应下图) PCB图(pcbdoc) 原理图(schdoc) PCB库

qq_52465473的博客 6686

如何使用.NET/C通过hive与Hadoop连接

连接到蜂巢中的数据库 介绍 在我开始告诉你我的问题之前,我已经把某些与我的问题相关的术语写下来了。所有的定义基本上都是维基百科的摘录。 什么是大数据? 大数据是收集如此庞大和复杂的数据集的术语,因此很难使用手动数据库管理工具或传统数据处理应用程序进行处理。挑战包括捕获、策划、存储、搜索、共享、传输、分析和可视化。大数据很难与使用大多数关系数据库管理系统以及桌面统计和可视化包配合使用,而是需要在数十台、数百台甚至数千台服务器上运行大规模并行软件。 什么是哈杜普? 哈多普是阿帕奇软件基金会的开源框架。它成为存储

Maynor的博客 1622

MCAL知识点(十):ERU驱动配置详解

ERS:外部请求单元ETL:中断逻辑单元OGU:输出逻辑单元MCU里面配置要使用的功能和选择输入的管脚,注意上述模块关注点讲述的ERU必须和边沿检测模块相关联。

梦想技术家 1221

AUTOSAR从入门到精通-诊断事件管理模块(DEM)(四)

在 Autosar 中,诊断事件是指在车辆电子系统中发生的特定事件,可以用于诊断和故障排除。DEM模块通过EventId和相关的EventName来表示每个诊断事件。诊断事件的状态代表了监控器的结果,DEM模块通过RTE或其他BSW模块从SW-C接收监控器的结果。DEM模块使用EventId来管理系统中每个诊断事件的状态,并对各个测试结果执行所需的操作,例如存储冻结帧/拓展帧。所有监控器和BSW模块使用EventId作为符号化的EventName来管理诊断事件。

getusushu的博客 1508

Hadoop for .NET Developers

Hadoop 介绍 英文翻译

极客神殿 3209

想使用dify实现docx文档的自动生成?试了一圈,感觉还是根据python-docx更靠谱

在软件开发过程中,需求文档、设计文档等材料的编写是每个开发者都绕不开的工作。最近笔者接到一个需要批量生成标准化需求文档的任务,尝试了目前热门的低代码工具Dify后,发现对于稍微复杂格式的文档生成需求(例如文本居中这么简单的需求),最终还是回归到基于python-docx库的解决方案。本文将分享两种技术路线的对比实践。

xiezhipu的博客 2547

Hadoop for .NET Developers(十三):实施更复杂的MapReduce作业

在我们的第一个MapReduce练习中,我们使用针对本地开发集群的.NET SDK实现了一个有目的的简单MapReduce作业。 在本练习中,我们将使用相同的SDK实现稍微更复杂的MapReduce作业,但不使用我们的基于Azure的远程群集。对于本练习,我们将使用ufo_awesome.tsv数据文件中显示的UFO Sightings数据库。 该文件由制表符分隔的数据行组成,包含以下字段:Date

极客神殿 1755

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

NET实现Hadoop增删改查

packages.config<?xml version="1.0" encoding="utf-8"?> <packages> <package id="Microsoft.AspNet.WebApi.Client" version="4.0.20505.0" targetFramework="net46" /> <package id="Microsoft.Data.Edm" versi

极客神殿 2047

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Hadoop .Net HDFS File Access

If you grab the latest installment of Microsoft Distribution of Hadoop you will notice, in addition to the C library, a Managed C++ solution for HDFS file access. This solution now enable...

weixin_33923762的博客 126

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C#码农的大数据之路 - 使用C#编写MR作业

系列目录 写在前面 从Hadoop出现至今,大数据几乎就是Java平台专属一般。虽然Hadoop或Spark也提供了接口可以与其他语言一起使用,但作为基于JVM运行的框架,Java系语言有着天生优势。而且能找到的与大数据框架如Hadoop等使用介绍的文章也都以Java语言作为示例居多。许多C#er为了转投大数据怀抱也开始学习Java。微软为了拥抱大数据在这方面也做了许多,提供了一些工具及库使C#可...

weixin_30607659的博客 306

谈谈 在 .Net 生态里为什么没有 Hadoop 系列 ?

在 .Net 生态里为什么没有 Hadoop 系列 ? 有需要 有 Hadoop 系列 吗 ? 转载于:https://www.cnblogs.com/KSongKing/p/9574482.html

weixin_34067980的博客 754

Hadoop安装(比较简单,适合刚入门的小伙伴)

本文介绍了Hadoop的安装,比较适合初学者,可以不用把时间浪费在这种无意义的安装上,把精力投入到实操环节

qq_63187057的博客 1265

HadoopCore-MapReduce

3.MapReduce简介 4.MapReduce运行流程 program——》master assign map散——>worker——》split逻辑切分——》localwrite到 disks (先暂存,解耦) assign reduce聚——》worker——》聚在一起——》output files 5.流程详解 1.pre-map:map前期准备 文件切分——》<k,v> 2.map: 打散 partition(hash值运算,按split进行划分)——》sort排序——》co

m0_49142509的博客 169
上一篇: Hadoop for .NET Developers(十三):实施更复杂的MapReduce作业
下一篇: 异步-没有线程
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值