Hadoop应用、分布式架构、日志系统在Hadoop的应用及实现

浏览: 4783

吴文波bob

今天先分享下我们在日志方面的一些处理方式。

企业日志的几种情况:

A.  服务器监控日志

B.  内部应用程序日志

C.  网站用户点击行为日志

服务器监控日志

服务器监控日志对企业来讲是非常重要的一个部分。这部分数据包含服务器的性能监控,也包含应用程序站点的日志监控。企业上了一定规模以后,是迫切需要解决当前服务器的运行状态、应用程序运行状态。如果在外部市场投放了广告,带来巨大流量后,可视化实时监控web应用程序运行状态是很关键的。

服务器监控通常会用到Cacti,zabbix,ganglia,Splunk等工具。

其中Splunk是一个顶级日志分析软件,它不仅可以用多种方式来添加日志,生产图形化报表,最厉害的是它的搜索功能 - 被称为“Google for IT”。Splunk是商业版。

Cacti,zabbix大部分是用来做服务器CPU、磁盘、网络等情况进行监控。

日志信息分析工具中推荐使用Logstash+Elasticsearch+ Kibana这三个组合进行监控。

Clipboard Image.png

这三个产品的大致工作流程是:logstash agent 监控日志——》 redis(队列) ——》logstash index——》全文搜索服务ElasticSearch.前端通过Kibana 来结合 自定义搜索进行页面展示

在安装这些的时候要准备好Ruby,JDK等环境,过程中一定要考虑Logstash+Elasticsearch+ Kibana这三个版本的兼容性,切莫追求最新最高大上的版本。

官网:
https://www.elastic.co/guide/en/logstash/current/getting-started-with-logstash.html
logstash支持的inputs、codecs、filters和outputs的参数配置:
https://www.elastic.co/guide/en/logstash/current/index.html
如果大家有兴趣,推荐中文学习资料:
http://udn.yyuap.com/doc/logstash-best-practice-cn/get_start/introduction.html

内部应用程序日志

应用程序内部产生的日志,码农专用。

应用程序的日志是在研发体系中一个非常重要的环节。一个产品上线后出现问题,例如需要排查程序过程中拼接产生的SQL,记录查询接口的请求参数和输出参数等,随着应用程序的访问量上升,存储量增大,存储的内容也非常复杂。团队在处理这类问题时,如果都是采用cat、tail、sed、awk、perl以及grep来处理,则非常耗时。

在这种情况下,我们非常需要一种既能灵活查询,又支持海量存储的程序日志架构。考虑到程序日志的特殊性,我们建议使用mongodb来负责程序日志的存储问题。Mongodb的好处不用多说。

网站用户点击行为日志

网站用户点击行为日志,是本次主要想给大家分享的。

用户和互联网公司之间主要有两个方面的接触:

1.       消费数据

这部分需要实时响应,用户提交一个表单,通过应用程序存放到关系型数据库(Oracle、Mysql、sqlserver)。

2.       点击数据

用户在网站、App上的所有操作,例如页面访问量、用户行为、搜索情况。这些数据是准实时性的消息流。公司可以根据这类消息做个性化推荐,运营监控,营销等一系列的应用。

第一点的数据及其重要,是创营收的程序,这是大部分码农必须要保障的根本性任务,要做好关系型数据库的维护工作,能抗每秒**订单的指标就行。

点击数据是企业做精细化过程中非常重要的一个宝库。它能做如下事情:

1.       分析流量的ROI,指导流量投放。

前端的点击做好渠道跟踪体系,根据用户的访问流量来统计付费渠道、免费渠道的效果。指导网站该在哪些渠道上做改进。每个互联网公司几乎都有竞价、应用市场等各个渠道的流量来源,而实时监控并统计效果,则能让流量投放更加有的放矢,把钱都花在刀刃上。

2.    建立浏览跟踪体系,优化产品页面设计

Web程序中首页、列表页、产品详情页、预订页都是可看做一个一个独立的产品。为每个类型的页面打上标记,并在用户浏览的时候记录下来。这样就可以根据用户的是否成单、停留时长、跳出率等指标来评定哪些页面是需要改进,并且也可以给出参考的数据指标。例如A页面需要改进,提升转化率到30%;B页面需要改进,提升支付率到60%等等。

3.       统计分析页面质量,分析漏斗转化率

