2012年9月月 发布的文章

java方法的参数传递机制

基本类型作为参数传递时,是传递值的拷贝,无论你怎么改变这个拷贝,原值是不会改变的。
在Java中对象作为参数传递时,是把对象在内存中的地址拷贝了一份传给了参数。

java中只有值传递,基本类型变量值就是本身,引用变量值是地址
数组是对象,字符串为对象。

什么是开闭原则

软件系统中包含的各种组件,例如模块(Modules)、类(Classes)以及功能(Functions)等等,应该在不修改现有代码的基础上,引入新功能。开闭原则中“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。
☆ 开闭原则指的是一个软件实体应对对扩展开发,对修改关闭(Software entities should be open for extension, but closed for modification)。这个原则是说在设计一个模块的时候,应对使这个模块可以在不被修改的前提下被扩展,换言之,应对可以不必修改源代码的情况下改变这个模块的行为。
☆ 满足开闭原则的软件系统的优越性:
① 通过扩展已有的软件系统,可以提供新的行为,以满足对软件的新需求,使变化中的软件系统有一定的适应性和灵活性。
② 已有的软件模块,特别是最重要的抽象层模块不能再修改,这就使变化中的软件系统有一定的稳定性和延续性。
ξ4.2 实现开闭原则的关键
抽象化是解决问题的关键,在面向对象的编程语言里,可以给系统定义出一套相对较为固定的抽象设计,此设计允许无穷无尽的行为在实现层被实现。在语言里,可以给出一个或多个抽象类或者接口,规定出所有的具体类必须提供的方法的特征作为系统设计的抽象层。这个抽象层预见了所有的可扩展性,因此,在任何扩展情况下都不会改变。这就使得系统的抽象不需要修改,从而满足了开闭原则的第二条,对修改关闭。
同时,由于从抽象层导出一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的,这就满足了开闭原则的第一条。
☆ 对可变性的封装原则
这是对开闭原则的另外一种描述,它讲的是找到一个系统的可变因素,将之封装起来。该原则意味着两点:
① 一种可变性不应当散落在代码的很多角落,而应当封装到一个对象里面。继承应当被看做是封装变化的方法,而不应该被认为是一种从一般对象生成特殊对象的方法。
② 一种可变性不应当与另外一种可变性混合在一起。这意味着一般的继承层次不会超过两层。
关键知识点:
☆ 开闭原则的概念,软件实体对扩展开发,对修改关闭;
☆ 实现开闭原则的关键,利用接口或抽象类抽象出系统的抽象层,抽象层不变,利用实现层进行扩展;
☆ 对可变性的封装,将可变的元素封装起来,防止改变扩散到整个应用;
☆ 注意控制封装的粒度,不要将两种可变性封装到一起;
☆ 继承是用来封装可变性的,一般的继承层次不要超过两层;
☆ 策略模式是对开闭原则的很好诠释,其他还有工厂模式、建造模式、桥接模式、门面模式、调停者模式、访问者模式和迭代子模式等;
☆ 对“将条件转移语句改写成多态性”的重构行为应当遵循开闭原则,防止多态性污染;
☆ java下的单方法接口通常用来实现函数指针或者委托的功能;
☆ 任何一棵继承树都要以抽象类为根,具体类不是用来继承的,更不要从工具类继承;
☆ 抽象类要拥有尽可能多的共同代码,同时拥有尽可能少的数据。
☆ 当Coad条件全部满足时,才应当考虑使用继承:派生类是基类的一个特殊种类,而不是其的一个角色,也就是说要区分“Has-a”和“Is-a”;永远不会出现需要将派生类换成另外一个类的派生类的情况;派生类具有扩展基类的责任而不是具有置换或注销基类的责任;只有在分类学角度上有意义时,才可以使用继承。

“阿里云”是如何失控的

