自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 国内技术人员与国外技术人员差多远

[size=medium]早上同事问到这个问题,回答时顺道总结了我以往的一些看法。这个问题我以前就问过我自己,在接触过很多不同的技术人员后,慢慢形成一些观点。不一定对,权当记录吧。我是感觉国内的技术人员(99%)与国外技术人员之所以差距相当明显,可能有三个原因一、英文是第一大障碍 硬着头皮把《The C programming language》啃一遍后,再去看谭浩强的C...

2014-01-23 09:01:23 559

原创 如何查找与定位问题

[size=medium]借着最近有些时间的机会,分享一个主题:《[color=blue]如何查找与定位问题[/color]》这里总结的是过去几年工作之中,我所遇到的查找问题的思路与一些有用的工具。从我的经验来看,可以解决80%的online问题。当然,重在运维方向,基本没有涵盖软件bug。[/size][color=blue][b][size=x-large]内容大纲[/size...

2013-03-25 16:47:04 249

对Hadoop的SWOT分析

[size=medium]在当前大数据研究与应用如火如荼的时代,Hadoop毅然成为业界的翘楚。我想本着客观的态度,从旁观者的角度分析当前Hadoop所面对的机遇与挑战。在我的认识中,SWOT分析还算全面,所以就选择这样的分析思路。当然,我分析Hadoop的初衷是我认同Hadoop所代表的方向,但不具体只是Hadoop这个产品。这个方向就是以Hadoop为代表的大数据的存储与分析平台。因此后面...

2012-06-01 09:46:48 234

原创 Hadoop离Online系统有多远

[size=medium] 长久以来,说起Hadoop,大家只会想到它能承担offline系统的分析工作。的确,它在这个方面做的是很优秀了。如果有人说:Hadoop也可以担当online系统的一部分呀!我们可能就会替这个人悲哀了,是吧?为了更好地认识Hadoop的“所为”,我想暂时抛开技术的细枝末节,逐一梳理下Hadoop的各个组件,试着分析下Hadoop离担当online系统之大任还差...

2012-05-29 18:43:01 144

程序告诉你的事情(节省自己的时间)

[size=medium] 系统运行在QA或产品环境上才是真正考虑我们程序员的时候。QA和OP看到任何异常时会求助于我们,然后我们经常的动作可能是:询问QA和OP问题出现的症状,登录到服务器上,查看日志和环境,分析问题。长此以往,发现自己的时间一天天浪费在回复QA:build是老的,网络中断,配置不是最新的,系统初始化失败,。。。 从我自己的经验来看,绝大部分报上来的问题是环境...

2012-05-15 18:55:38 138

原创 文件中行级偏移量的一种获取方式

[i]下面所描述的内容是根据实际需要对BufferedReader的小改进,并提供一张简图来说明所做的修改。如有更方便的方式请回帖或联系[email protected]给予明示,谢谢[/i][size=medium] 如果需要对文件内容建索引,就可能需要每行数据的起始偏移量。下图是文件内容索引的简明结构,目标是为了引出我们对行级偏移量的需求[img]http:...

2012-04-11 18:48:02 355

给新人的一些题目

[size=medium]/* * @Author: [email protected] * @Date: 2012-04-02 */[/size] [size=medium] 好吧,我是有点热心了。看到ItEye上满屏的框架名词的确让人有些悲愤!如果我是一个准备学点Java用来开拓人生的新人,在出入ItEye多次后,可能见过最多的名词是SSH。这不能怪这个氛围,因为...

2012-04-05 11:48:43 186

对实时分析与离线分析的思考(二)

[size=medium] 接上一篇blog[url=http://langyu.iteye.com/blog/1404577]对实时分析与离线分析的思考[/url] 昨天看了S4与Storm的设计,再结合之前对Microsoft的Dryad的了解,感觉有些共性是需要明确的。 在MapReduce这种“分裂-合并”模型出世之前,我们都采用“一层计算...

2012-02-15 14:20:13 356

把买硬盘的钱省下来吧...

[size=medium] 这几天看到一篇文章说,到2020年,全球的数据使用量预计将达到35ZB,也就是近400亿个1T硬盘的总量。这还不把我们低效的硬盘利用率计算在内。我也Google了下,今年全球硬盘预计总出货量才8亿块。同时Facebook说用户平均每天上传近2.5亿张照片... 呵呵,这个世界太疯狂,硬盘生产得有多大的增长幅度才能满足这么多宅男宅女的需求呢? ...

2012-02-15 11:07:36 108

对实时分析与离线分析的思考

[size=medium] 数据的价值是有时效性的,越早分析越能得到更快的问题反馈或响应。Hadoop的设计初衷是存储与分析离线大数据,我认为它的缺点就是不能及时地利用数据中所蕴含的深层价值。 在做深入分析之前,我想从门外汉的角度来说说我自己理解的实时分析是什么样子的。它的目标很明确:尽快地从数据中挖掘出有用的内容来。这牵扯到把计算移动到哪个地方去的问题。数据源本地?数据传...

2012-02-13 16:06:42 1434

MapReduce:Job性能调优总结

是时候把去年早期MapReduce调优工作的结果放出来了,丢在Google Doc里太长时间,都落了一身的灰Benchmark: 对1G数据做wordcount部分内容:*********************************[b]硬件级别[/b][color=orange]提高磁盘IO的性能[/color]noatime 我为两台slaves server...

2012-01-11 13:41:19 162

优秀程序员还得有个标签:可控性

[size=medium] 读到CSDN的一篇文章《[url=http://news.csdn.net/a/20111106/307026.html]优秀程序员的首要特性:判断力[/url]》,作者讲了一个故事来说明作为程序员判断力是如何重要。节省时间,我把故事贴出来:[/size][quote]关于Jack和Dianne的故事Jack是一个摇滚巨星。Jack喜欢谈论世界...

2011-11-08 11:47:55 123

大致了解下Hadoop RPC机制

[size=medium] RPC是Hadoop的基础组件,提供分布式环境下的对象调用功能。之前用了两天时间分析与测试Hadoop RPC,目的是想弄清楚它对集群协作的影响。本来想等深入研究后再总结,但怕过完十一就忘的差不多了,那就今天写下来。这节描述三个部分:1. Hadoop RPC 介绍2. RPC server端的实体模型3. 用户对RPC可以有哪些影响...

2011-09-29 16:41:18 202

MapReduce:计算Job运行时的CPU与内存平均利用率

[size=medium]Hadoop集群上运行有多道MapReduce Job,到底每个Job消费集群计算资源(CPU,内存)的情况如何,通常我们是不知道的。这节来探讨下如果想获得这些信息,应该怎样做。 每个Job在运行时是散布在TaskTracker上,由不同的JVM来执行。所以这个问题归根结底就是想获取每个运行task的JVM对资源的消费情况。对于这种获取分布式环境数据...

2011-09-23 14:00:13 141

HDFS:解决HDFS跨版本兼容问题

[size=medium] HDFS提供用户客户端服务,在协助用户操作集群数据的同时,内部也包含大量的控制逻辑。这样我们就可以把HDFS客户端理解为两部分:一部分提供客户调用,另外一部分属于HDFS内部,作为集群的入口,与NameNode与DataNode通信,并且不同的HDFS版本有不同的通信接口。下面是一张HDFS的客户端模型,可以让大家对它的客户端有清晰的认识。[/size] ...

2011-09-21 11:10:04 739

[Java拾遗]初次尝试BCEL:修改类实现的例子

[size=medium] 项目中有个需求:在不修改源代码的情况下,替换某个类的引用为我们自己的实现。用一个类似的简单例子来说明:[/size][code="java"]public class CarHolder { private Car car; public CarHolder() { init(); } ...

2011-09-15 17:17:03 336

MapReduce:默认Counter的含义

[size=medium] MapReduce Counter为提供我们一个窗口:观察MapReduce job运行期的各种细节数据。今年三月份期间,我曾经专注于MapReduce性能调优工作,是否优化的绝大多评估都是基于这些Counter的数值表现。MapReduce自带了许多默认Counter,可能有些朋友对它们有些疑问,现在我分析下这些默认Counter的含义,方便大家观察job结...

2011-09-13 17:52:58 249

[Java拾遗]Java对象大小探究

[size=medium] 平时我们不会关心生成的对象到底在JVM中占据多少内存,当发生像OutOfMemory或JVM内存异常增加或减少时才会花精力研究到底发生了什么事情。如果当我们发现有些对象确实很大,但超过我们预期时,我们就该关心下我们所期望创建的每个对象大致会在JVM中占用多少内存呢。这节我会试着以一个更循序诱导的方法来描述,希望可以说的更明白,下面开始:[b]当遇到Ou...

2011-09-07 14:22:40 115

HDFS:NameNode的Proxy该怎样做

[size=medium] 在上篇[url=http://langyu.iteye.com/blog/1165292]blog[/url]中提到了HDFS的功能扩展点:Service plugin,它存在于NameNode和DataNode中。HDFS赋予它们可以操作这两个大对象的能力,这也完全提供我们在HDFS上进行开发的机会。这些开发可以是对HDFS现有功能的补充与完善,也可以是基于...

2011-09-05 11:10:50 489

HDFS: EditLog的完整性增强

[size=medium]  用户对HDFS的每步操作都会先记录到NameNode磁盘中的EditLog文件中。为了避免频繁操作磁盘对用户操作效率的影响,HDFS为EditLog在内存中分配两个buffer:一个用于接收用户操作指令;另外一个在用户想要刷新第一个buffer内数据时开始担当接收用户指令的职责。之后两块buffer不断切换角色,进行着上述操作。[/size][img]http...

2011-09-04 15:42:17 346

闲谈程序中如何打印log

[size=medium]程序中记录日志一般有两个目的:Troubleshooting和显示程序运行状态。好的日志记录方式可以提供我们足够多定位问题的依据。这周看过很多代码,对里面的日志记录方式有些想法,今天是周末,也想总结下我对这个问题的看法。日志记录大家都会认为简单,但如何通过日志可以高效定位问题可不是简单的事情。这里我会写下面三个方面的内容,主要是举例为主,提醒我以后得注意这些方...

2011-08-13 12:11:26 419

[Java拾遗]迭代list过程中删除元素

[size=medium]今天在翻看HDFS中FSImage初始化部分时,其中有段代码是这样的:[/size][code="java"]for (URI dirName : fsNameDirs) { boolean isAlsoEdits = false; for (URI editsDirName : fsEditsDirs) { ...

2011-07-20 23:21:30 106

MapReduce:详解Shuffle过程

[size=medium]/*** author : 冶秀刚* mail : [email protected]*/ Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方。要想理解MapReduce, Shuffle是必须要了解的。我看过很多相关的资料,但每次看完都云里雾里的绕着,很难理清大致的逻辑,反而越搅越混。前段时间...

2011-04-08 14:34:33 1682 1

MapReduce:Fair Scheduler PPT分享

[size=medium]分享为公司小组内部交流所做的Fair scheduler PPT。大家有什么看法或意见,请在下面留言,谢谢[/size]

2011-03-22 12:50:48 117

MapReduce:Fair Scheduler前传

[size=medium] Fair Scheduler是由Facebook贡献给Hadoop社区的一种task调度策略。Facebook推出它的目的是在生产环境中替换毫无特点的[url=http://langyu.iteye.com/blog/910677]MapReduce默认Scheduler[/url]。 Fair Scheduler的诞生源于加州大...

2011-03-15 09:11:51 113

MapReduce:job在Job Tracker上的初始化

[size=medium] 这篇来说道说道job在到达Job Tracker后会有哪些动作,涉及上篇job生命周期的第五步和第六步。因为job在初始化后紧接着需要应付Job Tracker对Task Tracker的task分发响应,所以我们从Job Tracker的分发过程倒着来看job初始化。 Task Tracker在运行时会周期性地向Job Trac...

2011-03-04 15:07:37 233

扩展MapReduce架构的一种尝试

[size=medium] 假设有这样一个游戏,一个人来出加减乘除的题目给很多小朋友来做,对每一个小朋友,给他出一道题目,然后让他算好后给你报告答案,你再给他出一道题目,周而复始如此。如果有十个小朋友在算,还可以欣赏小朋友抓耳挠腮的样子;如果有一百个小朋友,每个人都在争着表现,叫嚷着让出题,这个人肯定不堪重负;如果有成千上万个小朋友呢?这个人疯了。 面对这样...

2011-02-28 18:08:46 92

MapReduce: 提高MapReduce性能的七点建议[译]

[size=medium] Cloudera提供给客户的服务内容之一就是调整和优化MapReduce job执行性能。MapReduce和HDFS组成一个复杂的分布式系统,并且它们运行着各式各样用户的代码,这样导致没有一个快速有效的规则来实现优化代码性能的目的。在我看来,调整cluster或job的运行更像一个医生对待病人一样,找出关键的“症状”,对于不同的症状有不同的诊断和处理...

2011-02-22 15:28:30 2380

MapReduce: JT默认task scheduling策略

[size=medium] 如果没有自己定制的调度策略,MapReduce就采用自带的JobQueue策略分发task。这种基于FIFO的策略挺简单,能满足基本的业务需求,但缺点也很明显,如不能实现job的实时性、所有TT的执行能力对用户共享等问题。当然这些只是按以往理解来概括,只有了解具体实现后,才能总结它的影响。本篇blog会从task 分发的流程入手,详细描...

2011-02-19 16:30:14 110

MapReduce: Job提交过程

[i]初学Hadoop,准备用几篇日志来陈述MapReduce job的生命周期中job提交、task分发和task执行,以及JT scheduling策略,job性能参考等方面的知识。通过代码及参考资料想了解job执行的大致细节,期望在以后job性能调优时有所依据。与细节相关的代码参考于Hadoop-0.21.0版本。[/i] [size=medium] ...

2011-02-17 17:52:16 459

某些并发环境下Double-check模型的改进

[size=medium][b]简单场景:[/b] 多线程环境,每个线程携带惟一的key去组装数据,相同的key会有相同的数据结果。为了提高响应速度,在线程访问的入口处设置缓存。线程根据key先从缓存中取数据,如果缓存中没有,线程就去做具体的逻辑处理。 模型如下图:假定每个线程的key如A, B等,同时有多个携带同一key的线程进来。[/size][...

2010-11-01 14:26:24 123

工作随笔2010/10/14(感悟,问题及学习)

[size=medium] 这段时间在Code Review之余负责一个处理大数据量程序的正常运行。本应该是国庆之前完成的事,但因对程序处理能力的认识不足就拖到了现在。程序由单线程改造为并发,并因此修改当初的设计,后来针对出现的问题做持续的处理及优化。下面列出在完成这个任务时所想到的及问题总结[b]1. 由使用并发看到的[/b] 在处理大数据量任务时,可...

2010-10-14 13:50:01 77

详解 Too many open files

[size=medium] 运行在Linux系统上的Java程序可能会出现"Too many open files"的异常情况,且常见于高并发访问文件系统,多线程网络连接等场景。 程序经常访问的文件、socket在Linux中都是文件file,系统需要记录每个当前访问file的name、location、access authority等相关信息,这样的一个...

2010-09-14 18:01:58 608

AMQP协议

[size=medium] 当前各种应用大量使用异步消息模型,并随之产生众多消息中间件产品及协议,标准的不一致使应用与中间件之间的耦合限制产品的选择,并增加维护成本。AMQP是一个提供统一消息服务的应用层标准协议,基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品,不同开发语言等条件的限制。 当然这种降低耦合的机制是基于与上层产品,语言无关的...

2010-09-09 17:22:47 413

XML中特殊字符过滤(含Java代码)

[size=medium] 在XML规范中,不支持ASCII前31个字符中的相当多控制符号,所以在组装XML时需过滤这些特殊字符,以免引起解析问题。对于这些特殊字符,常见的异常如:[quote]Character reference "&#12" is an invalid XML character.这里的"&#12表示是ASCII码的第几个控制字符[/quote]...

2010-08-27 17:43:46 1078

我所认识的软件开发原则:权衡

[size=medium] 当年还在学校时,有段时间校园内到处张贴着李开复的演讲通告,题目是《选择的艺术》。我还算比较纠结了,选择就选择,有什么艺术性可言。正所谓站的高度不一样,看待问题的角度也就不一样。当某天对生活有所感悟时,回头想想光这个演讲的题目就是至理之道呀。网上流传着一句话,人生好似一道永远做不完的选择题,每时每刻都在上演。每天敲代码的我们当然逃脱不了选择的命运。 ...

2010-08-24 17:15:58 219

我所认识的软件开发原则:减少等待时间

[size=medium] 在系统或设备交互时,因处理效率不一致,经常会导致等待的发生。最初这种矛盾在计算机内部尤为突出。高速CPU与低速外部设备之间数据处理的频率差异,使CPU在绝大部分的时间周期内不做任何事情。计算机专家不能允许这种无谓浪费,异步处理模型被引入。 其实在与计算机相关的域模型中,频繁等待的不至CPU。使用计算机系统的人,等待数据库中数据的应用程...

2010-08-23 17:41:50 196

我所认识的软件开发原则:简单表述

[size=medium] 简单表述,就是用通俗直白的表达来正确说明问题。说起这个话题,首先我会感觉心虚,以前为了装X,故意以专业术语加模糊的定义来描述问题,看到别人似懂非懂的神情,我既兴奋又惶恐,感觉一定要把他绕在里面才算专业。但换作别人讲个问题把我绕晕,我就满不在乎,认为别人应该也没弄明白是怎么回事,因为我总觉着每个问题都应该有个简单道理。这种人性的弱点也让我走了不少弯路,幸好及...

2010-08-23 14:50:08 157

我所认识的软件开发原则:封装

[size=medium] 在Google搜索封装,给出信息隐藏这样的一个概念。把复杂度隐藏于实体内部,对外提供简单,精练的访问接口。这个原则普遍存在于现实生活中,在软件开发领域也始终提倡着。Java向来倡导程序封装,面向接口编程,以提高工程开发和维护效率。 说到封装,让我想起大四的一次面试经历。面试官抛出的惟一与技术有关的一个问题是:你觉着面向对象思想的特点中,哪...

2010-08-22 16:55:24 193

我所认识的软件开发原则:二八原则

[size=medium] 二八原则源自经济学理论,表述为:通常一个企业80%的利润来自于20%的项目。由此推广出对日常生活的很多描述,如20%的人投资明天,80%的人消费于今天;20%人的正面思考,80%的人负面思考等。20%和80%只是一个概数,表示少数与绝大多数的对比,它的主要思想是不要平均、对等地看待和处理问题,而是认真分析并找到问题的关键点,集中精力于这些关键点上,获得事...

2010-08-22 16:31:11 856

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除