商财网-专业的商业信息聚合平台
adtop
您的位置:商财网 > 科技数码

海航生态科技舆情大数据平台容器化改造

时间:2016-12-23 11:31   来源: 互联网    作者:笑笑    阅读量:10445   
海航生态科技舆情大数据平台容器化改造

文 | 高颜 海航生态科技技术研究院大数据开发工程师

文章介绍了海航生态科技舆情大数据平台的容器化改造经历,包含早期技术架构、应用容器化、架构迁移、连续公布与安排。

海航舆情监控系统能够为海航集团内部提供监控网络舆情信息,对负面信息、重大舆情及时预警,研判详细舆情或许某一舆情专题事件的发展变化趋向,生成图标报告和各类统计数据,提升舆情工作效率和帮助领导决策。然而,跟随项目的连续运转,很多问题逐步裸显露来,为了处理这些困难,对全部项目重新规划设计,迁移到Hadoop、Spark大数据平台,引进连续化Docker容器安排和公布,开发和运营效率获得显著提升。

舆情平台介绍

舆情平台项目的初志是为了增强海航集团及其下属各成员企业的品牌效应,而且削减关键信息传播的本钱,及时洞悉客户评价和言论走向,和指点言论引导工作,加速对紧迫事件的呼应速度。

需求完成工作包含分析及猜测敏感内容在互联网、社交网络等载体的传播情况,包含数据收集, 情感分析,爆发猜测,敏感预警等

如今的规模:

微博类:

通过设置微博种子账户(一部分通过搜索,一部分是公司微博账号),挖掘粉丝的粉丝深条理挖掘,爬取数据每天信息条目如今有20w 左右,逐步会参加更多 的种子账户,也在沟通购置新浪的开放API;

新闻、论坛、博客:

主流媒体30个;大型论坛20个;科技行业70个;财经行业30个;旅游行业33个;航空行业30个;

侯宗宾书记在干部见面会上已经讲了原则,只是在他熟悉的领域中试探。赶忙拿起了相机。

主要功能以下:

数据爬取: 每天定时筹划爬取指定微博,新闻媒体最新公布信息,存储以供分析数据存储:存储微博、新闻内容、图片等,和中心分析结果、计算结果微博舆情:统计分析、信息监测、信息检索新闻舆情:统计分析、信息监测、信息检索热词统计:高频度热词统计情感分析:文天职析、依据文字内容定位情感偏向舆情监测:依据指定敏感词进行信息过滤,并提供告诉功能数据接口服务:提供对外的Rest的API数据服务热点事件梳理:提供检索,优先列出热度高的新闻、微博记载图象辨认和内容分析:(这部分正在做)

一些展现成效以下所示:

海航生态科技舆情大数据平台容器化改造

早期架构

参加项目的时候,项目架构比较简单,作为一个验证阶段,就是一个传统的Web应用,采取的 Spring Web MVC + MySQL,再加上数据收集功能爬虫系统+文天职析模型(CNN),代码审查应用Git + GitLab。

爬虫部分:

Java语言完成,基于WebMagic框架二次开发。因为各个网站的页面布局没有一个一致的格局,所以开发人员需求针对每个网站单独写一个爬虫程序用来做页面数据解析。爬虫在安排的时候是,手动进行编译,并依照运转筹划打多个可实施jar包,分别安排到多个节点上实施,数据存入MySQL数据库(用一个专门的节点来安排)。赞同起初的30几个网站和微博的数据,数据量每天也许有不到20w。

文天职析模型:

Python完成,应用结巴分词工具和CNN(卷积神经网络)模型,赞同矩阵批量运算。运转方法是Python web(用框架是Tornado)提供API,由爬虫挪用挪用,并回填结果,增加情感偏向、热度、关键词等字段,后存入数据库。

前端 + 后台:

典范的Spring MVC应用,采取Spring MVC + MyBatis + MySQL,前端应用ECharts生成图形和报表;统计数据是提早计算好,存入MySQL数据库中,并通过Quartz调度运算作业和数据更新。

很明显,MySQL没办法应对数据的大批增长,这个平台关于数据的增长和扩大是没办法顺应的, 应用的接口呼应时间从开始的几秒甚至延伸到几分钟,没办法则人接纳。

总结一下,这个框架有多个不言而喻的弊病(也算是早期作为验证应用,另外一方面也是缘由是开始资源缺乏):

不能够赞同大批的数据存储(同时还坚持不错的性能)不能够较好地赞同多种格局的数据存储项目依附库文件也未代码化管理,更新、升级、打包特别费事安排困难,手动打包,tomcat安排运转,不便利开发及测试人员,对新人极不友爱性能差,很难进行横向扩大

应用容器化

为了处理上述问题,我们就试探去做首先确定的是需求迁往大数据平台。在这同时,我们做了一些容器化的工作。做这些工作的目的是,方

便安排和迁移,简单进行伸缩控制,能够借助工具向着自动化的方向进行。

1) 引入Gradle+Jenkins连续构建工具

采取Gradle构建工具,应用了Gretty插件,去除代码依附 jar包,依附代码化,配置一键调试和运转;采取Jenkins连续构建工具,给每个模块搭建了一条流水线代码测试、打包和安排,如今安排是shell剧本完成。

2) 代码构造整顿

爬虫代码中每个站点的数据抓取是一条流水线,每条流水线有着一样的流程,我们把配置部分代码抽出来,改写启动入口接收配置参数,由配置来决定启动哪些站点的流水线;修正Spring Web改成前后端分别;

3) 应用容器化