首先,澄清一个问题。当阿里云事件爆发后,同情阿里巴巴的人们开始谴责Google的霸权,并预言未来Google会挥舞大棒打击一大批企业。
但是,只要稍微分析一下,就知道这样的事情不会发生。那些人只不过是在混淆视听,为了塑造一个反垄断高手的形象。
由于Android是开源软件,实际上,Google对于产业链的控制力是非常弱的,利用司法起诉不遵守开源规则的人,虽貌似可行,但一是举证困难,二是诉讼成本高、收益小,Google更多是利用诉讼作为防御中的反制手段,不会主动进攻。
Google唯一的控制方式是利用开放手机联盟(Open HandsetAlliance,OHA),OHA是一个产业链内各种厂商参加的联盟,使得厂商可以进行专利交叉授权、技术交换等等。这个联盟除了对成员有约束力之外,还可以利用成员向成员的合作伙伴施压。
比如,这次,阿里云使用的软件是开源的,它认为Google举证抄袭也困难,不会傻到进行举证和诉讼,因此自己已经躲在了安全距离内。它没想到Google依靠给联盟成员的宏碁施压,间接地阻止了阿里云的胡闹。
不过,这几乎是Google唯一能做的方法了,而且这个方法在大部分时间是用不上的。比如,亚马逊的Kindle Fire使用Android的方式,Google也不喜欢,但亚马逊不是联盟成员,而且亚马逊与联盟成员的合作也没有这么紧密,Google即便想施压也找不到办法。
国内的小米也比较安全,就算它不守规矩,Google也很难制裁,因为它不需要和宏碁这样的厂商有紧密合作(当然,小米很守规矩,我只是做假设)。中移动也修改了Android底层,但它是联盟成员,与Google博弈能力强,合作深入,所以也不会有问题。
总结起来:1,你只要不太过分,用代码别不承认,也不要把自己塑造成反Android的英雄,更不要把好系统改成不兼容的烂系统(不要过多修改底层,或者修改底层一定要有足够的技术实力),你就是安全的。按照这个标准,绝大多数厂商都是合规矩的,Google不会发飙。
2,哪怕你过分了,但你对生产制造的控制力足够强,没有过分依赖OHA成员(甚至可以说,只要不过分依赖于一两家OHA的手机制造商),Google也没有办法。
目前来看,全部符合条件的只有阿里云,就让它倒霉吧。
一把好牌,满盘皆输。这就是我看完阿里云闹剧之后的感慨。
当阿里云还在热衷于与Google打嘴仗的时候,我们应该回头看一看,阿里巴巴为什么放着满把的好牌不打,反而要在一个自己并不擅长的领域内插一脚?
当别的互联网公司都已经在移动互联网上拥有了拳头产品的时候,阿里巴巴的移动互联网战略却似乎找不到方向,变得越来越令人摸不到头脑,在一个偏僻冷门、注定不会有收获的地方把精力都浪费掉,他们到底想做什么?
现在陷入了和Google的嘴仗,貌似很英勇,但实际上却继续进行着不必要的消耗,这场争斗还可能将管理层逼上了绝路:为了面子更不能退出了,必须在这个注定失败的地方硬撑下去。
可以说,阿里云的所作所为简直就是一连串失控的集合,从而产生了这样一个怪胎。下面,我们就看看它到底出现了多少的失误,才铸就了今天的尴尬和无聊。
失控的决策:操作系统
阿里云最大的失误是选择了操作系统这个方向。
阿里巴巴整个集团的优势在于贸易和网络金融,当手机逐渐取代了固定互联网的时候,一个公司首先要考虑的是如何把以前的优势延伸到移动互联网上来。这里,最现成的办法就是开发手机上的APP,这一点阿里巴巴已经做了开发,但并不出彩。
另一种方式就是手机预装,利用预装尽量扩大用户基数,只要安装了,肯定有人用,从低端往高端延伸,等用户养成了习惯,自然而然就占领了。阿里巴巴的产品有巨大的客户群,手机厂商求之不得与其合作,只要把产品开发好,预装不是问题。
这两种方法,都比操作系统带来客户的速度要快得多,也容易得多。
另外,即便要涉及手机操作系统,也要配合自己的主业进行,既然阿里巴巴的主要业务就是交易平台,这在应用层就足够完成,做一个与米UI类似的ROM就足够了。
最不理智的选择才是操作系统。操作系统是一种沉淀成本很高,一旦率先进入后,边际成本又非常低的产品,对于后来者极为不利。在国内,财大气粗的中移动试过一次(OMS),但以失败告终,其余没有人再敢试。在国外,微软最新的手机OS据说非常好用,强于Android和iOs,但由于错过了时机,仍然不被看好。
也许阿里巴巴习惯了大开大合和豪言壮语,对跟随Android做开发不感冒,总想做更伟大的事情,利用一揽子方案来解决问题。
另外,还有一个原因:中国的技术人员有操作系统情节。这一点,我认为阿里云负责人王坚难辞其咎。作为技术人员,不懂市场,低估了开发难度,以至于在操作系统开发时屡屡出现变数。本来,他的角色是应该尽量在技术上对冲马氏宏大、让方案变得更加可行的。但实际上,他扮演了一个相反的角色,迎合了马氏宏大,技术人员的操作系统情结甚至让他完全无视了市场的存在。
而更重要的是,当王坚痴迷于操作系统时,阿里巴巴实际上是在丧失其他的机会。小米利用这个时机已经成长为著名的品牌,新浪、腾讯等都已经有了自己的拳头产品,只有阿里巴巴的移动互联网仍然像一盘散沙,不知道到底想干什么。他们的精力都用在了一个注定无法成功的地方,一下子调不过来了,可以说进入了泥潭。
我们不妨向下看。
失控的研发:偷梁换柱
在王坚的主持下,阿里云收购猛犸科技,开始了探索。据王坚回忆,“云OS的第一版本和Android没有任何关系,e28(摩托罗拉Ming手机的design house)为我们做了第一款原型机。”
然而,独立操作系统接下去却受到了严重的打击,在与手机厂商谈合作的时候,厂商们从用户和市场的角度出发,都认定这样的手机不会有市场,必须与Android手机进行兼容才有可能取得部分成功。
如果王坚足够敏锐,此刻立即回头,或者缩小愿景,做一个基于Android的ROM,要不就与厂商合作进行应用预置,都不失为明智之举。但阿里云被操作系统思维困住跳不出来了,它走出了第二步:提出不仅要开发独立操作系统,还要兼容Android。
但这一步几乎是无法做到的,从技术上太难了。在异质操作系统上开发一个完全兼容Android的环境,其成本甚至比直接从头开发一个Android还要麻烦。于是,选择只剩下了一种:全面转向Android。
在这个问题上,阿里云技术团队一定经历过极大的困扰:如果转到Android,那么还叫独立产品吗?
为此,阿里云开始了掩耳盗铃的方法:在名义上,仍然坚称这是独立的操作系统,只是为兼容Android做了一些补丁;而实际上已经进行了偷梁换柱,改用了Android的内核,在Android系统上进行了一些改头换面。
阿里云抄袭自Android,从目前的情况看,这是毋庸置疑的。
首先,即便以现在国际大公司的实力,也很难开发一个与Android完全兼容而又独立的系统。没有经验的阿里云想要独立开发一个可以商用的独立系统,再兼容Android,从难度上根本不可能。
其次,一位曾经的员工(讨论此事的原微博已删除)曾在微博上透露,阿里云第一版原型系统的确是独立开发的,但之后却转向了Android。
第三,已经有人对比了阿里云和Android系统文件,得出结论,Android的7个模块中,阿里云直接使用了其中最核心的5个,再造了虚拟机、上层应用,并加了一个云服务。他的分析基本上是合理的,不会有太大出入。阿里云做的最新解释间接地证实了这一点,在解释中阿里云夸大了虚拟机和云服务的地位,故意不谈其他的核心部件,以造成假象突出它的研发。
但王坚一直声称阿里云是独立的,原因就在于他的不尴不尬的地位:一方面,没有技术实力也没有市场做一个完全独立的操作系统;另一方面,为了面子他还必须说这个系统不是Android,而是独立的。
失控的沟通:陷入泥沼
种种迹象表明,虽然在技术上大量使用了Android的核心,已经成了Android不成熟的变种,但阿里巴巴的高层由于不懂技术,可能并不知情,因此他们仍然认为阿里云是一个独立的操作系统,甚至比Android牛逼。这是一种公司管理中沟通上的失控。这个失控是造成一系列宣传问题的原因。
于是,从最初的宣传开始,阿里巴巴就将自己的云系统说成是完全独立的,与Android竞争的操作系统。这给业界一种很奇怪的感觉,一方面,谁都知道它来自于Android,但又声称自己和Android毫无关系,并要做Android的对手。
这种宣传甚至出现在了《华尔街日报》上,在这篇报道中,记者采访了阿里巴巴总参谋长曾鸣,并将阿里云作为一款独立研发的操作系统,并将它与Android对立起来。
这种夸大其词的宣传在国内屡见不鲜,但如果宣传过度,会引起新的麻烦:Google的干预部分来自于阿里云的高调。
于是,到现在为止,我们就看到了一种极其尴尬的局面:1,被人当众揭穿了独立系统的神话,还要打肿脸充胖子绝不承认。2,更严重的是,在这样不停折腾的工夫,阿里巴巴的时间正在一分一秒流逝。3,市场决定它做的操作系统注定不会有进展,但它必须把最宝贵的人力财力浪费在这里。
这样,真正需要的产品就被耽误了。比如,现在最需要的是把阿里产品的客户端尽快铺到用户的每一台手机上,但阿里云操作系统由于移植性差,根本不能提供任何帮助。但阿里云似乎并不着急,在采访中表示要慢慢来,不急于搞能大规模铺开的安装版,也不急于占领更多的手机……但这叫什么话?
阿里巴巴集团的整个移动互联网战略就在这儿耗着,等待着一个永远不会成熟的操作系统。
失控的领导:管理缺位
阿里云战略出现了如此多的失控,并最终造成了重大失误,但那些负责的人是否会受惩罚呢?
到现在我们没有看到。实际上,作为负责人的王坚甚至还高升CTO了。
如果选择一个对市场完全无知、甚至带着藐视和抵触情绪的人当CTO,他不仅无法配合其他部门的工作,还会由于对细节的痴迷,把最重要的事情耽误掉。王坚更适合的职位是做储备性技术研发,本该给他个高级工程师的头衔让他独自去做某些模块级的Research,现在却被放到了不适合的岗位上,的确也是一种失控。
当然,不适合的人占据高位,在阿里巴巴的高层看来,似乎也不是什么要命的事情,因为这个集团本来就是一个人的公司,其他人只要崇拜他,听着口号往前冲就是了。
阿里巴巴一直作为一个魅力型领袖(克里斯玛)领导的公司而存在。在马基雅维里的定义中,克里斯玛统治者指的是具有超凡魅力、极大的煽动性、对他人有催眠和支配性的人,他们依靠这种力量进行统治,而不是靠制度的约束。如果按照这个定义来看阿里巴巴公司,是完全符合的。
克里斯玛型公司的特点是:在打江山的时候能够激发起员工最大的行动力,当领袖选对了方向时,公司能以超常规的速度发展,当选错了方向,也会以最无畏的勇气自杀。从目前的情况看,阿里巴巴属于前者,但在个别的领域内,有后者的苗头。
克里斯玛型公司还有一个特点:制度化欠缺。领导人在发挥最大魅力的同时,往往忽视制度建设,甚至惧怕制度建设,因为制度除了约束他人,也会约束自己。所以,最后公司在成长期过后,往往又会显示出疯狂和不守常规的一面,甚至出现一些莫名其妙的闹剧。
制度欠缺的另一个结果,就是即便有不适合的人,也难有考核机制将其换下,从而造成越来越失控的局面。

