热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Mapreduce计算框架涉及的技术(1)-从单节点单进程到多节点多进程

单节点计算机的计算能力和数据存储能力有限,因此,在进行大规模数据处理时必须使用由多个计算机节点组成的集群。但是在集群这样一个分布式环境下传统单机环境有很大的不同,具体体现在:a)计算任务

     单节点计算机的计算能力和数据存储能力有限,因此,在进行大规模数据处理时必须使用由多个计算机节点组成的集群。但是在集群这样一个分布式环境下传统单机环境有很大的不同,具体体现在:

a)  计算任务的划分

b)网络不确定性,分布式环境下的进程间同步互斥等

c)系统硬件的不确定性,集群环境下硬件出现故障是常态

d)系统软件的不确定性,

本文从一个简单的计算场景开始 分析 分布式计算环境涉及的技术。

一,简单的程序场景

    我们做如下考虑,对输入数据集进行排序。随着输入数据集的不断增加,计算资源也从单计算节点增加到多计算节点。我们不利用任何分布式系统,用脚本例如bash来实现利用多计算节点同时并行处理数据。场景变化顺序:单节点单进程---》单节点多进程---》多节点多进程


图1 三个简单的程序场景

在第一个场景向第三个场景变化过程中,需要用脚本实现的功能包括

a)输入数据划分和拷贝,将输入数据分别远程拷贝到各个计算节点

b)启动数据处理进程,分别启动各个节点上的处理集成

c)等待计算过程结束,全部节点计算完成,整个任务才算结束

c)将计算结果拷贝到一起,将各个节点上的处理结果拷贝到同一个节点


这个过程会面临以下几个主要问题

1)数据划分不合理,数据(任务)划分只能够以粗粒度的方式进行,会导致个节点完成任务的时间相差很大,导致资源浪费

2)数据拷贝过程复杂,拷贝数据须对网络进行配置,同时频繁的数据拷贝降低了程序的可移植性

3)无法监控任务的处理进度,主程序只能够被动等待各节点运行结果

4)无法处理系统异常,即便有机器当机或进程崩溃,程序也无法进行异常处理,例如重新启动处理进程


分布式计算环境应该解决以上问题,提供以下功能

1)自动任务划分和调度

2)监控任务执行的过程

3)对各种异常进行自动化处理

4)以合理粒度划分计算任务


二 分布式存储系统和并行计算框架

分布式存储系统和并行计算框架可以解决以上问题,


图 2 分布式计算框架和分布式存储系统



    分布式文件系统

    a)提供全局的文件命名空间,不同节点上的进程均可以看到相同的目录数据

    b)数据分块支持并行IO,多备份支持高可靠性,

    c)输入文件和输出文件在同一个逻辑地址,使程序可移植性好

    并行计算框架

    a)通过agent启动各节点上的处理进程(如mapreduce中的jobstracker)

    b)任务划分(调整输入数据集的划分粒度,使系统处理能力达到最优)

    c)监控各任务的运行过程,一切系统优化的基础

    d)合理异常处理(节点当机、进程异常退出、任务计算时间过长等)

三 分布式文件系统应该具备的功能

   抽象:     如何做到高可靠性(多备份)     如何做到高可扩展性(scale out)     如何做到高性能(数据分块,并行IO)    具体:     数据如何放置和定位,集中式元数据寻址或一致性hash寻址     数据如何分块和备份,设置特定大小的数据块     存储节点当机或磁盘损坏,数据怎么迁移     新增加存储节点或磁盘,数据怎么迁移     如何保证同一数据块的多个备份具有强一致性     存储系统出现异常,怎么恢复数据    存储系统对外接口(cmd,api,posix)

四 小结

    MapReduce,MPI是两个常见的并行处理框架,分布式文件系统为并行计算框架提供了必要的基础设施。









推荐阅读
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
  • 本文介绍了在sqoop1.4.*版本中,如何实现自定义分隔符的方法及步骤。通过修改sqoop生成的java文件,并重新编译,可以满足实际开发中对分隔符的需求。具体步骤包括修改java文件中的一行代码,重新编译所需的hadoop包等。详细步骤和编译方法在本文中都有详细说明。 ... [详细]
  • 本文介绍了在Android Studio中使用命令行build gradle的方法,并解决了一些常见问题,包括手动配置gradle环境变量和解决External Native Build Issues的方法。同时提供了相关参考文章链接。 ... [详细]
  • 本文总结了初学者在使用dubbo设计架构过程中遇到的问题,并提供了相应的解决方法。问题包括传输字节流限制、分布式事务、序列化、多点部署、zk端口冲突、服务失败请求3次机制以及启动时检查。通过解决这些问题,初学者能够更好地理解和应用dubbo设计架构。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • Hadoop2.6.0 + 云centos +伪分布式只谈部署
    3.0.3玩不好,现将2.6.0tar.gz上传到usr,chmod-Rhadoop:hadophadoop-2.6.0,rm掉3.0.32.在etcp ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • systemd-nspawn可以创建最轻量级的容器(ns的意思就是namespace),本文的实验平台是Ubuntu16.04,x86_64机器。本文的目的是:在Ubuntu中用syst ... [详细]
  • 我创建了一个SSH密钥,当我以admin身份在GitBash中运行ssh-Tgit@gitlab.com时,我得到W ... [详细]
  • MySQL5.6.40在CentOS764下安装过程 ... [详细]
author-avatar
平平您好
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有