`
langyu
  • 浏览: 888327 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
文章列表
    项目中有个需求:在不修改源代码的情况下,替换某个类的引用为我们自己的实现。用一个类似的简单例子来说明: public class CarHolder { private Car car; public CarHolder() { init(); } private void init() { c ...
    MapReduce Counter为提供我们一个窗口:观察MapReduce job运行期的各种细节数据。今年三月份期间,我曾经专注于MapReduce性能调优工作,是否优化的绝大多评估都是基于这些Counter的数值表现。MapReduce自带了许多默认Counter,可能有些朋友对它们有些疑问,现在我分析下这些默认Counter的含义,方便大家观察job结果。     我的分析是基于Hadoop0.21,我也看过Hadoop其它版本的Counter展现,细节大同小异,如果有差异的地方,以事实版本为主。     Counter有"组group"的概念,用于表示 ...
    平时我们不会关心生成的对象到底在JVM中占据多少内存,当发生像OutOfMemory或JVM内存异常增加或减少时才会花精力研究到底发生了什么事情。如果当我们发现有些对象确实很大,但超过我们预期时,我们就该关心下我们所期望创建的每个对象大致会在JVM中占用多少内存呢。这节我会试着以一个更循序诱导的方法来描述,希望可以说的更明白,下面开始: 当遇到OutOfMemory时我们该怎么办?     一般这个时候,作为我们程序员,心都会焦了,急于想知道到底是哪些对象引起内存不足。我们要做的就是dump heap,然后抓出来分析。这里有一张前些时间我也遇到的OOM问题截图:     从图上 ...
    在上篇blog中提到了HDFS的功能扩展点:Service plugin,它存在于NameNode和DataNode中。HDFS赋予它们可以操作这两个大对象的能力,这也完全提供我们在HDFS上进行开发的机会。这些开发可以是对HDFS现有功能的补充与完善,也可以是 ...
  用户对HDFS的每步操作都会先记录到NameNode磁盘中的EditLog文件中。为了避免频繁操作磁盘对用户操作效率的影响,HDFS为EditLog在内存中分配两个buffer:一个用于接收用户操作指令;另外一个在用户想要刷新第一个buffer内数据时开始担当接收用户指令的职责。之后两块buffer不断切换角色,进行着上述操作。   正是因为有内存中buffer的存在,当管理员shutdown NameNode时,就会丢失用户写入buffer且还没来得及刷新到磁盘中的那些操作记录。我们需要做的就是在NameNode加入shutdown hook,希望当NameNode接收到系统的关闭信 ...
程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。 这周看过很多代码,对里面的日志记录方式有些想法,今天是周末,也想总结下我对这个问题的看法。日志记录大家都会认为简单,但如何通过日志可以高效定位问题可不是简单的事情。这里我会写下面三个方面的内容,主要是举例为主,提醒我以后得注意这些方面 怎样记日志可以方便Troubleshooting 程序运行状态可以记哪些 应该避免怎样的日志方式 方便Troubleshooting的日志: 对外部的调用封装: 程序中对外部系统与模块的依赖调用前后都记下日志,方便接 ...
        今天在翻看HDFS中FSImage初始化部分时,其中有段代码是这样的: for (URI dirName : fsNameDirs) { boolean isAlsoEdits = false; for (URI editsDirName : fsEditsDirs) { if (editsDirName.compareTo(dirName) == 0) { isAlsoEdits = ...
/** * author : 冶秀刚 * mail     : dennyy99@gmail.com */         Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清 ...
分享为公司小组内部交流所做的Fair scheduler PPT。大家有什么看法或意见,请在下面留言,谢谢
        Fair Scheduler是由Facebook贡献给Hadoop社区的一种task调度策略。Facebook推出它的目的是在生产环境中替换毫无特点的MapReduce默认Scheduler。         Fair Scheduler的诞生源于加州大学Berkeley分校、Facebook与Yahoo的研究人员于2009年4月底发表的论文《Job Scheduling for Multi-User MapReduce Clusters》。他们在文章中不仅介绍了开发Fair Scheduler的动机,更重要的是,针对一些job效率的问题,他们开发了相应的解决方案,并做出详细 ...
        这篇来说道说道job在到达Job Tracker后会有哪些动作,涉及上篇job生命周期的第五步和第六步。因为job在初始化后紧接着需要应付Job Tracker对Task Tracker的task分发响应,所以我们从Job Tracker的分发过程倒着来看job初始化。 ...
        假设有这样一个游戏,一个人来出加减乘除的题目给很多小朋友来做,对每一个小朋友,给他出一道题目,然后让他算好后给你报告答案,你再给他出一道题目,周而复始如此。如果有十个小朋友在算,还可以欣赏小 ...
        Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性能。MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速有效的规则来实现优化代码性能的目的。 ...
                如果没有自己定制的调度策略,MapReduce就采用自带的JobQueue策略分发task。这种基于FIFO的策略挺简单,能满足基本的业务需求,但缺点也很明显,如不能实现job的实时性、所有TT的执行能力对用户共享等问题。当然这些只是按以往理解来概括,只有了解具体实现后,才能总结它的影响。本篇blog会从task 分发的流程入手,详细描述默认调度策略的细节,然后试着总结它的优点及不足。预期在对默认scheduling策略的能力有所掌握后,熟悉Facebook提供的Fair Scheduling策略。我相信合理的scheduling策略会对job执行有好地优化。那 ...
               初学Hadoop,准备用几篇日志来陈述MapReduce job的生命周期中job提交、task分发和task执行,以及JT scheduling策略,job性能参考等方面的知识。通过代码及参考资料想了解job执行的大致细节,期望在以后job性能调优时有所依据。与细节相关的代码参考于Hadoop-0.21.0版本。         MapReduce依赖Hadoop FileSystem存储job执行过程中需要的所有资源文件。这些文件有job的jar文件、job的配置文件、job的mapper需要处理的目标文件(输入文件)以及job的输出结果。MapRedu ...
Global site tag (gtag.js) - Google Analytics