大数据的五大迷思:价值取决于Hadoop?

目前,大量企业拥有海量的客户信息,包括在线交易记录及社交媒体数据等。但是,成功的关键是要能够从不同渠道和来源的数据中洞察价值,而具备收集并分析这些数据能力的企业将在竞争中拥有显著优势。
但是,数据的非结构化已经成为企业的重大挑战。企业已经熟悉收集和分析结构化数据,如传统的销售年报信息。目前,许多企业都困惑于如何收集和分 析更多类型的多结构化数据,如网络日志、无线电射频识别(RFID)、传感器网络、社交网络、互联网文本和文件、互联网搜索索引、详细通话记录、医疗记 录、摄影档案、视频档案以及电子商务交易数据等。
由于这些数据的结构问题及大数据类型的复杂关联,导致无法应用现有的传统技巧进行大数据分析。这为企业带来了新的任务,需要开发一套全新方法,不仅能够处理传统数据,而且可以便捷地分析和应用这些新兴数据,而不是仅仅进行储存。
迷思一:大数据是针对数据量和数据增长量而言
这种说法并不完全正确。的确,大数据包括海量的以指数速度增长的传统业务数据,也包括web应用、传感器网络、社交网络、基因组、视频、照片等新渠道生成的各种数据。同时,大数据还很复杂,进行收集、储存、管理和分析的难度极大。
目前,两种类型的数据都在不断增长。据IDC集团出版的《2011年十大预测》报告称:“企业正被淹没在信息海洋里,却仍渴望获得更多信息,这 也为大数据分析和管理带来了巨大机遇。”该报告指出,企业的愿望终将实现。“全球数据总量(digital universe)将扩张近50%,达到约1.8 泽它字节(约合2万亿Gb)。作为参考,专家们预计1泽它字节相当于长度高达3600万年高清视频文件产生的数据量。”
迷思二:企业应淘汰并更换现有分析系统以应对大数据时代到来
错误,没有必要!建立大数据分析能力需要人才、流程和技术的完美组合。如果企业尚未发掘现有商业智能环境的价值,在启用大数据分析平台前需率先 解决该问题。当传统业务数据分析被赋予大数据的视野,才能实现大数据分析的真正价值,带来透明和全面的业务观点,从而创造出业务迅猛发展的机会。
首先,企业应制定计划,明确应用大数据分析要达成的业务目标。依据这些目标,企业应部署适用的硬件和软件以应对挑战。根据一线员工的需求部署商 业智能解决方案,帮助他们做出最佳决策。在采用正确的技术支持后,企业用户和数据科学家能够迅速收集和分析新的数据源,发掘业务需要的洞察力。
迷思三:大数据只对谷歌、Facebook和亚马逊这样的高科技公司才有意义
无论是互联网公司、财富500强、或者小型企业,都与大数据的爆炸式增长息息相关。无论所在行业或企业规模,数据分析已经成为当前重要的业务需 求。现今,在企业运营中若无法从业务数据中获得真正的洞察,是绝不可行。全球主要市场的企业正在实现新一代高级分析应用的转型,通过全新方式应用海量的传 统数据和新型数据,提供更深入、更智慧的洞察力。而且,企业的竞争优势取决于在商业环境中管理和分析所有关键数据的能力,以及帮助企业做出最佳决策的洞察 力。
迷思四:数据科学家和大数据分析是2012年的IT界时尚
大数据分析绝非一时狂热,这点毋庸置疑。正如O’Reilly Media创始人Tim O’Reilly所言:“我们正在开创迷人的数据驱动应用新世界,这是一个任由我们塑造的世界​​。”目前,数据科学家已经成为独立的职业,奋战在塑造这 个商业新世界的最前线,精通数据的专家将成为新时代中的重要成员。
数据科学家必须对数据充满好奇,拥有专心钻研的态度,积极进取并善于批判性思考。他们具有对业务流程的深刻理解,同时融合数学、统计学,以及使用Excel、SQL和分析工作台等技能。目前,市场对拥有技术能力及商业意识的专业人才需求量巨大。
迷思五:大数据的价值取决于Hadoop及同类软件的技术处理能力
没有任何单一技术能够满足所有需求。根据企业努力解决的业务问题,建立大数据分析能力需要人才、流程和各种技术的完美组合,而最关键的是释放这些数据的商业价值。这将需要复杂的分析应用,其中包括数字营销优化、欺诈侦测和预防,以及和社交网络分析等。
Hadoop在大数据技术库中拥有一定价值及重要位置。Hadoop既是框架,更是实现多结构数据过滤、转化及整合的优异平台,类似于未搭载引擎或车身的跑车底盘。采用这种架构,Hadoop可以支持迭代及实时数据探索和分析,快速发现新数据及数据的变化模式。
成功的关键
成功的关键在于能够整合企业既有传统业务数据和新型数据。通过开放访问整个企业生态系统并整合各种来源的数据,企业可以应用大数据分析对客户进行超级全面的分析,进一步改善客户服务和销售业绩。