根据流量漏斗,我们可以知晓页面的质量。运营此页面的人员可以跟进,迭代优化。

4.       优化用户访问路径

有了用户点击数据,我们就可以进行web路径分析,找出用户从首页到产品的最短路径。

5.       专题活动分析

专题活动页面的上线,一定要做好用户点击数据的收集工作。这些数据决定了你的专题活动的好坏。例如有些专题是专门上线拉流量的,那通过用户点击数据可知道是否达到了此目标;有些专题上线是为了促进转化,那用户点击专题后都做了什么,有没有成单,这些数据便可以考核这个专题的好坏。

6.       营销推送效果分析

短信、app推送等都是激活老会员,增加会员忠诚度的一种营销手段。如果每天发送几万或几十上百万的短信,就要根据用户点击短信中的url来分析效果。这些url中可根据url参数、点击时所在地、浏览时长、页面点击等数据来分析短信的效果。
App推送也是一样的效果。在app推送上一般都是h5页面,那就要考虑多少用户打开,能不能获取设备ID,用户在h5页面的点击行为,及后续的浏览行为。

7.       丰富会员浏览等偏好数据

用户在网站或app上的所有点击都透露了一些信息。
例如在哪个地方访问,如果这个地方出现次数最多,那是不是就可判断为用户常用地。

用户经常逛哪些产品,哪些资源,在点评信息的停留时间,浏览的深度等等这些数据。

当然用户经常不登录,但是如果在pc上有登录了,那就要想办法把历史数据和当前会员匹配上。

8.       监控转化率数据,指导运营

转化率等数据是运营的一些核心指标,用户点击行为数据是完全可以支持的。

9.       浏览的推荐行为,丰富用户接触点

当搜索无结果、当用户下完单了等场景中,我们是一定要根据用户访问的数据来为用户推荐一些结果。
网站页面本身就是一个广告位,要尽可能为用户呈现一些感兴趣的产品,增加产品的曝光度,也丰富了用户的接触点。

10.   数据分析和预测

每次的用户点击行为数据,都是可以积累下来作为数据分析和预测的依据之一。例如在当前的流量情况,预测下月的流量。考虑季节和节假日因素的话,还可以预测下一年的流量,为投放做好依据。
也可以根据现有某个产品的转化率进行分析,找出几个可能提升的点,配合业务部门一起提升。

用户行为日志技术架构

用户点击行为数据一般都是巨大的,场景方面有离线和准实时。

在这些情况下,各个企业一般都要贴合实际来出发。例如每天流量如果只有几万UV,那就没必要上大数据来处理;反之,流量增长到几百万UV以后,用关系型数据库来处理也不合适。

每天流量如果只有几万UV的情况下,则采用如下的技术架构:

Clipboard Image.png

Web程序:用户在浏览和点击时,触发js或app sdk事件,负责将数据以json等方式提交到接口程序。

接口程序:负责解析接收到的数据,并存储到数据库。在这个地方,最好考虑下做个负载均衡。

关系型数据库:数据库方面做个读写分离。相关的监控措施配套齐全即可。

后台统计:负责统计呈现用户行为数据

如果流量提升了,并需要准实时,一般是如下的技术架构:

Clipboard Image.png

我们会用到Flume,kafka,storm等,这些都是分布式的。

前端的Tengine主要是输出接口程序收到的json数据到文本中。

Flume:推荐使用Flume-NG.

Kafka:在分布式集群方面要考虑一个topic多个partition的配置,还需要考虑zookeeper集群。

Storm:如果条件允许,就升级集群配置的内存。

用户行为数据共有几个类别:

a)   需要实时查询。这些可存储到索引集群中,例如elasticSearch,solrcould等,方便业务通过字符串等快速检索数据。

b)   需要准实时。这些数据主要是用来计算用户的下一次访问、感兴趣的产品。可以用spark执行计算,并将结果输出到hbase。利用hbase集群来承担对外的应用查询。

c)   一般应用数据。这些主要是离线的统计分析。可以使用关系型数据库来存储,让用户能看到隔天的数据效果。

从以上内容可以看出,kafka集群是非常重要的一个环节。如果我们想做到数据驱动产品,那么用户点击就数据,这些数据通过中央存储队列kafka,被不同的应用程序消费,并计算反馈最优结果。这也是我一直期望去做的“实时消息驱动”,驱动的背后可以是营销,大盘监控,运营监控,也可以是推荐。

