Hadoop之分布式技术


文章目录

  • Hadoop之分布式技术
    • 1. 我们为什么需要分布式
      • 1.1 计算问题
      • 1.2 存储问题
    • 2. 分布式系统概述
    • 3. 分布式实现方案
    • 4. 分布式系统
    • 5. 集群
    • 6. 负载均衡
    • 7. 弹性
    • 8. 故障转移

1. 我们为什么需要分布式

1.1 计算问题

无论是我们在学校刚开始学编程,还是在刚参加工作开始处理实际问题,写出来的程序都是很简单的。因为面对的问题很简单。以处理数据为例,可能只是把一个几十K的文件解析下,然后生成一个词频分析的报告。很简单的程序,十几行甚至几行就搞定了。

直到有一天,给你扔过来1000个文件,有些还特别大,好几百M了。你用之前的程序一跑,发现跑的时间有点长。于是想要去优化下。1000 个文件,互相还没业务联系,用多线程呀,一个线程处理一个文件,结果再汇总就搞定了。如果多线程效果不够好,比如像 Python 的多线程,没法利用多核的威力,那就用多进程。

无论是线程、进程,本质上,目的都是为了计算的并行化,解决的是算的慢的问题。而如果计算量足够大,就算榨干了机器的计算能力,也算不过来,咋办?

一台机器不够,那就多搞几台机器嘛。所以就从多线程/进程的计算并行化,进化到计算的分布式化(当然,分布式一定程度上也是并行化)。

1.2 存储问题

另一方面,如果处理的数据有10T,而你手上的机器只有500G 的硬盘,怎么办?

  • 一种办法是纵向扩展搞一台几十T硬盘的机器

  • 另一种是横向扩展多搞几台机器,分散着放

前者很容易到瓶颈,毕竟数据无限,而一台机器的容量有限,所以在大数据量的情况下,只能选后者。把数据分散到多台机器,本质上解决的是存不下的问题。

同时,刚才提到计算分布式化后,总不能所以程序都去同一台机器读数据吧,这样效率必然会受到单台机器性能的拖累,比如磁盘 IO网络带宽等,也就逼着数据存储也要分散到各个机器去了。

基于这两个原因,数据存储也分布式起来了。

2. 分布式系统概述

  • 百度百科

一种基于网络的计算机处理技术,与集中式相对应。由于个人计算机的性能得到极大的提高及其使用的普及,使处理能力分布到网络上的所有计算机成为可能。分布式计算是和集中式计算相对立的概念,分布式计算的数据可以分布在很大区域。

**分布式系统是一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。**简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。

  • 分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。

从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。

3. 分布式实现方案

4. 分布式系统

举例如下:

张三的公司有3个系统:系统A,系统B和系统C,这三个系统所做的业务不同,被部署在3个独立的机器上运行,他们之间互相调用(当然是跨域网络的),通力合作完成公司的业务流程。

将不同的业务分部在不同的地方,就构成了一个分布式的系统。

但是现在问题来了,系统A是整个分布式系统的脸面,用户直接访问,用户访问量大的时候要么是速度巨慢,要么直接挂掉,怎么办?

由于系统A只有一份,所以会引起单点失败

总结:分布式系统需要达到以下内容的基本要求

5. 集群

如果张三的公司不差钱,可以选择多买几台机器, 张三把系统A一下子部署了好几份(例如下图的3个服务器),每一份都是系统A的一个实例,对外提供同样的服务,这样,就不怕其中一个坏掉了,还有另外两个呢。

这三个服务器的系统就组成了一个集群。

可是对用户来说,一下子出现这么多系统A,每个系统的IP地址都不一样,到底访问哪一个呢?

如果所有人都访问服务器1.1,那服务器1.1会被累死,剩下两个闲死,成了浪费钱的摆设。

接下来就出现了负载均衡功能

6. 负载均衡

张三要尽可能的让3个机器上的系统A工作均衡一些,比如有3万个请求,那就让3个服务器各处理1万个(理想情况),这叫负载均衡