Hadoop必将风靡2012年的六个理由

毫无疑问,Hadoop已经赢得了大量投资者和IT媒体的青睐,但却很少看到任何的实际产出。即将过去的2011是风暴来袭前的准备阶段,为很多新公司新用户建立了一个海量数据的分析平台。就连微软这样的互联网巨头都已放弃其他平台而选择Hadoop,看来Hadoop风暴来袭已指日可待。
2012年,Hadoop必将风靡世界。以下是六个具体的理由:
1.投资者看好Hadoop
目前,投资者十分看好Hadoop,并开始纷纷投资相关技术。从分布式层面上来说,Hadoop开源软件整体方案供应商Cloudera已获得7600万美元投资,分布式架构新成员MapR和Hortonworks分别融资2900万美元和5000万美元;而从栈的层面上来看,Hadoop海量数据分析平台Datameer、 Karmasphere和Hadapt已分别获得了1000万美元左右投资。大量专注这一技术的初创公司(如Zettaset、Odiago和Platfora等)更是如雨后春笋般迅速涌现。另外,投资机构Accel Partners最近还成立了一个总额为1亿美金的大型数据基金,专门用于投资基于Hadoop和其他核心大型数据技术的应用。
2.竞争孕育成功
Hadoop必将是未来的发展趋势,尤其是当涉及到集成管理等业务问题时。Hadoop也是Cloudera、MapR和Hortonworks能在赢取客户资源方面具有明显竞争优势的原因。
3.学习曲线
除了改善在分布式层面的管理和支持能力外,Cloudera、MapR和Hortonworks等公司已经开始着手提高Hadoop的易用性。同时,Karmasphere和Concurrent公司也已开始提供编写Hadoop流程和应用服务,而Datameer和IBM等公司正在努力将Hadoop普及到普通商业用户。随着越来越多的Hapdoop创业公司涌现,通过各种创新方法简化繁重的数据分析工作也将变得越来越常见。
4.用户是永远的黄金准则
懂得任何管理Hadoop集群和编写Hadoop应用是一回事,而将它有效地用于实际的分析管理却是另外一回事。在Hadoop World大会和网络博客上经常可以看到Walt Disney、Orbitz、LinkedIn、和Etsy等很多大公司通过讲述自己的亲身实践大赞Hadoop。用户口碑永远是最有效的宣传途径。这些大用户的“亲身试法”,对很多潜在用户来说是一种无形的鼓励,也能在一定程度上帮助他们认识“从何开始、去往何处”的问题。
5.无处不在的用武之地
像Oracle、MySQL和SQL Server等老牌数据库一样,虽然人们对此了解不多也不深,且容易被忽视,但它们无处不在,几乎所有人都听过。从长远来看,Hadoop也将发展到类似阶段。一旦遇到涉及大量非结构化的数据采集和处理时,Hadoop就有了用武之地。
6.内容多,功能强大
除了核心设计思想MapReduce和HDFS(Hadoop Distributed File System)外,Hadoop还包括了从类SQL查询语言HQL,到NoSQL HBase数据库,以及机器学习库Mahout等内容。Cloudera、Hortonworks和MapR都已在他们的分布式系统中加入了Hadoop项目。最近,Cloudera还成立一个名为Bigtop的项目,集成了所有Hadoop相关项目。作为一个幕后英雄,Hadoop未来必将应用于越来越多的领域,风靡全球。

