设为首页 收藏本站
查看: 7978|回复: 0

[经验分享] 从Hadoop看普通算法在一个系统中的应用

[复制链接]

尚未签到

发表于 2015-7-14 10:55:02 | 显示全部楼层 |阅读模式
  之前看了一些简单的算法题目,感觉很有意思,而在自己做的工程项目开发过程中,却又感觉很少用到,大约是所做的工程太过于简单的缘故吧。最近在读《Hadoop权威指南》那本书,从中看到了不少算法的应用,举两个简单的例子来说。

      1.寻找最近的备份数据。
      在Hadoop中,用户可以指定要数据的备份数目,比如默认default的备份数目是3。那么在读取数据时,如果发现某个结点的数据已经损坏,则需要从另外的备份中进行读取。这样,从哪一个备份数据进行读取就是一个需要解决的问题。在Hadoop的实现中,程序会自动选择一个“最近”的备份节点上的数据进行读取。
      问题来了,“最近”是什么意思呢?
      鉴于带宽(bandwidth)是分布式系统中的一个稀缺资源,使用两个节点之间的带宽来描述距离看上去是一种合理的选择,然而,在实际应用中这却很难实现。
      Hadoop使用了一种简单的实现方法,它将网络描述为一个树形结构,然后用两个节点距离最近公共祖先的距离之和来描述这两个节点之间的距离!从下面的图1可以更加清楚地看出在Hadoop中节点之间的距离概念。其中d1和d2可能是两个数据中心,r1和r2可以是一个数据中心里的两台服务器。这样,就可以用这种抽象描述带宽距离了。
DSC0000.png
  这个问题恰巧是我前几天刚刚和朋友讨论过的问题,而说起它的原因是在面试笔试中经常遇到。具体的解决方法有很多,比如使用DFS进行树的遍历,然后求出到两个节点的路径,再进行对比。也有更为巧妙的算法,可以通过网络查找,在此就不进行赘述了。

      2. 数据压缩
      由于在HDFS(Hadoop所使用的分布式文件系统)上要进行大量的文件存储,所以文件压缩就是一种需要考虑的时间/空间折中方法。压缩解压过程消耗时间,但是压缩可以节省很多硬盘空间。Hadoop支持了包括ZIP等在内的多种压缩算法,而且像ZIP、bzip2这种Splittable的压缩算法尤其适用于MapReduce程序,因为就像字面上说的那样,压缩之后的文件可以拆分,程序可以seek到任意位置进行读取。
      我之前也用过一些压缩工具,但是对于压缩算法的具体实现第一次产生了好奇心。压缩在底层是怎样的实现机制?又应用了哪些算法?
      在压缩算法中我看到了一些常用的字符串匹配算法和赫夫曼编码的应用。通常的文本压缩算法思想是用较短的串代替那些经常出现的较长的字符串,对位置长度等进行标记。压缩算法有很多种,实现机制也各不相同,在这里我也不摘抄别人的总结了。

      总之,本文通过两个例子看到从课本上学习的以及在面试笔试中经常遇到的基础算法的应用所在。只有真的看到了应用,才能有更多的好奇心去学习和掌握。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-86623-1-1.html 上篇帖子: Hadoop学习:(二)hadoop的简介 下篇帖子: Hadoop最基本的wordcount(统计词频)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表