王者荣耀干将莫邪技能越王勾践是真的吗 王者荣耀干将莫邪技能越王勾践技能介绍

意志力的故事:越王勾践苦心人天不负!
“苦心人,天不负,卧薪尝胆,三千越甲可吞吴”,清代科幻作家蒲松龄先生用来自勉的座右铭浓缩了两千多年前春秋时期的一个个牛人牛事。
一、勾践——吃过屎的春秋霸主
让我们先从勾践的简历了解一下这个人,如果勾践的升迁也需要简历来进行任前公示的话:
姓名:勾践??曾用名:鸠浅??性别:男&&
民族:不详(这个可以不详,其死后二百多年才有汉族概念)
血型:A型(根据其性格估计)
家庭出身:正宗皇室血统,大禹后裔,王族世家
学历:博士后(根据其家庭出身推断,王室后代必获最高级学位,所以,如果当时有博士后学位的话,必为其获得)
最喜欢的东西:权杖、王座和越王勾践剑
职业:国王、囚犯、马车夫、农民、春秋联合国霸主
终身成就:春秋五霸之一、历史上等级最高的成功学大师之一
人生信条:卧薪尝胆,从头再来
权力。都是权力惹的祸。
权力如此多娇,惹无数英雄竞折腰,也让勾践命途如此多舛。
权力,就像春药,让无权者亢奋,让有权者沉迷,从江湖走卒到庙堂高位者,概莫能外,即便是贵为越国之王的勾践——越国最高等级的统治者,拥有至高无上的权力,也逃脱不了权力的魔咒。
勾践,作为大禹后裔,拥有最正宗的皇家血统,本可以像大部分的王二代一样:画画花鸟写写字,玩玩古玩跑跑马,或者找几个绝色美女谈谈人生谈谈爱情,过大部分王者所过的或舒服自在或荒淫无度的生活,但勾践偏不。勾践是有志青年,他要追求卓越,追求成功。
普罗大众所谓的成功标志,无非是以下几种:更好的销售业绩,更大的利润目标,更高的职位,更多的金钱。为追求成功所付的努力也无非是:晚睡早起,不打麻将,不打扑克,不去唱K,而将空闲时间用在读书工作上;更勤奋一点就是闻鸡起舞,凿壁偷光,囊萤苦读;最残酷的也就是深夜读书不辍,为了不让自己睡着,把头发吊在天花板上;或时不时用一锋的锥子刺刺大腿,以免打瞌睡。常人为成功而付出的艰苦卓绝,无非如此而已。
勾践是有志青年,更是王者,所谓王者的成功,还是权力。勾践虽处权力之巅,仍不知足,还要追求更大的权力,他要当春秋霸主,一统天下:号令宇宙,莫敢不从,寰宇内外,唯我独尊。从他立志追求成功的那一刻起,他的命运就注定要坎坷而荒诞,他的人生就注定像冥河的摆渡者一样,徘徊于天堂和地狱之间:他享受了王者的一切威严和荣耀,也承受了作为囚徒的所有屈辱和卑贱;他经受了一夜之间由高贵君王到低贱囚犯的一无所有的惶恐;也体味了二十年间由最卑微者到春秋霸主的咸鱼翻身般的欣喜。
为了追求成功,勾践所付的代价和折磨,远非凡夫俗子所能想象和做到:他被夫差所囚,仇敌的任何侮辱却要化为发自内心的忠诚;心中充满刻骨的仇恨,脸上却要露出真诚的笑容;他甚至不惜品尝仇敌的粪便,只为博取夫差欢欣,从而寻求脱身机会。常人在这种状态下,早已精神分裂而疯掉;勾践作为王者,其意志和毅力迥乎常人,其坚忍程度非凡人所能想象,其忍受痛苦程度让凡人匪夷所思,其自我激励之所作所为更让人惊叹。虽说男人应该对自己狠一点,但像勾践这样自虐尤胜于酷吏虐待死囚却世所罕见,其疯狂自虐的程度,普通人早已精神分裂,但勾践没有疯掉,反而逐步爬升,最终摆脱困境,到达人生辉煌峰顶,成功实现他的梦想。
勾践的精神分裂症或许是先天性的。当他继承越王之位后,展开对吴国的第一战,其作战方式就是精神病式的:两军对垒,即将决战,勾践却命令己方士兵叫喊着在阵前自杀,吴国士兵惊呆了,忘了自己是来砍人的,津津有味地看着越国士兵表演马戏,勾践忽然出兵,以少胜多,打败吴国军队,射死吴国老国王——夫差的老爸阖闾。
夫差怒发冲冠,不为红颜,只为老爸。勾践有事业心,夫差同样不是省油的灯。在精心备战期间,夫差为了保持高昂的斗志,夜夜只在柴火房的干枯的树枝上休息片刻,而不再睡在王宫舒适的席梦思软床上;为了提醒自己不忘父仇,他让手下每天这样问候自己:“Howare
you,Sir?你小子忘了老爸怎么死的吧?”夫差就大声回答:“Fine,thankyou。我从不敢忘记杀父之仇,我发誓一定会活捉勾践,将那小子挫骨扬灰!”
吴国远强大于越国,吴越再一次对战,夫差一举活捉勾践,但越国施展强大的银弹攻势,收买了夫差最信任的下属伯嚭,伯嚭巧舌如簧,竟然让夫差鬼使神差地相信:以勾践为奴隶供己驱使虐待更爽,而非将他烧成灰。
于是,勾践成了夫差的马夫。他死心塌地甘做奴隶,为夫差喂马、套马车、牵马,跪在地上让夫差踩着上下车,受尽屈辱,却毫无怨言;他每日冒着随时掉脑袋的风险全身心地伺候夫差,发自内心地对夫差臣服,但仍无法取得夫差信任;在巨大的生存压力和疯狂的复仇决心下,勾践做出了更疯狂的举动:品尝夫差的大便,取得夫差信任,彻底消除敌意。虽说有前人如孙膑、后人如明朝朱棣等枭雄帝王同样为躲避仇敌迫害而装疯卖傻吃大便,不过都是装作疯子才吃的,而且吃的是畜生粪便,以勾践这种贵为君王的身份,以正常心态神态自若地吃仇敌的大便,几千年来恐怕仅此一人而已。
勾践的机会来自夫差,夫差生了一场大病,久不见好,身体状况每况愈下。陪伴勾践一起做奴隶的越国智囊范蠡,通过远观对夫差望诊,判断夫差的病很快要好,于是,勾践去见吴王夫差。“我的主人,恭喜贺喜,您的龙体即将康复。”“何以见得?”“我有祖传绝技,可以尝大便而知病情,明病因,从而对症下药,诊治疾病;今早您出恭后,我取了您的大便,进行品尝,故而判断您即将痊愈。”夫差听得恶心,仿佛自己吃了大便一样,快要吐了,他问道:“其质若何?其味若何?”勾践曰:“望得夫!这是英文,您不懂的。味道好极了!其色如普罗旺斯的麦草般光芒,其味如天山雪水般甘洌,带着阿尔卑斯山阳光的清新,还有一些苦味,那也是卑斯麦地区啤酒花的芬芳之苦,还略有酸味,就像第戎所产葡萄一样甜中带酸,这种酸苦之味,香兮爽兮,沁心脾兮,就是春夏之气交汇的美妙味道,是健康的征兆,通过细细品味这种滋味,我确信您即将康复。”夫差彻底吐了出来。
不久,吴王夫差果然完全恢复健康。夫差心想:“肯吃大便之人,不是疯子,就是草包懦夫。勾践思路清晰,肯定不是疯子,看来,他是彻底臣服于我的懦夫。即便是一只丧家犬,也未必能如他这般卑贱地去吃大便,看来,勾践是比狗还忠实的奴仆,他会永远对我摇尾乞怜的。”就这样,勾践凭借一种非人间凡夫肉胎所有的疯狂意志,彻底征服了夫差,于是,夫差不顾智囊团总顾问伍子胥的坚决反对,决意让勾践回国,放虎归山。
勾践又坐上了久违的王座。王座上的肉身依然是以前的勾践,但这个肉身的灵魂和精神却不复再是以前的勾践,以前的那个脾气暴躁、喜怒无常的勾践不见了,现在的越王勾践,成了钢铁战士和圣人的复合体。
勾践是钢铁战士,他发愤图强,励精图治,日夜操劳,从不休息,眼睛困得实在睁不开,就用一种叫蓼薪的辣椒一样的植物泡水刺激眼睛以驱除睡意。自从尝过大便以后,勾践一直口臭,每餐必吃苦胆,他的办公桌前悬挂苦胆,当身体疲惫厌倦工作想放弃之时,抬头见苦胆,就勾起吃大便的屈辱,马上就会精神抖擞,活力充沛。冬天办公时,勾践怀揣的不是暖炉而是冰块,脚冷就用冰水泡脚;夏天反而生起火炉。在常人看来都是凡夫肉胎无法忍受的精神病式的自虐行为,被勾践以钢铁般的意志用来自我激励,而且一做就是20年。
20年的漫漫日子里,勾践同时又是一个圣人。他解散后宫庞大的老婆队伍,遣散众多嫔妃及其后勤保障人员,对美女避而远之,只留下王后一人;他解散宫廷管弦乐团,解散宫廷歌舞团,不再听悦耳的音乐,不再看曼丽的歌舞;他过起俭朴生活,亲自耕种,不肯多吃一口饭,不肯多吃一口肉,王后亲自织布做衣;从无一日去旅游休闲放松;他清心寡欲,过最简单的生活,而将节省的时间放在工作上,日勤于政,念念不忘复仇。
勾践靠着阳谋和阴谋双管齐下、美女和战士共同使用的打法,完成了由弱转强,而吴国由强转弱的根本改变。当勾践一声令下,举兵征伐吴国之时,吴国军队早已羸弱不堪,任凭宰割,夫差唯有自杀谢罪。
勾践成功了,他实现了人生理想,成为了王中王,成为了春秋霸主,但勾践感觉自己并没得到什么,他并不快乐。勾践彻底空虚了,他又恢复了以前的君王本色,脾气暴躁,喜怒无常,杀人无数;他重新组建更为庞大的后宫,重新成立了管弦乐团和歌舞团,时时沉迷于酒色歌舞之中。
在月光皎洁的夜晚,勾践会发疯。他经常蜷缩于墙角屋隅,抱着一个苦胆,久久凝视天空中苦胆一样的圆月,一边将苦胆当成绿箭咀嚼,一边发呆,不知道他是在权衡:用吃仇敌大便的代价来换取成功,其机会成本到底几何?还是在留恋不追求成功的纯真岁月:月亮就是月亮,月亮不是苦胆?
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。『一文读懂大数据计算框架与平台』科技-响聊聊职场
&>&&&一文读懂大数据计算框架与平台
一文读懂大数据计算框架与平台
1.前言 计算机的基本工作就是处理数据,包括磁盘文件中的数据,通过网络传输的数据流或数据包,数据库中的结构化数据等。随着互联网、物联网等技术得到越来越广泛的应用,数据规模不断增加,TB、PB量级成为常态,对数据的处理已无法由单台计算机完成,而只能由多台机器共同承担计算任务。而在分布式环境中进行大数据处理,除了与存储系统打交道外,还涉及计算任务的分工,计算负荷的分配,计算机之间的数据迁移等工作,并且要考虑计算机或网络发生故障时的数据安全,情况要复杂得多。 举一个简单的例子,假设我们要从销售记录中统计各种商品销售额。在单机环境中,我们只需把销售记录扫描一遍,对各商品的销售额进行累加即可。如果销售记录存放在关系数据库中,则更省事,执行一个SQL语句就可以了。现在假定销售记录实在太多,需要设计出由多台计算机来统计销售额的方案。为保证计算的正确、可靠、高效及方便,这个方案需要考虑下列问题: 如何为每台机器分配任务,是先按商品种类对销售记录分组,不同机器处理不同商品种类的销售记录,还是随机向各台机器分发一部分销售记录进行统计,最后把各台机器的统计结果按商品种类合并? 上述两种方式都涉及数据的排序问题,应选择哪种排序算法?应该在哪台机器上执行排序过程? 如何定义每台机器处理的数据从哪里来,处理结果到哪里去?数据是主动发送,还是接收方申请时才发送?如果是主动发送,接收方处理不过来怎么办?如果是申请时才发送,那发送方应该保存数据多久? 会不会任务分配不均,有的机器很快就处理完了,有的机器一直忙着?甚至,闲着的机器需要等忙着的机器处理完后才能开始执行? 如果增加一台机器,它能不能减轻其他机器的负荷,从而缩短任务执行时间?
如果一台机器挂了,它没有完成的任务该交给谁?会不会遗漏统计或重复统计? 统计过程中,机器之间如何协调,是否需要专门的一台机器指挥调度其他机器?如果这台机器挂了呢? (可选)如果销售记录在源源不断地增加,统计还没执行完新记录又来了,如何保证统计结果的准确性?能不能保证结果是实时更新的?再次统计时能不能避免大量重复计算? (可选)能不能让用户执行一句SQL就可以得到结果? 上述问题中,除了第1个外,其余的都与具体任务无关,在其他分布式计算的场合也会遇到,而且解决起来都相当棘手。即使第1个问题中的分组、统计,在很多数据处理场合也会涉及,只是具体方式不同。如果能把这些问题的解决方案封装到一个计算框架中,则可大大简化这类应用程序的开发。 2004年前后,Google先后发表三篇论文分别介绍分布式文件系统GFS、并行计算模型MapReduce、非关系数据存储系统BigTable,第一次提出了针对大数据分布式处理的可重用方案。在Google论文的启发下,Yahoo的工程师DougCutting和MikeCafarella开发了Hadoop。在借鉴和改进Hadoop的基础上,又先后诞生了数十种应用于分布式环境的大数据计算框架。本文在参考业界惯例的基础上,对这些框架按下列标准分类: 如果不涉及上面提出的第8、9两个问题,则属于批处理框架。批处理框架重点关心数据处理的吞吐量,又可分为非迭代式和迭代式两类,迭代式包括DAG(有向无环图)、图计算等模型。 若针对第8个问题提出来应对方案,则分两种情况:如果重点关心处理的实时性,则属于流计算框架;如果侧重于避免重复计算,则属于增量计算框架。 如果重点关注的是第9个问题,则属于交互式分析框架。
本文下面分别讨论批处理、流计算、交互式分析三种类别的框架,然后简要介绍大数据计算框架的一些发展趋势。文章最后介绍这一领域的学习资料。
图1.大数据计算框架全景图 2.批处理框架 2.1.Hadoop Hadoop最初主要包含分布式文件系统HDFS和计算框架MapReduce两部分,是从Nutch中独立出来的项目。在2.0版本中,又把资源管理和任务调度功能从MapReduce中剥离形成YARN,使其他框架也可以像MapReduce那样运行在Hadoop之上。与之前的分布式计算框架相比,Hadoop隐藏了很多繁琐的细节,如容错、负载均衡等,更便于使用。 Hadoop也具有很强的横向扩展能力,可以很容易地把新计算机接入到集群中参与计算。在开源社区的支持下,Hadoop不断发展完善,并集成了众多优秀的产品如非关系数据库HBase、数据仓库Hive、数据处理工具Sqoop、机器学习算法库Mahout、一致性服务软件ZooKeeper、管理工具Ambari等,形成了相对完整的生态圈和分布式计算事实上的标准。
图2.Hadoop生态圈(删减版) MapReduce可以理解为把一堆杂乱无章的数据按照某种特征归并起来,然后处理并得到最后的结果。基本处理步骤如下: 把输入文件按照一定的标准分片,每个分片对应一个map任务。一般情况下,MapReduce和HDFS运行在同一组计算机上,也就是说,每台计算机同时承担存储和计算任务,因此分片通常不涉及计算机之间的数据复制。 按照一定的规则把分片中的内容解析成键值对。通常选择一种预定义的规则即可。 执行map任务,处理每个键值对,输出零个或多个键值对。 MapReduce获取应用程序定义的分组方式,并按分组对map任务输出的键值对排序。默认每个键名一组。 待所有节点都执行完上述步骤后,MapReduce启动Reduce任务。每个分组对应一个Reduce任务。 执行reduce任务的进程通过网络获取指定组的所有键值对。 把键名相同的值合并为列表。 执行reduce任务,处理每个键对应的列表,输出结果。
图3.MapReduce处理过程
在上面的步骤中,应用程序主要负责设计map和reduce任务,其他工作均由框架负责。在定义map任务输出数据的方式时,键的选择至关重要,除了影响结果的正确性外,也决定数据如何分组、排序、传输,以及执行reduce任务的计算机如何分工。前面提到的商品销售统计的例子,可选择商品种类为键。MapReduce执行商品销售统计的过程大致如下: 把销售记录分片,分配给多台机器。 每条销售记录被解析成键值对,其中值为销售记录的内容,键可忽略。 执行map任务,每条销售记录被转换为新的键值对,其中键为商品种类,值为该条记录中商品的销售额。 MapReduce把map任务生成的数据按商品种类排序。 待所有节点都完成排序后,MapReduce启动reduce任务。每个商品种类对应一个reduce任务。 执行reduce任务的进程通过网络获取指定商品种类的各次销售额。 MapReduce把同一种商品下的各次销售额合并到列表中。 执行reduce任务,累加各次销售额,得到该种商品的总销售额。 上面的过程还有优化的空间。在传输各种商品每次的销售额数据前,可先在map端对各种商品的销售额进行小计,由此可大大减少网络传输的负荷。MapReduce通过一个可选的combine任务支持该类型的优化。 2.2.DAG模型 现在假设我们的目标更进一步,希望知道销售得最好的前10种商品。我们可以分两个环节来计算: 统计各种商品的销售额。通过MapReduce实现,这在前面已经讨论过。 对商品种类按销售额排名。可以通过一个排序过程完成。假定商品种类非常多,需要通过多台计算机来加快计算速度的话,我们可以用另一个MapReduce过程来实现,其基本思路是把map和reduce分别当作小组赛和决赛,先计算各分片的前10名,汇总后再计算总排行榜的前10名。
从上面的例子可以看出,通过多个MapReduce的组合,可以表达复杂的计算问题。不过,组合过程需要人工设计,比较麻烦。另外,每个阶段都需要所有的计算机同步,影响了执行效率。 为克服上述问题,业界提出了DAG(有向无环图)计算模型,其核心思想是把任务在内部分解为若干存在先后顺序的子任务,由此可更灵活地表达各种复杂的依赖关系。MicrosoftDryad、GoogleFlumeJava、ApacheTez是最早出现的DAG模型。Dryad定义了串接、全连接、融合等若干简单的DAG模型,通过组合这些简单结构来描述复杂的任务,FlumeJava、Tez则通过组合若干MapReduce形成DAG任务。
图4.MapReduce(左)与Tez(右) 执行复杂任务时对比 MapReduce的另一个不足之处是使用磁盘存储中间结果,严重影响了系统的性能,这在机器学习等需要迭代计算的场合更为明显。加州大学伯克利分校AMP实验室开发的Spark克服了上述问题。Spark对早期的DAG模型作了改进,提出了基于内存的分布式存储抽象模型RDD(ResilientDistributedDatasets,可恢复分布式数据集),把中间数据有选择地加载并驻留到内存中,减少磁盘IO开销。与Hadoop相比,Spark基于内存的运算要快100倍以上,基于磁盘的运算也要快10倍以上。
图5.MapReduce与Spark中间结果 保存方式对比 Spark为RDD提供了丰富的操作方法,其中map、filter、flatMap、sample、groupByKey、reduceByKey、union、join、cogroup、mapValues、sort、partionBy用于执行数据转换,生成新的RDD,而count、collect、reduce、lookup、save用于收集或输出计算结果。如前面统计商品销售额的例子,在Spark中只需要调用map和reduceByKey两个转换操作就可以实现,整个程序包括加载销售记录和保存统计结果在内也只需要寥寥几行代码,并且支持Java、Scala、Python、R等多种开发语言,比MapReduce编程要方便得多。下图说明reduceByKey的内部实现。
图6.RDDreduceByKey内部实现
在同一平台上支持多种框架也是发展趋势之一,尤其对于那些开发实力较为雄厚的社区。Spark以批处理模型为核心,实现了交互式分析框架SparkSQL、流计算框架SparkStreaming(及正在实现的StructuredStreaming)、图计算框架GraphX、机器学习库SparkML。而Flink在提供低延迟的流计算的同时,批处理、关系计算、图计算、机器学习,一个也没落下,目标直奔大数据通用计算平台。Google的BEAM(意为Batch+strEAM)则试图把Spark、Flink、Apex这样的计算框架纳入自己制定的标准之下,颇有号令江湖之意。
图12.BEAM的统一模型 7.学习资料 最后介绍一下大数据计算方面的学习资料。入门前的了解、知识面的拓展及知识的零散积累靠长期访问相关的网站、论坛、微信订阅号,问题解答则靠对搜索引擎的熟练驾驭。需要指出的是,网上的内容良萎不齐,很多资料是过时的,以讹传讹也是常有的事,要注意鉴别。 论坛首推知乎、Quora、StackOverflow,运气好的话开发者亲自给你解答。其他值得关注的网站或论坛包括炼数成金、人大经济论坛、CSDN、博客园、云栖社区、360大数据、推酷、伯乐在线、小象学院等。微信订阅号中,InfoQ是最权威的,其他还有THU数据派、大数据杂谈、CSDN大数据、数据猿、Hadoop技术博文等,各人根据偏好取舍。 若要进行系统的学习,则首先应参考官方网站文档。不少大数据平台的官方文档内容都比较详实,胜过多数教材。另外,官方文档与产品通常同步更新,这个优势是其他资料无法做到的。不过要说可读性,书籍或视频教程要强得多。视频资料可以从上文提到的部分网站论坛下载。 书籍方面,国外O\'Reilly、Manning两家出版社在大数据领域出版了不少优秀书籍,特别是Manning的InAction系列和O\'Reilly的DefinitiveGuide系列。前者侧重提高动手能力,后者则知识比较全面。InAction和DefinitiveGuide系列的书籍很多已翻译为中文,一般分别译为xxx实战、xxx权威指南。另外一家出版社Packt也值得关注。Packt的书比较薄,适合入门。至于中文原创书籍,推荐张俊林的《大数据日知录》,该书是对大数据存储和处理技术的全面梳理,系统性强。其他书籍不逐一点评,若想购买或阅读可参考豆瓣对该书的评分。
RDD由于把数据存放在内存中而不是磁盘上,因此需要比Hadoop更多地考虑容错问题。分布式数据集的容错有两种方式:数据检查点和记录数据的更新。处理海量数据时,数据检查点操作成本很高,因此Spark默认选择记录更新的方式。不过如果更新粒度太细太多,记录更新成本也不低。因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列记录下来,类似于数据库中的日志。 当RDD的部分分区数据丢失时,Spark根据之前记录的演变过程重新运算,恢复丢失的数据分区。Spark生态圈的另一项目Alluxio(原名Tachyon)也采用类似的思路,使数据写入速度比HDFS有数量级的提升。 下面总结Spark对MapReduce的改进: MapReduce抽象层次低,需要手工编写代码完成;Spark基于RDD抽象,使数据处理逻辑的代码非常简短。 MapReduce只提供了map和reduce两个操作,表达力欠缺;Spark提供了很多转换和动作,很多关系数据库中常见的操作如JOIN、GROUPBY已经在RDD中实现。 MapReduce中,只有map和reduce两个阶段,复杂的计算需要大量的组合,并且由开发者自己定义组合方式;Spark中,RDD可以连续执行多个转换操作,如果这些操作对应的RDD分区不变的话,还可以放在同一个任务中执行。 MapReduce处理逻辑隐藏在代码中,不直观;Spark代码不包含操作细节,逻辑更清晰。 MapReduce中间结果放在HDFS中;Spark中间结果放在内存中,内存放不下时才写入本地磁盘而不是HDFS,这显著提高了性能,特别是在迭代式数据处理的场合。 MapReduce中,reduce任务需要等待所有map任务完成后才可以开始;在Spark中,分区相同的转换构成流水线放到同一个任务中运行。
3.流计算框架 3.1.流计算概述 在大数据时代,数据通常都是持续不断动态产生的。在很多场合,数据需要在非常短的时间内得到处理,并且还要考虑容错、拥塞控制等问题,避免数据遗漏或重复计算。流计算框架则是针对这一类问题的解决方案。流计算框架一般采用DAG(有向无环图)模型。图中的节点分为两类:一类是数据的输入节点,负责与外界交互而向系统提供数据;另一类是数据的计算节点,负责完成某种处理功能如过滤、累加、合并等。从外部系统不断传入的实时数据则流经这些节点,把它们串接起来。如果把数据流比作水的话,输入节点好比是喷头,源源不断地出水,计算节点则相当于水管的转接口。如下图所示。
图7.流计算DAG模型示意图 为提高并发性,每一个计算节点对应的数据处理功能被分配到多个任务(相同或不同计算机上的线程)。在设计DAG时,需要考虑如何把待处理的数据分发到下游计算节点对应的各个任务,这在实时计算中称为分组(Grouping)。最简单的方案是为每个任务复制一份,不过这样效率很低,更好的方式是每个任务处理数据的不同部分。随机分组能达到负载均衡的效果,应优先考虑。不过在执行累加、数据关联等操作时,需要保证同一属性的数据被固定分发到对应的任务,这时应采用定向分组。在某些情况下,还需要自定义分组方案。
图8.流计算分组 由于应用场合的广泛性,目前市面上已经有不少流计算平台,包括GoogleMillWheel、TwitterHeron和Apache项目Storm、Samza、S4、Flink、Apex、Gearpump。 3.2.Storm及Trident 在流计算框架中,目前人气最高,应用最广泛的要数Storm。这是由于Storm具有简单的编程模型,且支持Java、Ruby、Python等多种开发语言。Storm也具有良好的性能,在多节点集群上每秒可以处理上百万条消息。Storm在容错方面也设计得很优雅。下面介绍Storm确保消息可靠性的思路。 在DAG模型中,确保消息可靠的难点在于,原始数据被当前的计算节点成功处理后,还不能被丢弃,因为它生成的数据仍然可能在后续的计算节点上处理失败,需要由该消息重新生成。而如果要对消息在各个计算节点的处理情况都作跟踪记录的话,则会消耗大量资源。 Storm的解决思路,是为每条消息分派一个ID作为唯一性标识,并在消息中包含原始输入消息的ID。同时用一个响应中心(Acker)维护每条原始输入消息的状态,状态的初值为该原始输入消息的ID。每个计算节点成功执行后,则把输入和输出消息的ID进行异或,再异或对应的原始输入消息的状态。由于每条消息在生成和处理时分别被异或一次,则成功执行后所有消息均被异或两次,对应的原始输入消息的状态为0。因此当状态为0后可安全清除原始输入消息的内容,而如果超过指定时间间隔后状态仍不为0,则认为处理该消息的某个环节出了问题,需要重新执行。
图9.Storm保证消息可靠性过程示意图
Storm还实现了更高层次的抽象框架Trident。Trident以微批处理的方式处理数据流,比如每次处理100条记录。Trident提供了过滤、分组、连接、窗口操作、聚合、状态管理等操作,支持跨批次进行聚合处理,并对执行过程进行优化,包括多个操作的合并、数据传输前的本地聚合等。以微批处理方式处理数据流的框架还有SparkStreaming。
图10.实时流处理与微批处理比较 下面是Storm、Trident与另外几种流计算框架的对比:
4.交互式分析框架 4.1.概述 在解决了大数据的可靠存储和高效计算后,如何为数据分析人员提供便利日益受到关注,而最便利的分析方式莫过于交互式查询。这几年交互式分析技术发展迅速,目前这一领域知名的平台有十余个,包括Google开发的Dremel和PowerDrill,Facebook开发的Presto,Hadoop服务商Cloudera和HortonWorks分别开发的Impala和Stinger,以及Apache项目Hive、Drill、Tajo、Kylin、MRQL等。 一些批处理和流计算平台如Spark和Flink也分别内置了交互式分析框架。由于SQL已被业界广泛接受,目前的交互式分析框架都支持用类似SQL的语言进行查询。早期的交互式分析平台建立在Hadoop的基础上,被称作SQL-on-Hadoop。后来的分析平台改用Spark、Storm等引擎,不过SQL-on-Hadoop的称呼还是沿用了下来。SQL-on-Hadoop也指为分布式数据存储提供SQL查询功能。 4.2.Hive ApacheHive是最早出现的架构在Hadoop基础之上的大规模数据仓库,由Facebook设计并开源。Hive的基本思想是,通过定义模式信息,把HDFS中的文件组织成类似传统数据库的存储系统。Hive保持着Hadoop所提供的可扩展性和灵活性。Hive支持熟悉的关系数据库概念,比如表、列和分区,包含对非结构化数据一定程度的SQL支持。它支持所有主要的原语类型(如整数、浮点数、字符串)和复杂类型(如字典、列表、结构)。它还支持使用类似SQL的声明性语言HiveQueryLanguage(HiveQL)表达的查询,任何熟悉SQL的人都很容易理解它。HiveQL被编译为MapReduce过程执行。下图说明如何通过MapReduce实现JOIN和GROUPBY。
(1)实现JOIN
(2)实现GROUPBY 图11.部分HiveQL操作的实现方式 Hive与传统关系数据库对比如下:
Hive的主要弱点是由于建立在MapReduce的基础上,性能受到限制。很多交互式分析平台基于对Hive的改进和扩展,包括Stinger、Presto、Kylin等。其中Kylin是中国团队提交到Apache上的项目,其与众不同的地方是提供多维分析(OLAP)能力。Kylin对多维分析可能用到的度量进行预计算,供查询时直接访问,由此提供快速查询和高并发能力。Kylin在eBay、百度、京东、网易、美团均有应用。 4.3.SQL引擎Calcite 对于交互式分析,SQL查询引擎的优劣对性能的影响举足轻重。Spark开发了自己的查询引擎Catalyst,而包括Hive、Drill、Kylin、Flink在内的很多交互式分析平台及数据仓库使用Calcite(原名optiq)作为SQL引擎。Calcite是一个Apache孵化项目,其创建者JulianHyde曾是Oracle数据库SQL引擎的主要开发者。Calcite具有下列几个技术特点: 支持标准SQL语言。 支持OLAP。 支持对流数据的查询。 独立于编程语言和数据源,可以支持不同的前端和后端。 支持关系代数、可定制的逻辑规划规则和基于成本模型优化的查询引擎。 支持物化视图(materializedview)的管理。 由于分布式场景远比传统的数据存储环境更复杂,Calcite和Catalyst都还处于向Oracle、MySQL等经典关系数据库引擎学习的阶段,在性能优化的道路上还有很长的路要走。 5.其他类型的框架 除了上面介绍的几种类型的框架外,还有一些目前还不太热门但具有重要潜力的框架类型。图计算是DAG之外的另一种迭代式计算模型,它以图论为基础对现实世界建模和计算,擅长表达数据之间的关联性,适用于PageRank计算、社交网络分析、推荐系统及机器学习。这一类框架有GooglePregel、ApacheGiraph、ApacheHama、PowerGraph、,其中PowerGraph是这一领域目前最杰出的代表。很多图数据库也内置图计算框架。
另一类是增量计算框架,探讨如何只对部分新增数据进行计算来极大提升计算过程的效率,可应用到数据增量或周期性更新的场合。这一类框架包括GooglePercolator、MicrosoftKineograph、阿里Galaxy等。 另外还有像ApacheIgnite、ApacheGeode(GemFire的开源版本)这样的高性能事务处理框架。 6.总结与展望 从Hadoop横空出世到现在10余年的时间中,大数据分布式计算技术得到了迅猛发展。不过由于历史尚短,这方面的技术远未成熟。各种框架都还在不断改进,并相互竞争。 性能优化毫无疑问是大数据计算框架改进的重点方向之一。而性能的提高很大程度上取决于内存的有效利用。这包括前面提到的内存计算,现已在各种类型的框架中广泛采用。内存资源的分配管理对性能也有重要影响,JVM垃圾回收在给开发人员带来便利的同时,也制约了内存的有效利用。另外,Java的对象创建及序列化也比较浪费资源。在内存优化方面做足功夫的代表是Flink。出于性能方面的考虑,Flink很多组件自行管理内存,无需依赖JVM垃圾回收机制。Flink还用到开辟内存池、用二进制数据代替对象、量身定制序列化、定制缓存友好的算法等优化手段。Flink还在任务的执行方面进行优化,包括多阶段并行执行和增量迭代。 拥抱机器学习和人工智能也是大数据计算的潮流之一。Spark和Flink分别推出机器学习库SparkML和FlinkML。更多的平台在第三方大数据计算框架上提供机器学习,如Mahout、Oryx及一干Apache孵化项目SystemML、HiveMall、PredictionIO、SAMOA、MADLib。这些机器学习平台一般都同时支持多个计算框架,如Mahout同时以Spark、Flink、H2O为引擎,SAMOA则使用S4、Storm、Samza。在深度学习掀起热潮后,又有社区探索把深度学习框架与现有分布式计算框架结合起来,这样的项目有SparkNet、CaffeonSpark、TensorFrames等。
科技新闻推荐
对宫寒的人们来说身体不适是经常会见到的现象,当女性朋友感觉到身体虚弱,痛经或是腹胀等症状时,还是需要提高警惕的,也要尽快的明确自身的健康状...
&发布时间:
随着宫寒问题的出现,女性朋友的健康状况也多了一丝隐患,不管是平时常见的痛经,还是备受家庭关注的不孕,都有可能是宫寒所致,当然了宫寒...
&发布时间:
大家可能都知道很多不孕问题都是因为宫寒所致的,那么宫寒一定不孕吗?其实宫寒并不一定会导致不孕,只能说出现宫寒的女性存在不孕的几率,...
&发布时间:
相信不少女性朋友都有痛经的问题,这也是备受女性朋友们关注和苦恼的,每次月经来之前,就已经有征兆了,不是腹痛就是情绪紊乱,来经后甚至...
&发布时间:
女性宫寒与自身生活习惯不好有直接的关系,比方说平时不注意保暖,寒冷的冬天穿的衣服太少,让腹部受凉,此外过度的减肥也是很容易引发宫寒...
&发布时间:
从疾病名词来看心力衰竭是心脏功能出现了问题,衰竭时将会造成身体很多器官也会有异常,最终身体有很多症状与危害。如果疾病急性发作后危险...
&发布时间:
顽固性心力衰竭是心力衰竭疾病中较难治疗的一种类型,治疗后会复发,疾病反复发作后将会刺激到心脏功能,最终会造成心脏功能全部丧失,患者...
&发布时间:
心力衰竭是极严重的危险性疾病,患者多是老年人,当然不同年龄的人也有机率患病,此病根据类型划分有很多种,比如老年心力衰竭、充血性心力...
&发布时间:
对于女性来说,子宫是很重要的一种器官,如果女性的子宫发育不良,那么对以后的生育肯定会有很大的影响,因为女性的子宫是决定生育的地方,...
&发布时间:
大家都知道的是在每个孕妇生产后都是会有一段时间进行修养,这段时间就是叫做坐月子。可能很多的朋友知道的就是坐月子是为了弥补生产的时候...
&发布时间:
对于男性来说射精时一个正常的现象,而对于一个家庭来说是更好的繁衍下一代。但是往往有很多的男性会出现影响自己生活和未来的问题,射精功...
&发布时间:
对于男性来说射精就是为了更好的繁衍下一代,同样也是跟夫妻加深感情过程中的高潮。相对于射精很多的男性还是比较了解的,射精后身体比较放...
&发布时间:
很多男性在第一次睾丸发育的过程中没有发育得好,所以说睾丸总是会出现过小的现象,如果男性的睾丸发育不好的话,那么就会影响到男性的生殖...
&发布时间:
枸杞子泡水喝不仅能够美容养颜,而且对女性的月经也有一定的促进作用,对于糖尿高的患者来说,他们最关心的问题便是血糖高枸杞子能吃吗?根据...
&发布时间:
神经性的阳痿疾病就是属于男性在工作方面压力大了,或者是心理不健康,经常感觉到一些到孩子心理压力大的事情发生,那么就会引起这个阳痿,...
&发布时间:
老年人患病多会持续很长时间,即使用药治疗也会发现治疗的效果差,很多人称是身体素质差,而有人称是年龄大的缘故,其实老年患病后会受到很...
&发布时间:
患有老年心力衰竭后我们要重视疾病的治疗,治疗前更重视诊断,诊断疾病包括了诊断标准、检查的项目,医生还会结合患者的病史、身体症状等按...
&发布时间:
很多人会发现人到了老年时期,身体的很多器官会出现衰竭,严重的一些疾病就会开始出现,老年常见疾病有老年痴呆、高血压等,严重的就有心力...
&发布时间:
现在我们大家对神经衰弱都应该有一定的了解了,是一种心理上的疾病,一般多发生在于脑力劳动者的身上,而且现在患有精神衰弱的人大部分也都是中年人...
&发布时间:
目前有很多老人因为上了年纪后,抵抗力变差后,就很容易出现甲状腺功能低下,就会引起身体容易发凉、出现乏力、记忆力变差、变得爱睡觉等症...
&发布时间:
友情链接:

我要回帖

更多关于 王者荣耀技能释放方式 的文章

 

随机推荐