热门标签 | 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是两个常见的并行处理框架,分布式文件系统为并行计算框架提供了必要的基础设施。









推荐阅读
  • 从0到1搭建大数据平台
    从0到1搭建大数据平台 ... [详细]
  • Hadoop的文件操作位于包org.apache.hadoop.fs里面,能够进行新建、删除、修改等操作。比较重要的几个类:(1)Configurati ... [详细]
  • ### 优化后的摘要本学习指南旨在帮助读者全面掌握 Bootstrap 前端框架的核心知识点与实战技巧。内容涵盖基础入门、核心功能和高级应用。第一章通过一个简单的“Hello World”示例,介绍 Bootstrap 的基本用法和快速上手方法。第二章深入探讨 Bootstrap 与 JSP 集成的细节,揭示两者结合的优势和应用场景。第三章则进一步讲解 Bootstrap 的高级特性,如响应式设计和组件定制,为开发者提供全方位的技术支持。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • 利用ZFS和Gluster实现分布式存储系统的高效迁移与应用
    本文探讨了在Ubuntu 18.04系统中利用ZFS和Gluster文件系统实现分布式存储系统的高效迁移与应用。通过详细的技术分析和实践案例,展示了这两种文件系统在数据迁移、高可用性和性能优化方面的优势,为分布式存储系统的部署和管理提供了宝贵的参考。 ... [详细]
  • 数字图书馆近期展出了一批精选的Linux经典著作,这些书籍虽然部分较为陈旧,但依然具有重要的参考价值。如需转载相关内容,请务必注明来源:小文论坛(http://www.xiaowenbbs.com)。 ... [详细]
  • Kafka 是由 Apache 软件基金会开发的高性能分布式消息系统,支持高吞吐量的发布和订阅功能,主要使用 Scala 和 Java 编写。本文将深入解析 Kafka 的安装与配置过程,为程序员提供详尽的操作指南,涵盖从环境准备到集群搭建的每一个关键步骤。 ... [详细]
  • 本文介绍了如何在 Windows 系统上利用 Docker 构建一个包含 NGINX、PHP、MySQL、Redis 和 Elasticsearch 的集成开发环境。通过详细的步骤说明,帮助开发者快速搭建和配置这一复杂的技术栈,提升开发效率和环境一致性。 ... [详细]
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文详细介绍了如何安全地手动卸载Exchange Server 2003,以确保系统的稳定性和数据的完整性。根据微软官方支持文档(https://support.microsoft.com/kb833396/zh-cn),在进行卸载操作前,需要特别注意备份重要数据,并遵循一系列严格的步骤,以避免对现有网络环境造成不利影响。此外,文章还提供了详细的故障排除指南,帮助管理员在遇到问题时能够迅速解决,确保整个卸载过程顺利进行。 ... [详细]
  • 在Ubuntu系统中配置Python环境变量是确保项目顺利运行的关键步骤。本文介绍了如何将Windows上的Django项目迁移到Ubuntu,并解决因虚拟环境导致的模块缺失问题。通过详细的操作指南,帮助读者正确配置虚拟环境,确保所有第三方库都能被正确识别和使用。此外,还提供了一些实用的技巧,如如何检查环境变量配置是否正确,以及如何在多个虚拟环境之间切换。 ... [详细]
  • MongoDB核心概念与基础知识解析
    MongoDB 是一种基于分布式文件存储的非关系型数据库系统,主要采用 C++ 语言开发。本文将详细介绍 MongoDB 的核心概念和基础知识,包括其与传统 SQL 数据库的区别,数据库及集合的基本操作,如数据的插入、更新、删除和查询等。通过本文,读者可以全面了解 MongoDB 的基本功能及其应用场景。 ... [详细]
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社区 版权所有