以上内容是我自身工作整理的一部分内容,接下来请牟兄分享下他在Hadoop的一些讲解。

天天向上

趁大家都在聊日志相关的内容,我们先开始第三个话题,后面再介绍hadoop的几个案例。

日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核、各种应用服务器,数据库服务器等等都有可能产生日志。
日志数据就像大数据宇宙的暗物质,在每一层,每一节点产生,然后在包括智能手机和互联网终端在内的分布式信息技术生态系统中生成。它们被收集,处理,分析和广泛使用,但大多时候,这些都发生在幕后。

日志数据对许多微型企业应用起到很基础的作用,如故障排除,调试,监控,安全,反欺诈,法规遵从和电子发现。然而,它也可以成为一个强大的工具,以用于分析点击流,地理空间,社交媒体,以及许多以客户为中心的使用情况等记录相关的行为数据。

日志文件的格式及其包含的信息
①2006-10-1700:00:00访问时间;

②202.200.44.43 用户IP地址;

③218.77.130.2480访问的URL,端口;

④GET请求方法(“GET”、“POST”等);

⑤/favicon.ico访问模式;

⑥Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+zh-CN;+rv:1.8.0.3)+Gecko/20060426+Firefox/1.5.0.3。agent,即用户使用的操作系统类型和浏览器软件。

一、日志的简单分析

1、注意那些被频繁访问的资源。

2、注意那些你网站上不存在资源的请求。常见的扫描式攻击还包括传递恶意参数等。

3、观察搜索引擎蜘蛛的来访情况。

4、观察访客行为。

应敌之策:

1、封杀某个IP。

2、封杀某个浏览器类型(Agent)。

3、封杀某个来源(Referer)。

4、防盗链。

5、文件重命名

作用:

1.对访问时间进行统计,可以得到服务器在某些时间段的访问情况(PV,UV)。

2.对IP进行统计,可以得到用户的分布情况。

3.对请求URL的统计,可以得到网站页面关注情况。

4.对错误请求的统计,可以更正有问题的页面。

5.对用户的来源进行分析,通过百度搜索?还是直接跳入?通过手机访问?还是PC浏览?通过微信的群聊?单聊?还是朋友圈转发。

二、网站挖掘

根据所挖掘的网站 数据的类型,可以将网站 数据挖掘分为以下三类:网站 内容挖掘(网站 ContentMining)、网站 结构挖掘(网站 Structure Mining)、网站 使用挖掘(网站 Usage Mining)(也称为网站日志挖掘)。

①网站内容挖掘。网站内容挖掘是指从文档的内容中提取知识。网站内容挖掘又分为文本挖掘和多媒体挖掘。目前多媒体数据的挖掘研究还处于探索阶段,网站文本挖掘已经有了比较实用的功能。

网站文本挖掘可以对网站上大量文档集合的内容进行总结、分类、聚类、关联分析,以及利用网站文档进行趋势预测等。网站文档中的标记,例如<Title>和<Heading>等蕴含了额外的信息,可以利用这些信息来加强网站文本挖掘的作用。

②网站结构挖掘。网站结构挖掘是从网站的组织结构和链接关系中推导知识。它不仅仅局限于文档之间的超链接结构,还包括文档内部的结构。文档中的URL目录路径的结构等。网站结构挖掘能够利用网页间的超链接信息对搜索引擎的检索结果进行相关度排序,寻找个人主页和相似网页,提高网站搜索蜘蛛在网上的爬行效率,沿着超链接优先爬行。网站结构挖掘还可以用于对网站页进行分类、预测用户的网站链接使用及网站链接属性的可视化。对各个商业搜索引擎索引用的页数量进行统计分析等。

③网站使用记录挖掘。网站使用记录挖掘是指从网站的使用记录中提取感兴趣的模式,目前网站使用记录挖掘方面的研究较多,WWW中的每个服务器都保留了访问日志,记录了关于用户访问和交互的信息,可以通过分析和研究网站日志记录中的规律,来识别网站的潜在用户;