基于英特尔平台的Hadoop私有云架构

基于英特尔平台的Hadoop私有云架构
提到云计算,我们通常能够与Google、微软、雅虎这样的业界大腕相联系,与中小企业无缘。而实际上,得益于诸如Hadoop这样的开源软件,广大中小企业也可以搭建自己的私有云,并相当程度的满足自身需求。这篇文章会从实践出发,谈一谈企业如何在基于英特尔的开放架构上架设Hadoop私有云系统,以及测试实施的效果到底如何。
目前系统面临的问题
从过去来看,企业系统当中存在相当数量的应用,各自承载不同类型的大计算量任务,比如分词、产品分析、新词发现等等。
而目前的系统由于是基于单机的实现的,尽管单服务器性能也足够强,但对于多任务的执行,效率实在相当低下,某物流公司仅当月的产品分析一项就花了近300个机时。
如果沿着现在的方式走下去的话,那么开发成本,维护成本,硬件投入,以及跨项目组的沟通协调成本都会持续提升;而硬件使用效率跟开发人员生产率却会下降。从这点出发,需要构造一个通用的分布式计算框架引擎作为新的基础计算架构,来满足任务需求。
系统需求
1、通用性——系统需要实现任务分发,负载平衡,错误恢复等分布式计算的基础工作,一个计算密集型的任务可以通过简易的封装,部署在系统执行,在同一时间内,系统可以执行不同类型的任务,由此达到对服务器资源的最有效利用,从这一点上来看,系统需要的是一个开放式的基础架构。
2、稳定性——系统本身的运行稳定;
3、可扩展性——主要是指Scale Out的能力,需要新的服务器资源可以简易的集成进集群,投入应用;
4、灵活性,除去通过API或者通过扩展框架来将任务部署在系统中外,也要支持利用Python等脚本语言进行轻量级的开发,来应对一些ad-hoc的任务;
5、支持对大规模数据量的处理,以及对最终结果的集中收集。
英特尔平台的Hadoop私有云解决方案
从开放行、稳定性和扩展性等多方面角度考虑,基于Intel至强处理器平台是新的系统架构的选择,整个系统建立在Intel至强5600架构平台之上,在开源的分布式计算框架Hadoop上定制开发。Hadoop是一套对Google著名MapReduce模式的实现,用最简单的话说,MapReduce就是把任务数据拆分成多块,分别在不同的服务器上进行处理,最后再把中间结果聚合起来,得到最终结果。
从应用加载来看,所有的服务器资源根据应用被划分,运行稳定可靠,如果中间因为网络或者小部分服务器本身故障,Hadoop的内部机制可以自动将任务分配到正常机器上运行,以保证所有任务最终的顺利完成。
另外,由于所有的计算任务会在单独的线程中进行,所以可以充分利用至强5600的多线程和超线程技术。此外,配合英特尔QPI总线设计,处理器间的连接带宽提升至25.6GB/s,CPU与内存的数据带宽也达到了32GB/s,经在四核的服务器上测试,由于应用本身没有对多核进行优化,因此在主程序执行时,即便是单机性能也提高了近50%。
总结
基于Hadoop的开放平台私有云架构的战略意义
1、大幅减少现有计算密集型任务的时间,大幅提高服务器利用效率;
2、使未来对计算要求更高的业务成为可能,这样的架构允许任意添加新的X86服务器就能扩充计算资源,而不会增加额外的管理和维护成本。
3. 最后,系统除了支持Java,也支持Python和Bash Shell这样轻量级的脚本语言,也使得开发人员能够利用廉价而高性能的计算平台进行业务创新。

