Hadoop生态圈以及各级部分的简介

by admin on 2018年12月19日

1.Hadoop是什么?

入生数据的分布式存储和计量平台

HDFS: Hadoop Distributed File System分布式文件系统

MapReduce:并行总计框架

缓解之题目:

HDFS: 海量数据的积存

MapReduce:海量数据的辨析

前言

关于IM(InstantMessaging)聊天应用(如:微信,QQ)、音信推送技术(如:现今运动端APP标配的音信推送模块)等便通常连�讯应用场景下,大多数都是桌面应用程序或者native应用较为流行,而网上有关原生IM(相关著作呼吁参见:《IM架构篇》、《IM综合材料》、《IM/推送的通信格式、协议篇》、《IM心跳保活篇》、《IM安全篇》、《实时音录像开发》)、音讯推送应用(参见:《推送技术好文》)的通信原理介绍也比多,此处不再赘言。

而web端的IM应用,由于浏览器的兼容性及该原本之“客户端请求服务器处理并应”的通信模型,造成了而在浏览器被实现一个兼容性较好之IM应用,其通信过程得是过多技巧的做,本文的目标就是是如详细探索那个技能并分析其规律同过程。

2.Hadoop生态圈

图片 1

①HBase

Google Bigtable的开源实现

列式数据库

而是集群化

可动用shell、web、api等多种道访

称高读写(insert)的场所

HQL查询语言

NoSQL的顶尖代表出品

图片 2

②Hive

数据仓库工具。可以拿Hadoop下的初结构化数据化Hive中之表明

支撑一栽及SQL几乎完全相同的言语HiveQL。除了不援助改进、索引和作业,几乎SQL的其它特征都能支撑

得用作是打SQL到Map-Reduce的映射器

提供shell、JDBC/ODBC、Thrift、Web等接口

图片 3

③Zookeeper

谷歌 Chubby的开源实现

用以协调分布式系统上的各个服务。例如确认信息是否确切到达,制止单点失效,处理负荷均衡等

接纳场景:Hbase,实现Namenode自动切换

工作原理:领导者,跟随者以及选举过程

图片 4

④Sqoop

用于在Hadoop和涉嫌项目数据库里互换数据

透过JDBC接口连可关系项目数据库

图片 5

⑤Chukwa

搭在Hadoop之上的多寡收集和析框架

根本开展日志采集和分析

通过设置于搜集节点的“代理”采集最原始的日志数据

代办将数据发给收集器

采集器定时拿数据形容入Hadoop集群

指定定时启动的Map-Reduce作业队数据举行加工处理以及剖析

图片 6

⑥Pig

Hadoop客户端

利用类似于SQL的面向数据流的语言Pig Latin

Pig Latin可以完成排序,过滤,求与,聚组,关联等操作,能够辅助由定义函数

Pig自动把Pig
Latin映射为Map-Reduce作业上流传集群运行,收缩用户编写Java程序的抑郁

图片 7

⑦Avro

数量体系化工具,由Hadoop的开山Doug Cutting主持开发

用于补助大批量数据交换的下。援助二上前制连串化模式,可以便捷,迅速地处理大量数

动态语言友好,Avro提供的编制而动态语言可以一本万利地拍卖 Avro数据。

Thrift接口

图片 8

⑧Cassandra 

NoSQL,分布式的Key-Value型数据库,由非死不可进献

和Hbase类似,也是以史为鉴Google Bigtable的想序列

光来各样写,没有轻易写的计划,满意大负荷情形的性能需求

图片 9

 

学交换


更多即时通讯技术资料:http://www.52im.net/forum.php?mod=collection&op=all


即时通讯开发互换群:215891622

3.Hadoop生态圈流程图

图片 10

 

复多材料

【�Web端即时通讯技术盘点请参见】:

Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

【关于Ajax短轮询】:

找就点的素材没什么意义,除非忽悠客户,否则要考虑任何3栽方案即可。

【有关Comet技术�的详细介绍请参见】:

Comet技术详解:基于HTTP长连接的Web端实时通信技术

WEB端即时通讯:HTTP长连接、长轮询(long
polling)详解

