分布式-why

由于在写这篇博客之前,已经接触一些Hadoop的基础知识,我先把之前所学的一些基本概念和理解分享到这里,导图如下。

 

 

 

 

 遵从着学习新知识的三大入手点(Why What How)出发。首先认识大数据先要理解 什么是 大的数据,为什么会有这项技术的诞生,有那些基本的思想,哪些具体的实现技术以及如何去部署实现的呢。

今天先从Why开始:

  • 单机处理大数据能力有限

处于一个海量数据的时代,IT工作接触最多的事就是去提取有效数据进行分析,然后为人们所用,我这边先引入一个小案例: 

 

有一个非常大的文本文件,里面有n行,但是只有两行完全一样,出现在了未知的位置,请问你如何去找到它们。

 

一般人碰到这种问题,这还不简单,写一个for循环依次针对每一行去比较,最终总会比较出结果的。然而,当你真正接触这个问题时,远没你想的那么简单。

首先,你得理解什么是非常大的文件,可能连你那电脑1T的磁盘都不够存的,这边比如说是4个T的数据,你说我用一台服务器存,好吧,存是够了,你还要去计算呢,你还要写函数去筛选出重复行呢。现在好点的服务器有256G的内存也算是高配置了,咱们就以这个配置为例。

 

先要把这4T的数据存进服务器吧,先不考虑机器带宽的限制,10G网卡吧,传输理论上可以达到1.25GB/s ,普通服务器都是7200R机械硬盘。

 

  • 1、网络开销
    • 4T数据10G网络传输时间:(4*1024*1024)/(10000/8)/60=55.9分钟
  • 2、磁盘开销
    • 单盘raid0:机械硬盘最大读写速度200MB/s
    • (4*1024*1024)/200/60=350分钟 靠近6小时
    • 写入磁盘,读取靠近12小时

发现网络IO上并不构成瓶颈,真正的IO瓶颈是磁盘IO

内存寻址比Io寻址快10万倍

 

 

注:

1、网络开销计算

宽带速率的计量单位通常以bps或者bit/s(比特/秒)来表示,即每秒可传输的位数,8bit(比特)=1B(字节),而存储单位通常是以 B字节 来进行表示,1024B=1KB,1024KB=1MB,1024MB=1GB,所以理论上10Gbps的带宽最大传输速率是10000Mbps/8=1250MB/s;

2、磁盘开销计算

固态硬盘机械硬盘最大的体验差距在于4k小文件随机读取和寻道时间(可以理解为响应延时),固态硬盘读取速度一般为500MB/s,机械硬盘读写速度大概是100-200MB/s。这里的读取速度是指连续读取速度,固态硬盘在传输速度上有很大的优势,最高可达500M/秒,其中读取速度达到400-600M每秒,写入速度同样可以高达200M每秒。对于1G的文件只需几秒就可搞定,而传统的IDE硬盘读取速度极限是无法超越200M每秒,写入速度也很难突破100M每秒。

 

常见硬盘接口标准

 

各种raid比较

链接:https://pan.baidu.com/s/1ps-X693xIidQbaFn6uhGTg 
提取码:yo5m 

  • 分治思想

首先引入一个案例,想想你会怎么做?

需求:

我有一万个元素(比如数字或单词)需要存储?

如果查找某一个元素,最简单的遍历方式复杂的是多少?

如果我期望复杂度是O(4)呢?

 

会不会让你想起了之前数据结构所学习的排序算法,以及那一连串的复杂度。其中有一种很优秀的算法让我记忆犹新,归并排序,最后的快排也是引用了归并的一些思想。

归并排序也很完美地诠释了 什么是分治思想,实现算法从步行到上树的质变。

归并排序动态图解

链接:https://pan.baidu.com/s/11buPz8glBVcdVxFbewvhBA 
提取码:71ne

回到正题,如何从10000个数里查找并还要保证O(4)的复杂度呢。

按照正常的逻辑链表存储这些数字,如果运气不好需要遍历所有数字。

首先利用hash算法,把所有的元素进行归一化统一长度,所有的数被2500取模后,有0-2499种结果。(前提说明一下 这个案例说的并不严谨,假设排序是平均分布的,刚好有2500个数组,则每个数组长度不会超过4)。首先计算你要查找值对应取模的结果,然后去这个结果对应的数组去找,最大复杂度只有O(4),这个案例中成功的利用取模函数进行分组,达成分治目的。

从上面的案例可以看出,面对大批量的数据处理和分析,分治思想的重要性。

 

  • 分布式处理

分布式处理,巧妙地利用分治思想,避开了单机的磁盘IO瓶颈。

 

1、每台机器只进行两次小数据量的磁盘IO,速度很快,然后各自读入内存进行计算,形成以0-1999为索引的2000个数组。

2、每台机器留一种索引,将其余的索引内容传输至其他的节点,网络开销也很小,每台节点分别进入内存判断有没有重复的行内容。

3、处理数据的全程,两次磁盘IO+一次网络IO+两次磁盘IO 都在秒级,完全不用像单机那样每次IO都十几个小时。是一种利用空间换时间的策略

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值