分布式-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都十几个小时。是一种利用空间换时间的策略

 

 

 
内容概要:本文档定义了一个名为 `xxx_SCustSuplier_info` 的视图,用于整合和展示客户(Customer)和供应商(Supplier)的相关信息。视图通过连接多个表来获取组织单位、客户账户、站点使用、位置、财务代码组合等数据。对于客户部分,视图选择了与账单相关的记录,并提取了账单客户ID、账单站点ID、客户名称、账户名称、站点代码、状态、付款条款等信息;对于供应商部分,视图选择了有效的供应商及其站点信息,包括供应商ID、供应商名称、供应商编号、状态、付款条款、财务代码组合等。视图还通过外连接确保即使某些字段为空也能显示相关信息。 适合人群:熟悉Oracle ERP系统,尤其是应付账款(AP)和应收账款(AR)模块的数据库管理员或开发人员;需要查询和管理客户及供应商信息的业务分析师。 使用场景及目标:① 数据库管理员可以通过此视图快速查询客户和供应商的基本信息,包括账单信息、财务代码组合等;② 开发人员可以利用此视图进行报表开发或数据迁移;③ 业务分析师可以使用此视图进行数据分析,如信用评估、付款周期分析等。 阅读建议:由于该视图涉及多个表的复杂连接,建议读者先熟悉各个表的结构和关系,特别是 `hz_parties`、`hz_cust_accounts`、`ap_suppliers` 等核心表。此外,注意视图中使用的外连接(如 `gl_code_combinations_kfv` 表的连接),这可能会影响查询结果的完整性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值