很明显,这个负载均衡的工作最好独立出来,放到独立的服务器上(例如Nginx

后来张三发现,这个负载均衡的服务器虽然工作内容简单,就是拿到请求,分发请求,但是它还是有可能挂掉,单点失败还是会出现。没办法,只好把负载均衡也搞成一个集群,这个集群和系统A的集群有两点不同:

  • 我们可以用某种办法,让这个机器对外只提供一个IP地址,也就是用户看到的好像只有一个机器。

  • 同一时刻,我们只让一个负载均衡的机器工作,另外一个原地待命,如果工作的那个拐到了,待命的那个就顶上去。

7. 弹性

弹性又名为伸缩性

如果3个系统A的实例还是满足不了大量请求,例如双十一,可以申请增加服务器,双十一过后,新增的服务器闲置,成了摆设,于是张三决定尝试云计算,在云端可以轻松的创建,删除虚拟的服务器,那样就可以轻松的随着用户的请求动图的增减服务器了。

8. 故障转移

上面的系统看起来很美好,但是做了一个不切实际的假设:所有的服务都是无状态的,换句话说,假设用户的两次请求直接是没有关联的。

但是现实是,大部分服务都是有状态的,例如购物车。

举例:

  • 用户访问系统,在服务器上创建了一个购物车,并向其中加了几个商品,然后服务器1.1挂掉了,用户后续访问就找不到服务器1.1了,这时候就要做失效转移,让另外几个服务器去接管,去处理用户的请求。

  • 可是问题来了,在服务器1.2,1.3上有用户的购物车吗?如果没有,用户就会抱怨,我刚创建的购物车哪里去了?还有更严重的,假设用户登录过得信息保存到了该服务器1.1上登录的,用户登录过的信息保存到了该服务器的session中,现在这个服务器挂了,用的session就不见了,会把用户踢到了登录界面,让用户再次登录!

处理不好状态的问题,集群的威力就大打折扣,无法完成真正的失效转移,甚至无法使用。怎么办呢?

  • 一种办法是把状态信息在集群的各个服务器之间复制,让集群的各个服务器达成一致。

  • 还有一种办法, 就是把几种状态信息存储在一个地方,让集群服务器的各个服务器都能访问到。

结束!

Hadoop之分布式技术相关推荐

  1. 大数据开发技术课程报告(搭建Hadoop完全分布式集群操作集群)

    文章目录 大数据开发技术课程报告内容及要求 一. 项目简介和实验环境 二. 虚拟机的各项准备工作 三. 安装JDK并配置环境变量 四. 安装Hadoop并配置环境变量 五. 配置Hadoop完全分布式 ...

  2. [大数据技术与应用省赛学习记录二]——模块一(HADOOP完全分布式集群搭建)

    **在操作前,先梳理一下HADOOP完全分布式需要做些什么,不然像无头的苍蝇一样,永远不知道做什么.因为我本人比赛是一台服务器Centos 7,与三台客户端Ubuntu 18.04,所以以物理机的角度 ...

  3. hadoop的同类技术_Hadoop 气数已尽:逃离复杂性,拥抱云计算

    虽然大数据依然如日中天,但该领域曾经的领头羊 Cloudera.Hortonworks 和 MapR 三家公司最近步履蹒跚,多少掩盖了其几分风光.作为曾经的数据宠儿,过去筹集到的巨额投资源源不断. 例 ...

  4. 基于SQL on Hadoop的数据仓库技术

    http://www.uspeed.com.cn/958.html 数据仓库是企业统一的数据管理的方式,将不同的应用中的数据汇聚,然后对这些数据加工和多维度分析,并最终展现给用户.它帮助企业将纷繁浩杂 ...

  5. 学习笔记:The Log(我所读过的最好的一篇分布式技术文章

     学习笔记:The Log(我所读过的最好的一篇分布式技术文章)         前言 这是一篇学习笔记. 学习的材料来自Jay Kreps的一篇讲Log的博文. 原文很长,但是我坚持看完了,收获 ...

  6. 用 Hadoop 进行分布式并行编程, 第 1 部分 基本概念与安装部署

    Hadoop 简介 Hadoop 是一个开源的可运行于大规模集群上的分布式并行编程框架,由于分布式存储对于分布式编程来说是必不可少的,这个框架中还包含了一个分布式文件系统 HDFS( Hadoop D ...

  7. hadoop应用开发技术..._大数据技术与应用——万物皆可数据化

    万|物|皆|可|数|据|化 大数据技术与应用  专业概况 专业名称:大数据技术与应用 专业代码:610215 专业方向:数据可视化技术 数据采集与处理  行业趋势  近几年来,互联网行业发展风起云涌, ...

  8. Hadoop完全分布式安装Kafka

    应用场景 按照搭建hadoop完全分布式集群博文搭建完hadoop集群后,发现hadoop完全分布式集群自带了HDFS,MapReduce,Yarn等基本的服务,一些其他的服务组件需要自己重新安装,比 ...

  9. Hadoop大数据技术复习资料

    Hadoop大数据技术复习资料 ​ 钟兴宇 1.选择题15空,共30分. Hadoop以HDFS(Hadoop Distributed File System,Hadoop 分布式文件系统)和MapR ...

最新文章

  1. oracle rac 磁盘重建,Oracle RAC环境下重建ASM磁盘组 Re-create ASM diskgroup with Oracle RAC...
  2. Redis入门教程(一)
  3. 英雄联盟手游锐雯有多么强大,新手教程全给你,瑞文很简单
  4. LVS+Keepalived实现高可用集群
  5. sysctl.conf文件详解
  6. 信息学奥赛一本通 1022:整型与布尔型的转换 | OpenJudge NOI 1.2 09
  7. bootstrap与jQuery结合的动态进度条
  8. java quartz Scheduler 操作Trigger
  9. jQuery第一个孩子“这个”
  10. Maximal Binary Matrix CodeForces - 803A (贪心+实现)
  11. 20151212Jquery 工具函数代码备份
  12. linux值centos7安装docker
  13. Rust Async: Pin概念解析
  14. sony手机刷linux,索尼Z3 Z3C 5.0系统刷recovery教程_Sony Z3第三方recovery
  15. 安国U盘量产无法识别芯片处理
  16. 乐高叉车wedo教案_特色课程——乐高wedo动力机械
  17. switch怎么用字符c语言,switch怎么用c语言-switch用c语言讲解
  18. 微信小程序如何快速达到1000UV流量主开通要求
  19. 三维空间两直线/线段最短距离、线段计算算法
  20. python 金额计算_Python | 根据销售金额计算折扣

热门文章

  1. 通过74HC595控制数码管显示
  2. 有1分,2分,5分,10分四种硬币,每种硬币数量无限,给定n分钱,求有多少种组合可以组合成n分钱?
  3. 如何对微信订阅公众号用户进行打标签分组管理
  4. 指纹挂锁方案公司开发
  5. 想转专业数据科学(机器学习),需要学哪些课程?
  6. 页面旁边莫名出现div role=log的元素的解决方法
  7. 二叉树学习之二 二叉树深度与二叉树遍历
  8. 中国联通对混改落实传闻不予置评 称今日将公告
  9. 移动端多页面应用(MPA)的开发(一)
  10. 磁盘分区之MBR分区方式