WEB端即时通讯:不用WebSocket也同样会搞定信息的饶时性

开源Comet服务器iComet:协助百万面世的Web端即时通讯�方案

【有关WebSocket的详实介绍请参见】:

WebSocket详解(一):开端识WebSocket技术

WebSocket详解(二):技术原理、代码演示与利用案例

WebSocket详解(三):深切WebSocket通信协议细节

Socket.IO介绍:襄助WebSocket、用于WEB端的即时通讯的框架

socket.io和websocket
之间是啊关系?有什么界别?

【有关SSE的事无巨细介绍随笔呼吁参见】:

SSE技术详解:一种全新的HTML5服务器推送事件技术

【更多WEB端即时通讯著作要见】:

http://www.52im.net/forum.php?mod=collection&action=view&ctid=15

一样、传统Web的通信原理

浏览器本身作为一个瘦客户端,不持有间接通过系统调用来上与远在异地的此外一个客户端浏览器通信的效应。这与大家桌面应用之办事措施是殊之,平常桌面应用通过socket可以与远程主机及此外一端的一个进程建立TCP连接,从而达到全双工的就是日常通信。

浏览器从出生起初一贯走的是客户端请求服务器,服务器重回结果的情势,即便提升至今仍没其它改动。所以可以毫无疑问之凡,要牵挂实现五只客户端的通信,必然要透过服务器举办消息之转发。例如A要和B通信,则应该是A先管消息发送给IM应用服务器,服务器按照A音讯遭到带的收信人将其又转车给B,同样B到A也是这种格局,如下所示:

亚、传统通信形式实现IM应用得缓解之题材

咱俩认识及因web实现IM软件还要活动浏览器请求服务器的格局,这这种艺术下,针对IM软件的出需要缓解如下几个问题:

双全工通信:

纵使达浏览器拉取(pull)服务器数据,服务器推送(push)数据到浏览器;

低延迟:

尽管浏览器A发送给B的信息透过服务器假设高速转化给B,同理B的信呢只要快快交给A,实际上即使要求其它浏览器会飞速请求服务器的数额,服务器会很快推送数据到浏览器;

支撑跨域:

一般说来客户端浏览器与服务器都是高居网络的不同地方,浏览器本身不同意通过脚本直接看不同域名下的服务器,尽管IP地址一样域名不同呢异常,域名相同端口不同吧要命,这面根本是为着安全着想。

即时通讯网注:关于浏览器跨域访问导致的安全题材,有一个受称为CSRF网络攻击形式,请看下的剪辑

CSRF(Cross-site request
forgery),中文名称:跨站请求伪造,也于叫做:one click attack/session
riding,缩写为:CSRF/XSRF。

乃当时得如此精通CSRF攻击:攻击者盗用了您的地位,以你的名义发送恶意请求。CSRF可以做的事务包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品,虚拟货币转账……造成的问题概括:个人隐私泄露和资产安全。

CSRF那种攻击模式在2000年已经深受海外的安人士提议,但以境内,直到06年才起首吃关注,08年,国内外的差不多独巨型社区以及互动网站独家爆出CSRF漏洞,如:NY提姆(Tim)es.com(伦敦时报)、Metafilter(一个重型的BLOG网站),YouTube和百度HI……而前几日,互联网上之成千上万站点仍对之毫无防范,以至于安全业界称CSRF为“沉睡的大个儿”。

按照以上分析,下面针对当下几个问题给起解决方案。

老三、全对工低延迟的解决办法

缓解方案3.1:客户端浏览器轮询服务器(polling)

就是可是简便易行的等同栽缓解方案,其规律是于客户端通过Ajax的措施的艺术各隔一有些截时光就是发送一个呼吁到服务器,服务器重回最新数据,然后客户端依据取得的数额来更新界面,那样就直接实现了便通常通信。优点是简简单单,缺点是对准服务器压力相比较充分,浪费带宽流量(平常状态下多少仍然没爆发变更之)。

客户端代码如下:

(简书不能支撑程序代码样式,详细代码请见同步发布篇:http://www.52im.net/thread-338-1-1.html)

开创一个XHR对象,每2秒即请服务器一浅拿到服务器时间并打印出。

服务端代码(Node.js):

(简书无法支撑程序代码样式,详细代码请见同步发表篇:http://www.52im.net/thread-338-1-1.html)

结果如下:

解决方案3.2:长轮询(long-polling)

于面的轮询解决方案中,由于每回都如发送一个呼吁,服务端不管多少是否发生变化都发送数据,请求完成后总是关闭。这中档经过的博通信是勿必要的,于是以冒出了长轮询(long-polling)形式。这种艺术是客户端发送一个求到服务器,服务器查看客户端请求的多少是否生了转(是否有新型数据),倘使暴发变化则顿时响应再次来到,否则保持这连续并定期检查最新数据,直到有了数码更新或连续超时。同时客户端连接要断开,则另行发出请求,这样以相同时间内大大收缩了客户端请求服务器的次数。代码如下。(详细技术作品呼吁参见《WEB端即时通讯:HTTP长连接、长轮询(long
polling)详解
》)

客户端:

(简书无法支撑程序代码样式,详细代码请见同步发布篇:http://www.52im.net/thread-338-1-1.html)

在XHR对象的readySate为4的时,表示服务器就回到数据,这一次连接已断开,再一次要服务器建立连接。

服务端代码:

(简书无法支撑程序代码样式,详细代码请见同步宣布篇:http://www.52im.net/thread-338-1-1.html)

于服务端通过变更一个于1到9间的即兴数来套判断数是否发了变动,当遵照机数在0到5内表示数据发生了变更,间接归,否则保持连续,每隔2秒再检测。

结果如下:

可以看重返的时刻是没有规律的,并且单位时间内回到的响应数相相比较polling模式相比较少。

缓解方案3.3:基于http-stream通信

(简书不能支撑程序代码样式,详细代码请见同步宣布篇:http://www.52im.net/thread-338-1-1.html)

劳动端定时发送随机数给客户端,并调用客户端process函数。

当IE5中测试结果如下:

可以看出实现在低版本IE中客户端到服务器的呼吁-推送的便通常通信。

3.3.3因htmlfile的多寡流通信

还要并发新题材了,在IE中,使用iframe请求服务端,服务端保持通信连接没有通回来从前,浏览器title一贯处于加载状态,并且底部也出示着加载,这对一个产品来讲用户体验是坏的,于是谷歌的资质们而想暴发了一中hack道。就是以IE中,动态变化一个htmlfile对象,这么些目的ActiveX模式之com组件,它实际上虽然是一个在内存中贯彻的HTML文档,通过将转变的iframe添加到这些内存中的HTMLfile中,并拔取iframe的多少流通信格局及地点的机能。同时由HTMLfile对象并无是直接助长到页面上的,所以并无造成浏览器显示着加载的场所。代码如下。

客户端:

(简书不可以支撑程序代码样式,详细代码请见同步揭橥篇:http://www.52im.net/thread-338-1-1.html)

劳务端传送给iframe的凡这样子:

(简书无法支撑程序代码样式,详细代码请见同步发布篇:http://www.52im.net/thread-338-1-1.html)

留神这里服务端输出的多少content-type首部要设定为application/javascript,否则某些浏览器会将其当作文本分析。

结果如下:

五、WebSocket

以地点的这些解决方案中,都是使用浏览器单向请求服务器或者服务器就为推送数据到浏览器这个技术组合在一起而形成的hack技术,在HTML5受到,为了提升web的效果,提供了websocket技术,它不只是如出一辙栽web通信模式,也是如出一辙栽应用层协议。它提供了浏览器与服务器之间原生的双全工跨域通信,通过浏览器和服务器之间建立websocket连接(实际上是TCP连接),在相同时刻可以实现客户端到服务器和服务器到客户端的数发送。关于该技术的规律,请参见:《WebSocket详解(一):伊始认识WebSocket技术》、《WebSocket详解(二):技术原理、代码演示和运用案例》、《WebSocket详解(三):深切WebSocket通信协议细节》,此处就非以赘述了,直接让有代码。在扣押代码在此之前,需要事先通晓websocket整个办事历程。

率先是客户端new
一个websocket对象,该对象会见发送一个http请求到服务端,服务端发现这是单webscoket请求,会允许协商转换,发送回客户端一个101状态码的response,以上过程叫一糟糕握手,经过这一次握手后,客户端就跟服务端建立了一样长长的TCP连接,在该连达,服务端和客户端就得开展双向通信了。这时的双向通信在应用层走的便是ws或者wss协议了,和http就从不涉及了。所谓的ws协议,就是要求客户端以及服务端遵循某种格式发送数据报文(帧),然后对方才会领悟。

关于ws协议要求的数目格式官网指定如下:

中于根本的凡FIN字段,它占用1位,表示登时是一个数据帧的了标志,同时为下一个数据帧的始发标志。opcode字段,它占用4各,当为1时,表示传递的是text帧,2代表二进制数据帧,8意味着需要收尾此次通信(就是客户端如故服务端哪个发送给对方是字段,就代表对方而关张连接了)。9象征发送的凡一个ping数据。mask占用1位,为1代表masking-key字段可用,masking-key字段是故来对客户端发送来的多寡做unmask操作的。它占用0到4个字节。Payload字段表示其实发送的数量,可以是字符数据也不过二进制数据。

就此随便是客户端和劳动端向对方发送信息,都必用数据组装成者的帧格式来发送。

率先来拘禁服务端代码:

(简书无法支撑程序代码样式,详细代码请见同步发布篇:http://www.52im.net/thread-338-1-1.html)

服务端通过监听data事件来抱客户端发送来之数,倘诺是握手请求,则发送http
101响应,否则解析拿到的数码并打印出来,然后判断是无是断开连接的伸手(Opcode也8),假如若则断开连接,否则用接受及的多寡组装成帧再发送给客户端。

客户端代码:

(简书无法支撑程序代码样式,详细代码请见同步发表篇:http://www.52im.net/thread-338-1-1.html)

客户端创立一个websocket对象,在onopen时直接触之后(握手成功后),给页面及之button指定一个事件,用来发送页面input当中的信息,服务端接收到音信打印出来,并组建成帧再次回到给日客户端,客户端再append到页面及。

客户结果如下:

劳动端输出结果:

于者可以看出,WebSocket在扶助她的浏览器上确供了同栽都双工跨域的通信方案,所以在每以上各个方案受到,大家的首选的是WebSocket。

结束语

点论述了这样多对IM应用开发所涉及到的通信情势,在骨子里付出中,大家普通以的是有些外人写好之实时报道的库房,比如socket.iosockjs,他们之法则就是是将方(还有局部其他的设基于Flash的push)的有的艺拓展了于客户端与服务端的卷入,然后给开发者一个合并调用的接口。这些接口在协助websocket的条件下行使websocket,在匪帮忙它们的时刻启用下面所云的一对hack技术。

由事实上来讲,单独使用本文上述所讲的其他一样栽技术(WebSocket除外)达不至我们在作品最先指出的低延时,双全工、跨域的尽求,唯有把她们结成起来才会挺好地劳作,所以普通情状下,这么些库都是于不同的浏览器上运各类不同的结缘来促成实时报道的。

下面是sockjs在不同浏览器下面用的不等组合措施:

起图及足见见,对于当代浏览器(IE10+,chrome14+,Firefox10+,Safari5+以及Opera12+)都是力所能及丰裕好的扶助WebSocket的,另外低版本浏览器平时以基于XHR(XDR)的polling(streaming)或者是冲iframe的之polling(streaming),对于IE6\7来发话,它不只未帮忙XDR跨域,也未协理XHR跨域,所以只是能够使用jsonp-polling的措施。

(本文同步宣布给:http://www.52im.net/thread-338-1-1.html

作者:Jack
Jiang
(点击作者姓名进入Github)

出处:http://www.52im.net/space-uid-1.html

交流:�欢迎出席即时通讯开发互换群 215891622

讨论:http://www.52im.net/

Jack Jiang同时是【原创Java
Swing外观工程BeautyEye】
【轻量级移动端即时通讯框架MobileIMSDK】的撰稿人,可往下充斥互换。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图