关于分布式计算的开发与实现(一)

电脑杂谈  发布时间:2020-04-19 16:25:03  来源:网络整理

云计算分布式存储_云计算 分布式_分布式 计算

简而言之,分布式计算就是将一个大型计算任务分解为多个小型计算任务,然后将其分布到多台计算机上进行计算,然后汇总结果. 目的是分析和计算海量数据,从雷达监视的海量历史信号中分析异常信号(地球外文明),并实时计算淘宝双十一上各个地区的消费习惯.

计算的最初计划是提高独立计算(例如大型机)的性能. 后来,由于数据的爆炸性增长和无法跟上的独立性能,出现了一种折衷的解决方案,称为分布式计算. 一旦拆分了计算,问题将变得非常复杂,并且还会出现诸如一致性,数据完整性,通信,容灾和任务调度之类的问题.

例如,该产品需要100G用户从中购买数据,并分析各个地区的消费习惯数量. 如果没有时间,程序员小明将编写一个相应的业务处理服务程序,将其部署到服务器上,然后使其运行缓慢. 小明希望在10小时内完成处理. 后者的产品速度太慢,让小明找到了一种方法来加速3小时.

在正常开发中有很多类似的需求,结论是数据量很大,单机计算速度很慢. 如果您有较高的成本(例如Hadoop和Storm),而且成本较高,那就没用了. 当然,让老板购买更好的服务器配置也是一种方法.

小明作为一个有追求和理想的程序员,决定在独立计算和成熟的计算框架之间使用过多的解决方案,从而满足成本和需求. 分布式计算的核心在于计算任务的拆分. 如果数据可以水平拆分并分配到5台计算机上,则每台计算机仅计算自己数据的1/5,因此产品需求也可以在3小时内完成.

云计算 分布式_云计算分布式存储_分布式 计算

如上所述,小明需要根据某些维度对这些数据进行划分. 根据要求,最好按用户ID划分. 由于用户之间没有状态关联,因此不需要事务和第二次迭代计算. 小明使用简单的哈希模对ID进行划分.

<pre style="margin:0px;
    padding:0px;
    white-space:pre-wrap;
    overflow-wrap:break-word;
    font-family:"
    Courier New"
    !important;
    font-size:12px !important;
    ">f(memberid) % 5 = ServerN</pre>

这样,该程序可以部署在5台计算机上,然后该程序仅根据配置获取相应的剩余用户ID,然后计算结果并将其放入库中. 这样,多台机器之间没有连接,不需要通信,可以避免很多问题. 机器上的程序本身没有分布式特征. 它与单台机器相同. 它只需要计算自己获得的数据. 因此,如果特定计算机上的程序崩溃,则处理方法与单台计算机相同. 下一个计算将从当前进度继续进行.

使用分片相对简单,但具有以下缺点.

小明介绍了第三方消息队列. 小明首先使用一个单独的程序将用户信息推送到消息队列,然后每台计算机分别取消队列. 所以有3个角色:

云计算分布式存储_分布式 计算_云计算 分布式

尽管仅引入了第三方,但它已经具有分布式计算的许.

计算任务分配. 主服务器不断将需要计算的用户数据推送到消息队列中. 程序一致性. 工作人员可以订阅相同的消息队列,而无需更改程序代码. 任何扩展. 由于过程完全相同,这意味着如果要加快速度,可以重复将过程部署​​到新计算机上. 当然,这是理论上的,实际上,它将受到消息队列,存储等的限制. 容灾能力. 如果五个程序之一挂起,则不会受影响. 使用Rabbitmq的消息确认机制,当计算机崩溃时正在计算的数据将超时并在其他节点上使用.

关于Hadoop的介绍很多. 这里是一个简短的介绍,例如: “ Hadoop是用于海量数据计算和存储的基本平台体系结构”. 分析这句话.

以下是Hadoop的概述,并与小明的设计进行了比较:

浅谈分布式计算的开发与实现(一)

云计算 分布式_分布式 计算_云计算分布式存储