可以用基于扩展有向树模型来识别用户浏览序列模式,从而进行网站日志挖掘;可以根据用户访问的网站记录挖掘用户的兴趣关联规则,存放在兴趣关联知识库中,作为对用户行为进行预测的依据,从而为用户预取一些网站页面,加快用户获取页面的速度,分析这些数据还可以帮助理解用户的行为,从而改进站点的结构,或为用户提供个性化的服务。

三、网站日志挖掘的方法

(一)首先,进行数据的预处理。

从学习者的访问日志中得到的原始日志记录并不适于挖掘,必须进行适当的处理才能进行挖掘。因此,需要通过日志清理,去除无用的记录;对于某些记录,我们还需要通过站点结构信息,把URL路径补充成完整的访问序列等等;然后划分学习者,并把学习者的会话划分成多个事务。

(二)其次,进行模式发现

一旦学习者会话和事务识别完成,就可以采用下面的技术进行模式发现。模式发现, 是对预处理后的数据用数据挖掘算法来分析数据。分有统计、分类、聚类、关等多种方法。

①路径分析。它可以被用于判定在一个站点中最频繁访问的路径,还有一些其它的有关路径的信息通过路径分析可以得出。路径分析可以用来确定网站上的频繁访问路径, 从而调整和优化网站结构, 使得用户访问所需网页更加简单快捷, 还可以根据用户典型的浏览模式用于智能推荐和有针对性的电子商务活动。

②关联规则。使用关联规则发现方法,可以从网站的访问事务中找到的相关性。

③序列模式。在时间戳有序的事务集中,序列模式的发现就是指那些如“一些项跟随另一个项”这样的内部事务模式。它能发现数据库中如“在某一段时间内,客户购买商品A,接着会购买商品B,尔后又购买商品C,即序列A[表情]B[表情]C出现的频率高”之类的信息。

④分类分析。发现分类规则可以给出识别一个特殊群体的公共属性的描述,这种描述可以用于分类学习者。分类包括的挖掘技术将找出定义了一个项或事件是否属于数据中某特定子集或类的规则。该类技术是最广泛应用于各类业务问题的一类挖掘技术。

⑤聚类分析。可以从网站访问信息数据中聚类出具有相似特性的学习者。在网站事务日志中,聚类学习者信息或数据项能够便于开发和设计未来的教学模式和学习群体。聚类是将数据集划分为多个类,使得在同一类中的数据之间有较高的相似度,而在不同类中的数据差别尽可能大。在聚类技术中,没有预先定义好的类别和训练样本存在,所有记录都根据彼此相似程度来加以归类。

⑥统计。统计方法是从网站站点中抽取知识的最常用方法, 它通过分析会话文件, 对浏览时间、浏览路径等进行频度、平均值等统计分析。虽然缺乏深度, 但仍可用于改进网站结构, 增强系统安全性, 提高网站访问的效率等。

⑦协同过滤。协同过滤技术采用最近邻技术,利用客户的历史、喜好信息计算用户之间的距离,目标客户对特点商品的喜好程度由最近邻居对商品的评价的加权平均值来计算。

(三)模式分析

最后,进行模式分析。基于以上的所有过程,对原始数据进行进一步分析,找出用户的浏览模式规律,即用户的兴趣爱好及习惯,并使其可视化,为网页的规划及网站建设的决策提供具体理论依据。其主要方法有:采用SQL查询语句进行分析;将数据导入多维数据立方体中,用OLAP工具进行分析并给出可视化的结果输出。(分类模式挖掘、聚类模式挖掘、时间序列模式挖掘、序列模式挖掘、关联规则等)
四、网站中网站日志挖掘内容

(1)网站的概要统计。网站的概要统计包括分析覆盖的时间、总的页面数、访问数、会话数、惟一访问者、以及平均访问、最高访问、上周访问、昨日访问等结果集。

(2)内容访问分析。内容访问分析包括最多及最少被访问的页面、最多访问路径、最多访问的新闻、最高访问的时间等。

(3)客户信息分析。客户信息分析包括访问者的来源省份统计、访问者使用的浏览器及操作系统分析、访问来自的页面或者网站、来自的IP地址以及访问者使用的搜索引擎。

(4)访问者活动周期行为分析。访问者活动周期行为分析包括一周7天的访问行为、一天24小时的访问行为、每周的最多的访问日、每天的最多访问时段等。

(5)主要访问错误分析。主要访问错误分析包括服务端错误、页面找不到错误等。

