大数据学习随笔1.(启蒙)

启蒙

  • 大数据的核心价值观

    • 并行计算,分而治之
    • 计算向数据移动
  • 思考怎么使用单机去解决大数据问题

    • 问题1:如果想要从100000个数字中去查询某一个数字是否存在
      •   方法:遍历查询:(时间复杂度为O(n)
    • 如果想要时间复杂度达到O(4)呢?(理想状态下)
      • 思路:使用hash思想降低时间复杂度
      • 做法:设计一个长度为25000的数组,每个数组存长度为4的链表来存储这100000个数据(假设这100000个数字可以均匀地分布在这个数组中)。把每个数字取其hash值模上25000,放进这个数组中。然后拿目标值取hash值模上25000,找到目标下标,遍历其中的链表。
      • 结论:分开存储并且记录索引信息,可以降低算法时间复杂度。
    • 问题2:如果有一个1T的文本文件,仅有一台内存为百M的计算机。如何查询出这个文本文件中那条记录出现了两次。
      • tips:单机计算机的计算瓶颈为磁盘I/O。假设读取速度为每秒300M。那么读取一次1T的文件为约1个小时。
      • 思路:因为内存有限,无法将数据完全读取到1台机器上。
      • 方法1:逐条便利对比。需要n次遍历这个文本去逐条比对。时间是指数级别的。
      • 方法2:分而治之:先遍历一次文本。将每条数据取hash值模上10000的方法,将每条数据分别存储到不同的10000个文件中。再遍历这10000个文件,相当于遍历一遍源文件。这样只需要两次I/O,2个小时左右就能解决这个问题。
    • 如果想要将时间压缩到分钟级,甚至秒级。
      • 思路:单台机子遍历1次I/O就需要3个小时。不可能单机做到。
      • 拓展:只能依靠多机分布式。
      • 思路1:将文件切割分发到10000台机器上,每台机器有100M的数据。并行去对本机的数据进行hash计算,排序。每台机子去抓取本机的hash值取模10000的数据,进行并行计算得出结论。
      • 思考:多机器计算真的快吗?如果算上数据分发的时间呢。网络IO也是计算机计算的瓶颈之一。每秒100MB的网络分发速度加上。光分发速度就需要3个小时。那么多机器分布式计算真的块吗?
    • 如果说每天都产生1T数据?每天都要对所有数据进行计算呢。当时间来到1个月后,单机和多机相比较哪个快。
      • 结论:多机器块。在第30天的时候,数据来到了30T。单机遍历两次将近30个小时。而多机器呢:每天需要3个小时去分发数据。到最后,每台机器上也就将近3000MB的数据。遍历以及计算时间相对于3个小时接近忽略不计。
      • 思考:那么如果数据的积累来到了1年呢?单机几乎就处理不了了。多机器仍旧能在1天内去计算解决。
  • 思考:以上单机解决大数据问题的探索带来的结论。

    • 结论1:
      • 当数据量达到一定程度的规模时,普通的服务器很难短时间内去计算解决问题(需要很高成本的高级服务器才有可能)。所以需要多台廉价服务器分布式存储,并行计算去解决问题。
    • 结论2:
      • 分布式环境下,网络的I/O是多机处理问题的速度瓶颈。那么数据的移动的时间成本很大。而计算程序基本很小。所以我们需要计算去向数据移动。尽量使用本地数据,减少网络I/O。

 

                           

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值