之前看了一些简单的算法题目,感觉很有意思,而在自己做的工程项目开发过程中,却又感觉很少用到,大约是所做的工程太过于简单的缘故吧。最近在读《Hadoop权威指南》那本书,从中看到了不少算法的应用,举两个简单的例子来说。
 
      1.寻找最近的备份数据。
      在Hadoop中,用户可以指定要数据的备份数目,比如默认default的备份数目是3。那么在读取数据时,如果发现某个结点的数据已经损坏,则需要从另外的备份中进行读取。这样,从哪一个备份数据进行读取就是一个需要解决的问题。在Hadoop的实现中,程序会自动选择一个“最近”的备份节点上的数据进行读取。
      问题来了,“最近”是什么意思呢?
      鉴于带宽(bandwidth)是分布式系统中的一个稀缺资源,使用两个节点之间的带宽来描述距离看上去是一种合理的选择,然而,在实际应用中这却很难实现。
      Hadoop使用了一种简单的实现方法,它将网络描述为一个树形结构,然后用两个节点距离最近公共祖先的距离之和来描述这两个节点之间的距离!从下面的图1可以更加清楚地看出在Hadoop中节点之间的距离概念。其中d1和d2可能是两个数据中心,r1和r2可以是一个数据中心里的两台服务器。这样,就可以用这种抽象描述带宽距离了。

这个问题恰巧是我前几天刚刚和朋友讨论过的问题,而说起它的原因是在面试笔试中经常遇到。具体的解决方法有很多,比如使用DFS进行树的遍历,然后求出到两个节点的路径,再进行对比。也有更为巧妙的算法,可以通过网络查找,在此就不进行赘述了。
 
      2. 数据压缩
      由于在HDFS(Hadoop所使用的分布式文件系统)上要进行大量的文件存储,所以文件压缩就是一种需要考虑的时间/空间折中方法。压缩解压过程消耗时间,但是压缩可以节省很多硬盘空间。Hadoop支持了包括ZIP等在内的多种压缩算法,而且像ZIP、bzip2这种Splittable的压缩算法尤其适用于MapReduce程序,因为就像字面上说的那样,压缩之后的文件可以拆分,程序可以seek到任意位置进行读取。
      我之前也用过一些压缩工具,但是对于压缩算法的具体实现第一次产生了好奇心。压缩在底层是怎样的实现机制?又应用了哪些算法?
      在压缩算法中我看到了一些常用的字符串匹配算法和赫夫曼编码的应用。通常的文本压缩算法思想是用较短的串代替那些经常出现的较长的字符串,对位置长度等进行标记。压缩算法有很多种,实现机制也各不相同,在这里我也不摘抄别人的总结了。
 
      总之,本文通过两个例子看到从课本上学习的以及在面试笔试中经常遇到的基础算法的应用所在。只有真的看到了应用,才能有更多的好奇心去学习和掌握。

转载于:https://www.cnblogs.com/funnydavid/archive/2010/11/24/1886274.html