(6)网站栏目分析。网站栏目分析包括定制的频道和栏目设定,统计出各个栏目的访问情况,并进行分析。

(7)商务网站扩展分析。商务网站扩展分析是专门针对专题或多媒体文件或下载等内容的访问分析。

(8)行为分析。有4个方向可以选择:[表情]对用户点击行为的追踪,click stream研究;[表情]对网页之间的关联规则的研究;[表情]对网站中各个频道的浏览模式的研究;[表情]根据用户浏览行为,对用户进行聚类,细分研究;(如果你能够结合现有的互联网产品和应用提出一些自己的建议和意见,那就更有价值了。)

(9)发现用户访问模式。通过分析和探究网站日志记录中的规律,可以识别电子商务的潜在客户,提高对最终用户的服务质量,并改进网站服务器系统的性能。 

(10)反竞争情报活动。反竞争情报是企业竞争情报活动的重要组成部分。
五、日志分析的价值或应用

①在自己的网站上安装了网站统计的代码,如Google analytics、量子统计、百度统计、cnzz、51.la等,这些工具可以统计网站的流量,也就是网站上访客可看到的所有页面的访问量,但是这些统计工具都不能统计你主机上资源的原始访问信息,例如某个图片被谁下载了。

②如果你的网站遭到了攻击、非法盗链和不良请求等,通过分析原始访问日志能大概分析出端倪来,例如:往主机上传了一个mp3,不幸被百度mp3收录,引来大量的盗链,导致我的主机流量猛增!通过分析日志,可以找出问题根源,删除了那个mp3,主机流量也降下来了。

③分析访客来源(Referer)。这一段是告诉我们访客是从哪里来到这一个网页。有可能是网站其他页,有可能是来自搜索引擎的搜索页等。通过这条来源信息,你可以揪出盗链者的网页。

④网站日志分析软件都能提供关于服务器的浏览量、统计网站所有页面和相关文件被显示的次数、访问最多的网页、客户端访问最频繁的文件、访问者的IP分布、每日访问统计、每周每月等的统计结果。

访问者访问时段分析:

结合IP地址和时段之间的关系可以将来访者大致的身份作一个基本的判断。如按上班前、工作期间、下班后、节假日等,可以针对访客的初步性质安排合适的内容,如产品信息和广告;

访问者地区分布:

分析通过将访问者的IP地址转换为地理区间可以分析出来访者的大致地理分布范围。

⑤相关产品推荐。通过以上的关联分析,有了用户频繁访问路径和链接之间的兴趣度,可以构建个性化推荐系统模型。对于实证例子,我们可以在置信度高于最低置信度的相关链接之间,建立某种信息快速互联的桥梁,亦或是在网页规划中,充分考虑链接之间的关联关系,从而为更人性化、合理化的网页设计提供决策依据。

⑥个性挖掘:针对单个用户的使用记录对该用户进行建模,结合该用户基本信息分析他的使用习惯、个人喜好,目的是在电子商务环境下为该用户提供与众不同的个性化服务。

⑦系统改进:网站服务(数据库、网络等)的性能和其他服务质量是衡量用户满意度的关键指标,网站用法挖掘可以通过用户的拥塞记录发现站点的性能瓶颈,以提示站点管理者改进网站缓存策略、网络传输策略、流量负载平衡机制和数据的分布策略。此外,可以通过分析网络的非法入侵数据找到系统弱点,提高站点安全性,这在电子商务环境下尤为重要。

⑧站点修改:站点的结构和内容是吸引用户的关键。网站用法挖掘通过挖掘用户的行为记录和反馈情况为站点设计者提供改进的依,比如页面连接情况应如何组织、那些页面应能够直接访问等。

⑨智能商务:用户怎样使用网站站点的信息无疑是电子商务销售商关心的重点,用户一次访问的周期可分为被吸引、驻留、购买和离开四个步骤,网站用法挖掘可以通过分析用户点击流等网站日志信息挖掘用户行为的动机,以帮助销售商合理安排销售策略。

⑩网站特征描述:这类研究跟关注这样通过用户对站点的访问情况统计各个用户在页面上的交互情况,对用户访问情况进行特征描述。

六、 相关工具、软件及算法

(一) 相关工具、软件

a) hell/python/perl直接对日志文件进行解析

