加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

大数据处理赏罚项目相干

发布时间:2021-01-17 19:32:21 所属栏目:大数据 来源:网络整理
导读:mapReduce部门 * MapReduce MAP :映射 reduce :归纳* 简朴来说,一个映射函数就是对一些独立元素构成的观念上的列表(譬喻,一个测试后果的列表)的每一个元素举办指定的操纵(好比,有人发明全部门生的后果都被高估了一分,他可以界说一个“减一”的映射函
副问题[/!--empirenews.page--]

mapReduce部门

* MapReduce MAP :映射 reduce :归纳*
简朴来说,一个映射函数就是对一些独立元素构成的观念上的列表(譬喻,一个测试后果的列表)的每一个元素举办指定的操纵(好比,有人发明全部门生的后果都被高估了一分,他可以界说一个“减一”的映射函数,用来批改这个错误。)。 * 究竟上,每个元素都是被独立操纵的,而原始列表没有被变动,由于这里建设了一个新的列表来生涯新的谜底。 * 这就是说,Map操纵是可以高度并行的,这对高机能要求的应用以及规模的需求很是有效。
而归纳操纵指的是对一个列表的元素举办恰当的归并(继承看前面的例子,假若有人想知道班级的均匀分该怎么做?他可以界说一个归纳函数,通过让列表中的奇数(odd)或偶数(even)元素跟本身的相邻的元素相加的方法把列表减半,云云递归运算直到列表只剩下一个元素,然后用这个元素除以人数,就获得了均匀分)。固然他不如映射函数那么并行,可是由于归纳老是有一个简朴的谜底,大局限的运算相对独立,以是归纳函数在高度并行情形下也很有效。


avro部门

http://langyu.iteye.com/blog/708568
Avro(读音相同于[?vr?])是Hadoop的一个子项目,由Hadoop的首创人Doug Cutting(也是Lucene,Nutch等项目标首创人,跪拜)牵头开拓,当前最新版本1.3.3。Avro是一个数据序列化体系,计划用于支持大批量数据互换的应用。它的首要特点有:支持二进制序列化方法,可以便捷,快速地处理赏罚大量数据;动态说话友爱,Avro提供的机制使动态说话可以利便地处理赏罚Avro数据。
当前市场上有许多相同的序列化体系,如Google的Protocol Buffers,Facebook的Thrift。这些体系回声精采,完全可以满意平凡应用的需求。针对一再开拓的迷惑,Doug Cutting撰文表明道:Hadoop现存的RPC体系碰着一些题目,如机能瓶颈(当前回收IPC体系,它行使Java自带的DataOutputStream和DataInputStream);必要处事器端和客户端必需运行沟通版本的Hadoop;只能行使Java开拓等。但现存的这些序列化体系自身也有短处,以Protocol Buffers为例,它必要用户先界说数据布局,然后按照这个数据布局天生代码,再组装数据。假如必要操纵多个数据源的数据集,那么必要界说多套数据布局并一再执行多次上面的流程,这样就不能对恣意数据集做同一处理赏罚。其次,对付Hadoop中Hive和Pig这样的剧本体系来说,行使代码天生是不公道的。而且Protocol Buffers在序列化时思量到数据界说与数据也许不完全匹配,在数据中添加注解,这会让数据变得复杂并拖慢处理赏罚速率。其余序列化体系有如Protocol Buffers相同的题目。所觉得了Hadoop的前程思量,Doug Cutting主导开拓一套全新的序列化体系,这就是Avro,于09年插手Hadoop项目族中。
上面通过与Protocol Buffers的比拟,大抵清晰了Avro的拿手。下面着重存眷Avro的细节部门。
Avro依靠模式(Schema)来实现数据布局界说。可以把模式领略为Java的类,它界说每个实例的布局,可以包括哪些属性。可以按照类来发生恣意多个实例工具。对实例序列化操纵时必需必要知道它的根基布局,也就必要参考类的信息。这里,按照模式发生的Avro工具相同于类的实例工具。每序次列化/反序列化时都必要知道模式的详细布局。以是,在Avro可用的一些场景下,如文件存储或是收集通讯,都必要模式与数据同时存在。Avro数据以模式来读和写(文件或是收集),而且写入的数据都不必要插手其余标识,这样序列化时速率快且功效内容少。因为措施可以直接按照模式来处理赏罚数据,以是Avro更得当于剧本说话的施展。 Avro的模式首要由JSON工具来暗示,它也许会有一些特定的属性,用来描写某种范例(Type)的差异情势。Avro支持八种根基范例(Primitive Type)和六种殽杂范例(Complex Type)。根基范例可以由JSON字符串来暗示。每种差异的殽杂范例有差异的属性(Attribute)来界说,有些属性是必需的,有些是可选的,假如必要的话,可以用JSON数组来存放多个JSON工具界说。在这几种Avro界说的范例的支持下,可以由用户来缔造出富厚的数据布局来,支持用户纷繁伟大的数据。
Avro支持两种序列化编码方法:二进制编码和JSON编码。行使二进制编码会高效序列化,而且序列化后获得的功效会较量小;而JSON一样平常用于调试体系或是基于WEB的应用。对Avro数据序列化/反序列化时都必要对模式以深度优先(Depth-First),从左到右(Left-to-Right)的遍历次序来执行。根基范例的序列化轻易办理,殽杂范例的序列化会有许多差异法则。对付根基范例和殽杂范例的二进制编码在文档中划定,凭证模式的理会次序依次分列字节。对付JSON编码,连系范例(Union Type)就与其余殽杂范例示意纷歧致。 Avro为了便于MapReduce的处理赏罚界说了一种容器文件名目(Container File Format)。这样的文件中只能有一种模式,全部必要存入这个文件的工具都必要凭证这种模式以二进制编码的情势写入。工具在文件中以块(Block)来组织,而且这些工具都是可以被压缩的。块和块之间会存在同步标志符(Synchronization Marker),以便MapReduce利便地切割文件用于处理赏罚。下图是按照文档描写画出的文件布局图: [图片上传中。。。(1)]
上图已经对各块做肢解操纵,但照旧有须要再具体声名下。一个存储文件由两部门构成:头信息(Header)和数据块(Data Block)。而头信息又由三部门组成:四个字节的前缀(相同于Magic Number),文件Meta-data信息和随机天生的16字节同步标志符。这里的Meta-data信息让人有些迷惑,它除了文件的模式外,还能包括什么。文档中指出当前Avro认定的就两个Meta-data:schema和codec。这里的codec暗示对后头的文件数据块(File Data Block)回收何种压缩方法。Avro的实现都必要支持下面两种压缩方法:null(不压缩)和deflate(行使Deflate算法压缩数据块)。除了文档中认定的两种Meta-data,用户还可以自界说合用于本身的Meta-data。这里用long型来暗示有几多个Meta-data数据对,也是让用户在现实应用中可以界说足够的Meta-data信息。对付每对Meta-data信息,都有一个string型的key(必要以“avro.”为前缀)和二进制编码后的value。对付文件中头信息之后的每个数据块,有这样的布局:一个long值记录当前块有几多个工具,一个long值用于记录当前块颠末压缩后的字节数,真正的序列化工具和16字节长度的同步标志符。因为工具可以组织成差异的块,行使时就可以不颠末反序列化而对某个数据块举办操纵。还可以由数据块数,工具数和同步标志符来定位破坏的块以确保数据完备性。
上面是将Avro工具序列化到文件的操纵。与之响应的,Avro也被作为一种RPC框架来行使。客户端但愿同处事器端交互时,就必要互换两边通讯的协议,它相同于模式,必要两边来界说,在Avro中被称为动静(Message)。通讯两边都必需保持这种协议,以便于理会从对方发送过来的数据,这也就是传说中的握手阶段。
动静从客户端发送随处事器端必要颠末传输层(Transport Layer),它发送动静并吸取处事器端的相应。达到传输层的数据就是二进制数据。凡是以HTTP作为传输模子,数据以POST方法发送到对方去。在Avro中,它的动静被封装成为一组缓冲区(Buffer),相同于下图的模子: [图片上传中。。。(2)] 如上图,每个缓冲区以四个字节开头,中间是多个字节的缓冲数据,最后以一个空缓冲区末了。这种机制的甜头在于,发送端在发送数据时可以很利便地组装差异数据源的数据,吸取方也可以将数据存入差异的存储区。尚有,当往缓冲区中写数据时,大工具可以独有一个缓冲区,而不是与其余小工具殽杂存放,便于吸取方利便地读取大工具。
下面聊下Avro的其余方面信息。前文中引述Doug Cutting的话说,Protocol Buffer在传输数据时,往数据中插手注释(annotation),以应对数据布局与数据不匹配的题目。但直接导致数据量变大,理会坚苦等弱点。那Avro是怎样应对模式与数据的差异呢?为了担保Avro的高效,假定模式至少大部门是匹配的,然后界说一些验证法则,假如在法则满意的条件下,做数据验证。假如模式不匹配就会报错。沟通模式,交互数据时,假如数据中穷乏某个域(field),用类型中的默认值配置;假如数据中多了些与模式不匹配的数据。则忽视这些值。
Avro列出的利益中尚有一项是:可排序的。就是说,一种说话支持的Avro措施在序列化数据后,可由其余说话的Avro措施对未反序列化的数据排序。我不知道这种机制是在什么样的场景下行使,但看起来照旧挺不错的。
当前关于Avro的资料挺少的,上面的文章也是我由官方文档和作者的文章来总结的。我信托个中必定有许多错误,或者有些方面基础就领略错了。此刻放出这篇总结,便于不绝修订和增补,也是对这两天进修成就的分享,但愿对想相识Avro的人有些许辅佐,更但愿各人指证我领略错误的处所,利于进步。
其余资料:
* Avro类型:http://avro.apache.org/docs/current/spec.html
http://avro.apache.org/docs/current/spec.html
* Doug Cutting文章:http://www.cloudera.com/blog/2009/11/avro-a-new-format-for-data-interchange/
http://www.cloudera.com/blog/2009/11/avro-a-new-format-for-data-interchange/
* 各序列化体系机能较量:http://wiki.github.com/eishay/jvm-serializers/
http://wiki.github.com/eishay/jvm-serializers/


kafka部门

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读