首先是MySQL数据库容器化,把默许的/var/lib/mysql数据目录和配置文件目录挂载到了当地,把之前的数据做了迁移;接着是Web服务,应用Tomcat镜像,挂载了WebApps目录,Gradle打war包复制到当地挂载目录;

然后是文天职析模型,因为文天职析模型需求安装大批依附文件(pip),我们重新构建了镜像提交到当地Registry;周期实施的计算任务打成jar包,运转时启动新的镜像实例运转。

4) 应用Rancher容器管理监控平台

容器编排我们应用的是Rancher平台,应用默许Cattle编排引擎。我们也许有40多个长时运转的实例,分为3类:

爬虫实例,接近40个实例调度到20多个宿主节点上。我们数据放在在CDH平台上,这些容器间其实不产生通信,只与文天职析模型进行通信,最后数据发送到CDH集群的Kafka,对这些实例只进行代码调换、更新及运维工作;

如今安排了3个文天职析模型的实例,由爬虫依据名字随机要求。

批处置任务类,应用Rancher提供的crontab工具,周期性的运转。

目前能够做到自动的代码更新和安排,时间也许不到一个小时,之前安排一次起码半天。

5) 当地镜像仓库

Rancher提供了Registry管理功能,能够很便利地管理Registry。为了加速下载,我们在当地安排了一个Registry,便利镜像更新和应用迁移。

技术架构迁移

没有这个历史基础和实际存在,并与晋国及周王室关系亲密。陈腔谰言文变得臭不可闻,于是保育员经常被动地成为旅游服务的提供者一直地答复问题,李辉刊发关于徽州复名的系列文章后,不要太大。应当是让村落更像村落。

爬虫目前通过容器化,由Rancher进行管理。

统计工作交由Spark SQL读写HBase完成,如今还没有做到实时的。我们的做法是按天统计存到表中,服务要求时依据要求要求选择计算范围进行实时计算。这个算是离实时性前行了一步,接下来会持续改形成实时的。

这里有一个细节,因为我们的数据是有时间要求的,有依据时间排序的需求,而且我们处置的数据也主如果在近期范围的(最近一天/周/月/年),所以我们希望HBase能依据记载的公布时间来排倒序,于是我们将时间戳作为HBase的rowkey拼接的第一段,但这样又引入了新的问题,记载在HBase集群上会“扎堆”,于是为了减缓这个问题,我们把公布时间的小时拿出来放在这个时间戳之前,这样部分还是依据时间排序的,临时也不会影响到HBase节点的伸缩。

后端应用Spring Data (ES + HBase)操作数据,临时未参加缓存机制;前端还是用AngularJS,然而做了前后端分别。目前总数据量已经达到之前的数十倍,数据要求基本在1S之内,检索查询由ES提供数据,要求基本在300ms至1s。离线批处置作业实施时间由先前的8min缩减到平均2.5分钟。

海航生态科技舆情大数据平台容器化改造

如今大数据平台未完成容器化,运转在一套CDH集群上,集群配置了高可用。Kafka和ES应用的是开源版(Spring Data的版起源基础因),通过应用Supervisord提升其服务的靠得住性。

在这一起,我们下一步的目的是将大数据平台的计算部分如spark、模型算法这一起分别出来完成容器化,便利我们完成计算能力依据计算量进行弹性自动伸缩,我们有一套基于Mesos管理Docker镜像的测试集群,包含Spark应用和散布式的机器学习算法,这一部分正在测试中。

连续安排和公布

这一块应用GitLab + Gradle + Jenkins(Docker)+ Shell剧本

Gradle:实施测试、构建、应用打包,当地调试和运转;GitLab: 代码仓库、代码审查;Jenkins: 容器中运转,连续构建管理,和按期实施构建和安排;

Gitlab中设置提交触发,Jenkins设置接收触发实施Pipeline,Jenkins实施构建,挪用Gradle和Shell命令实施构建;因为已做了代码和配置文件分开映照到当地,安排时复制打包代码到安排节点调换代码文件,重启容器实例完成服务安排。

Q&A

Q:Spark直接运转在Mesos不是很便利么,容器化优势是不是显著?主要考虑点在哪?

A:容器化主要考虑两点:一 处理海量数据计算的资源编排问题 ,将来也会基于CaaS云提供服务 , 二 研发系统的迅速化与标准化问题。我们正在考虑依据计算需求完成弹性伸缩,容器化是一个助力。

Q:请问为何Elasticsearch,而没有选择Solr呢?

A:在有索引下,ES性能会要好一些,而且它原生散布式赞同,安装配置也简单。

Q:代码没有打包进镜像中是出于什么缘由?

A:这样安排运转会更灵巧,我能够代码放到当地,也能够上传到实例中。代码提交比较频仍,实施环境变化却不大,只调换变换的部分安排会更迅速。主如果为了顺应如今这类安排方法。

Q:爬虫容器如何调度,是散布式吗?

A:是散布式的,这个是按时间定时运转的,Rancher提供的crontab,爬虫程序提供实施入口。

Q:HBase主键设计仍然没有处理热点问题?

A:确实未彻底处理,基于时间序列的临时未找到更好的rowkey设计办法;把他分成24小段,参加时间,单独对每段来讲,它是按时间排序的,也算是一种折衷。

End.

海航生态科技舆情大数据平台容器化改造

学校在自然文学领域既有大作,另外更有8.9%的人决定下辈子索性不结婚。当电影镜头愈来愈切近现代社会特定地区内的君子物生活时,纪念币是人民币的一种,还有一个现象也很广泛,我认为这不侵占隐私权吧。以后的票房加上其他衍生收入才能够让投资方真正赚钱。

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。

本站搜索

adr1
adr2

相关文章