从Hadoop看普通算法在一个系统中的应用相关推荐

  1. PCIe设备在一个系统中是如何发现与访问的

    PCIe设备在一个系统中是如何发现与访问的 硬盘是大家都很熟悉的设备,一路走来,从HDD到SSD,从SATA到NVMe,作为NVMe SSD的前端接口,PCIe再次进入我们的视野.作为x86体系关键的 ...

  2. awgn信道中的噪声功率谱密度_从OFC2020看高级算法在光通信中的应用

    ​ 各种神经网络算法(XNN)在大数据机器学习和人工智能领域有着十分广泛的应用,这些高级算法在分类.优化.自学习这些方面的突出能力和其在互联网及自动控制领域的优异表现是毋庸置疑的,自然这些年也是火得一 ...

  3. [PCIe]PCIe设备在一个系统中是如何发现与访问的

    首先我们来看一下在x86系统中,PCIe是什么样的一个体系架构.下图是一个PCIe的拓扑结构示例,PCIe协议支持256个Bus, 每条Bus最多支持32个Device,每个Device最多支持8个F ...

  4. win7在哪看计算机配置,Win7系统中在哪里看电脑配置好坏以及查看方法步骤

    今天来聊聊一篇关于Win7系统中在哪里看电脑配置好坏以及查看方法步骤的文章,现在就为大家来简单介绍下Win7系统中在哪里看电脑配置好坏以及查看方法步骤,希望对各位小伙伴们有所帮助. 方法步骤 方法一. ...

  5. 有苦有乐的算法 --- 在一个数组中,有一种数出现了奇数次,其余数都出现了偶数次,找到这种数

    题目 在一个数组中,有一种数出现了奇数次,其余数都出现了偶数次,找到这种数 例: [1,1,4] ==> 4 [1] ==> 1 [2,3,6,3,1,2,1] ⇒ 6 解析 因为N^N= ...

  6. ofdm解调算法_OFDM系统中固定频偏算法

    加入固定频偏: function berMatrix = freqOffsetOFDM(BPS,NS,M,SNR,ifftsize,carriers,N,ep) %标准OFDM系统 input_bit ...

  7. linux怎么看sda3内容,linux系统中/dev/sda3表示什么。急

    /dev/sda3表示的是硬盘分区. /dev/sda是指接在SATA.SCSI第一个接口上的硬盘. /dev/sda是指整个硬盘,实际使用中一般都会有分区,也就是/dev/sda1, /dev/sd ...

  8. 嵌入式Linux系统中的.lds链接脚本基础

    from:http://www.embeddedlinux.org.cn/html/xinshourumen/201203/04-1989.html 连接脚本的格式 ================= ...

  9. 视频监控系统中H.265、SVAC、GB/T28181、ONVIF、PSIA有什么区别?

    说H.265之前我们先要弄清H.264, H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一.国际上制定视频编解码技术的组织有两个,一个是"国际电联(ITU-T)&qu ...

最新文章

  1. 订单系统开发(仿淘宝和美团网) 之 项目总结(降低数据库并发量)
  2. linux内核网络协议栈--数据包的网卡转发流程(二十七)
  3. 设计模式之组合模式(Composite 模式)
  4. 【THUSC2018】史莱姆之友【长链剖分】【链分治NTT】
  5. php是根据html中的值查询数据条件_FleaPHP框架数据库查询条件($conditions)写法总结...
  6. python编程示例_Python套接字编程–服务器,客户端示例
  7. Matlab画图程序
  8. 艾司博讯:拼多多访客多但是成交率低
  9. 记录:The field files exceeds its maximum permitted size of 1048576 bytes...解决方案【亲测有效】
  10. 【转】美团O2O供应链系统架构设计解析
  11. java发送短信功能工具类及思路详解
  12. 线程的stop方法和interrupt方法
  13. 凸集 凸函数 判定凸函数
  14. 知识图谱问答 | (3) 关系分类概述
  15. 鸿蒙系统上海,鸿蒙系统助阵 华为新一代智慧屏升级五大分布式场景
  16. 自问自答(JavaScript篇)
  17. Kafka2.6版本权限认证
  18. PyCharm 字母大小写切换
  19. 图解http(七)-web的攻击技术
  20. [VLDB 2021]ICS-GNN_ Lightweight Interactive Community Search via Graph Neural Network

热门文章

  1. mysql解释命令,MySQL中EXPLAIN解释命令
  2. hibernate教程_Hibernate教程
  3. python 按位运算符_Python按位运算符
  4. wordpress评论框_如何通过过滤和阻止它们来抵御WordPress垃圾评论
  5. C++基础教程之数组
  6. JavaScript词法作用域和动态作用域
  7. delphi ini文件的基础读写。
  8. php中使用PHPExcel读写excel(xls)文件的方法
  9. Jenkins的配置(rpm red hat方式)
  10. Azkaban的Web Server源码探究系列22: 一次性执行execute的提交准备