PS: 为便于描述,小明设计的分布式计算称为小和尚.

由于MapReduce计算的输入和输出基于HDFS文件分布式 计算,因此大多数公司的做法是将mysql或sqlserver的数据导入HDFS,然后在计算后将其导出到常规. 一. MapReduce的优点是它提供了一个相对简单的分布式计算编程模型,这使得此类程序的开发非常简单. 像以前的MPI编程一样,它非常复杂.

从广义上讲,MapReduce规范化了计算任务,这可以等同于Little Monk Worker的业务逻辑部分. MapReduce将业务逻辑分为两个主要部分,即Map和Reduce. 您可以先在Map部件中计算一半任务,然后将其扔到Reduce部件中以继续计算. 当然,也可以在“地图”部分中完成计算任务.

如果将小明产品经理的要求放到Hadoop中,则处理流程大致如下:

将100G数据导入HDFS并根据Mapreduce接口写入处理逻辑,该接口分为Map和Reduce. 将程序包提交到Mapreduce平台并将其存储在HDFS中. 平台中有一个名为Jobtracker流程的角色,用于分配任务. 这类似于年轻和尚的主负载计划管理. 如果有5台计算机进行计算,它将预先运行5个称为TaskTracker的从属进程. 这类似于小和尚工人的分离版本. 该平台将程序与业务逻辑分开. 简而言之,它在机器上运行一个独立的进程. 它可以动态加载和执行jar或dll的业务逻辑代码. Jobtracker将任务分发给TaskTracker之后,TaskTracker将开始动态加载jar包,创建一个独立的进程来执行Map部件,然后将结果写入HDFS. 如果有减少部分,则TaskTracker将创建一个独立的进程,以通过RPC通过Map将HDFS文件输出远程拉到本地. 拉取成功后,Reduce开始计算后续任务. 然后Reduce将结果写入HDFS,并从HDFS导出结果.

云计算 分布式_云计算分布式存储_分布式 计算

似乎简化了简单的计算任务. 实际上,如果只有几个计算任务,那么使用Mapreduce确实是一个杀手er. 如果在数百个计算节点上运行着TB,PB级数据,那么Mapreduce的优势将得到体现. 计算框架如下:

浅谈分布式计算的开发与实现(一)

Mapreduce和年轻的和尚通常称为脱机计算,因为它们计算已保留且无法实时响应的文件数据. 另一个原因是其处理速度相对较慢. 其输入和输出源基于HDFS设计. 如果一开始没有将数据写入HDFS,它将涉及数据导入和导出,这比较耗时. 而且,其数据流基于文件系统. Map部分输出的数据不会直接传输到Reduce部分,而是先写入HDFS,然后传输.

处理速度慢也是Mapreduce的缺点,这促使后来的实时计算诞生.

另一个缺点是Mapreduce的计算任务流程相对简单,它只有两部分: Map和Reduce. 只需编写一部分逻辑即可解决. 如果要将其拆分为多个部分,例如逻辑A,逻辑B,逻辑C等,并且计算逻辑的一部分取决于先前计算的结果,则MapReduce更加难以处理. 在下一章中将继续添加诸如Storm框架之类的解决方案来解决此类问题,也称为流计算.

浅谈分布式计算的开发与实现(一)

根据上面涉及的知识点,我总结了具有1至5年开发经验的程序员在采访中涉及的大多数体系结构采访问题和答案. 对于每个人(包括Dubbo,Redis分布式 计算,Netty,zookeeper,Spring cloud,分布式,高并发和其他架构技术信息),我希望能帮助您在面试之前进行回顾并找到一份好工作,同时也希望您免于搜索信息. 您有时间学习,也可以跟随我在以后分享更多干货.

浅谈分布式计算的开发与实现(一)

浅谈分布式计算的开发与实现(一)


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-181386-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 王静楠
        王静楠

        直接成为一艘在南海核心地区用不沉没的航母

      • 裴思谦
        裴思谦

        必须小心~

      热点图片
      拼命载入中...