b) Excel 导入excel来统计PV,UV等

c) HIVE 直接使用hive的正则表达式

d) Flume+Kafka +Hadoop + Hive

利用flume来收集日志,Kafka做日志缓存,Hadoop做存储,Hive做分析

e) ELK(logstash+ elasticsearch + kibana)

Logstash负责日志收集,elasticsearch负责保存、索引,kibana负责报表展示。

f) Hadoop stream/stom/spark 实时流计算

(二) 算法

a) 各种排序算法
b) 分类算法:决策树等
c) 聚类算法:k-means, DBSCAN等
d) 关联规则分析:Apriori、FP-growth算法等
e) 推荐算法:协同过滤等等
f) PageRank算法和HITS算法利用网站页面间的超链接信息计算“权威型”(Authorities)网页和“目录型”(Hubs)网页的权值
g) 参考检索引擎的挖掘算法,比如Apache的lucene等,solr等
大数据落地:从日志分析开始的分享就先到这里,下面我分享几个Haoop的简单场景。

一个简单的日志分析系统:

Clipboard Image.png


1.不同网站应用通过埋点的方式来获取想要的数据,然后访问一个1*1的图片请求。

2.图片的请求记录都会存放在nginx日志里面。

3.定期备份access.log日志文件到hadoop的HDFS文件系统中。

4.通过Hive的正则表达式来解析access.log。

5.Sqoop和ketlle两种ETL工具来清洗、汇总数据到mysql中。

6.mysql默认存放的数据是1个月的数据,更多的数据存在hdfs中,通过hive的查询接口来返回更多的历史数据汇总。

7.用百度的echars+SpringMVC的方式自己开发报表展示。
再来分享一个安全审计系统

安全审计系统,主要作用是对用户的恶意应用访问起到过滤。

数据流程图:

Clipboard Image.png

架构图:
Clipboard Image.png

为什么是kafka

Apache Kafka是由Apache软件基金会开发的一个开源消息系统项目,由Scala写成。Kafka最初是由LinkedIn开发,并于2011年初开源。

Clipboard Image.png

解耦性      

在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。

冗余性       

有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的"插入-获取-删除"范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。

扩展性      

因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。

灵活性 & 峰值处理能力      

在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。

可恢复性          

系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。

顺序保证        

在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka保证一个Partition内的消息的有序性。

缓冲           

在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行———写入队列的处理会尽可能的快速。该缓冲有助于控制和优化数据流经过系统的速度。

异步通信         

很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。
为什么要使用Spark

Spark是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用并行框架。

Clipboard Image.png

1. 轻量级快速处理。着眼大数据处理,速度往往被置于第一位,我们经常寻找能尽快处理我们数据的工具。Spark允许Hadoop集群中的应用程序在内存中以100倍的速度运行,即使在磁盘上运行也能快10倍。Spark通过减少磁盘IO来达到性能提升,它们将中间处理数据全部放到了内存中。

2. 易于使用,Spark支持多语言。Spark允许Java、Scala及Python,这允许开发者在自己熟悉的语言环境下进行工作。它自带了80多个高等级操作符,允许在shell中进行交互式查询。

3. 支持复杂查询。在简单的“map”及“reduce”操作之外,Spark还支持SQL查询、流式查询及复杂查询,比如开箱即用的机器学习机图算法。同时,用户可以在同一个工作流中无缝的搭配这些能力。

4. 实时的流处理。对比MapReduce只能处理离线数据,Spark支持实时的流计算。Spark依赖Spark Streaming对数据进行实时的处理,当然在YARN之后Hadoop也可以借助其他的工具进行流式计算。

5. 可以与Hadoop和已存Hadoop数据整合。Spark可以独立的运行,除了可以运行在当下的YARN集群管理之外,它还可以读取已有的任何Hadoop数据。这是个非常大的优势,它可以运行在任何Hadoop数据源上,比如HBase、HDFS等。这个特性让用户可以轻易迁移已有Hadoop应用

6. 活跃和无限壮大的社区。Spark起源于2009年,当下已有超过50个机构250个工程师贡献过代码,和去年六月相比,代码行数几乎扩大三倍,这是个令人艳羡的增长。

好的,我的分享就到这里。多说一句,大数据涉及的内容非常多,欢迎大家一起交流。

推荐 2
本文由 天善智能 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册