Hadoop10大应用

最近,在Hadoop最新版本的发布会上,Cloudera COO Kirk Dunn和业内一些专家指出了Hadoop在不同领域的应用案例。这与我近些年来关注的方向相同。为此,特别总结出在线旅游、移动数据、电子商务、能源发现、能源节省、基础设施管理、图像处理、欺诈检测、IT安全和医疗保健这十个领域,这其中,几乎每个领域都有我曾采访过的创新企业。当然,我也相信,在这些企业之外,还有更多的应用空间等待挖掘。
1. 在线旅游(Online travel)。Dunn表示,目前Cloudera的Hadoop架构正在为80%左右的全球在线旅游预定服务。尽管其并没有提及这些客户的名字,但是去年的时候我曾对应用了Hadoop的一家企业Orbitz Worldwide做了采访。Orbitz CEO Barney Harford当时表示,受益于Hadoop架构,他们极为轻松地实现了诸多的数据分析工作,并在其中得出“MAC用户比Windows用户愿意支付20美元的成本来预订酒店”,这样的影响范围很广的调查结论。当然,在他看来,Hadoop本身并不能带来如此的神奇效应,但是其可以帮助发现以前从来没有发现的数据点,进而使分析和挖掘成为了可能。
2. 移动数据(Mobile data)。这是Dunn的另一项“匿名”统计,Cloudera为“70%美国智能手机”提供服务。我认为他谈论的是通过无线方式存储和处理移动数据,以及有关市场份额的数学可以帮助他们锁定客户。
3. 电子商务(E-commerce)。Dunn所谈的Cloudera第三个市场是美国超过10,000,000家网上商店。Dunn说一家大型零售商(我认为说的是eBay,作为一个主要的Hadoop用户并且成功经营着大型零售卖场来帮助数百万商人销售)在使用了Hadoop后仅90天内就增加了3%的净利润。
4. 能源发现(Energy discovery)。在Cloudera的圆桌会议上,来自行业的一位代表 Chevron 解释了为什么他们选择了Hadoop:我们采用Hadoop来对数据进行排序和整理,而这些数据全部来自从海洋深处地震时产生的数据,而其背后有可能意味着石油储量。
5. 能源节省(Energy savings)。与 Chevron目标截然相反,Opower使用Hadoop来提升电力服务,尽量为用户节省在资源方面的投入。一个代表小组注意到,某些特定功能,如精确并长期的费用预测如果没有Hadoop几乎很难完成。据了解,Opower现在管理着30TB的信息,其中包括来自5000万用户(横跨60个公共事业部)能源数据,气象与人口方面的公共及私人数据,历史信息,地理数据及其他。这些都是通过超过20个MySQL数据库和一个Hadoop集群来存储和处理的。
6. 基础设施管理(Infrastructure management)。这是一个比较常见的应用方向,实际上,随着更多的公司(Esty,我最近采访过)从服务器、交换机及其他IT设备商收集并分析数据,Hadoop更有市场。在Cloudera发布会中,NetApp代表指出他们公司收集设备日志(现在已经超过1PB的容量了),并将它们存储在Hadoop中。事实上,Esty是专门从事国产与复古商品的电子商务网站,现在已经超过110万的用户,250万的独立访问量和11亿的页面浏览量。举个例子,通过Splunk管理和分析的集群数据已经到了每天1TB的量级。Esty每晚都要在以 Elastic MapReduce Hadoop service为基础的亚马逊云计算平台上运行数十种Hadoop工作流程。根据一些详细技术报告,其运行差不多5000 Hadoop job是在2011年5月份来分析来自内部运行数据和外部活动数据如用户行为变化。
7. 图像处理(Image processing)。一家创业型企业Skybox Imaging,利用Hadoop来存储和处理高来自卫星捕捉的高分辨率图像,并尝试将这些信息及图像与地理格局的变化相对应。
8. 欺诈检测(Fraud detection)。这已经是老生常谈了,在金融服务机构和情报机构中,欺诈检测一直都是关注的重点。一家企业,Zions Bancorporation向我讲述了他们是如何利用Hadoop来存储所有数据,并对客户交易和现货异常进行判断,对可能存在欺诈行为提前预警的。
9. IT安全(IT security)。如基础设施管理一样,企业通过使用Hadoop来处理机器产生的数据,以识别恶意软件和网络攻击模式。去年,ipTrus通过使用Hadoop来指定IP地址的名誉得分(在0-1之间的得分,O等于没有防线或未知的风险),从而使其他安全产品可以判断是否接受来自这些来源的通信,IBM和HP都使用ipTrust的安全产品。
10. 医疗保健(Health care)。我认为有很多方法可使更多的医疗保健医生从Hadoop中受益。但是最常见的仍然在搜索领域。去年,我介绍的Apixio,利用Hadoop平台开发了语义分析服务,可以对病人的健康提供医生、护士、及其他相关人士的回答。Apixio试图通过对医疗记录进行先进的技术分析,与一个简单的基于云计算的搜索引擎来帮助医生迅速了解病人相关病史,挽救生命。