云+社区联合快手 深度解读五大热门大数据技术

原创
云计算 大数据
8月24日,由云+社区(腾讯云官方开发者社区)联合快手举办的《大数据技术实践与应用》沙龙活动成功举行,沙龙聚焦于大数据的技术实践与应用,为到场的用户奉上了一场大数据技术盛宴。来自腾讯云的专家和快手的工程师重点介绍了Spark、ElasticSearch,yarn、MapReduce、Flink等大数据技术的发展历程、架构优化以及实践应用。

【51CTO.com原创稿件】数据已经成为企业宝贵的资产,如何利用数据的分析挖掘,从而辅助企业进行商业决策,成为企业所关注的。

8月24日,由云+社区(腾讯云官方开发者社区)联合快手举办的《大数据技术实践与应用》沙龙活动成功举行,沙龙聚焦于大数据的技术实践与应用,为到场的用户奉上了一场大数据技术盛宴。来自腾讯云的专家和快手的工程师重点介绍了Spark、ElasticSearch,yarn、MapReduce、Flink等大数据技术的发展历程、架构优化以及实践应用。

[[275422]]

基于Spark构建PB级别云数据仓库

首位分享的嘉宾是来自腾讯专家工程师丁晓坤,他从AI与大数据的关系,大数据技术的发展趋势,以及基于Spark计算引擎构建云数仓的技术实践三个方面展开进行分享。

2006年,Apache社区的Hadoop项目正式成立,作为三驾马车的开源实践,开启了大数据时代;之后的2009年,AWS推出了EMR( Elastic MapReduce)弹性计算云平台,开启大数据的云计算时代;2012年随着Yarn的孵化,2013年Spark项目正式成立,大数据进入加速发展阶段;随着2016年AlphaGo战胜李世石,2018年Hadoop3.0的到来,AI和大数据关系越来越紧密,大数据也向云化和容器化方向加速进化。

那么AI和大数据具体是什么关系呢?丁晓坤解释道,一、AI离不开数据,人工智能的计算特别是深度模型,与数据的相关性非常高,数据越好模型也会越准确。二、在标准的推荐场景中,有环形迭代的计算过程,从数据的抽取、准备,到模型训练、数据模型发布,再到进一步抽取数据,在迭代过程中进行优化模型。

而基于以上这两大关系,对AI和大数据两大技术的融合提出新的需求。首先,数据在数据处理和AI训练框架之间的交互效率要求越来越高,就会产生tf.data、tf.transform等数据结构,而腾讯推出的Angel和Intel推出的BigDL这些计算框架可以快速地将Spark计算框架与机器模型训练框架结合的更好,TensorFlowOnSpark也可以快速提高环形迭代效率。其次,随着AI的快速发展,大家对GPU的要求越来越高,通过优化GPU与CPU之间任务队列的调度从而提高效率,而GPU的调度则可以通过K8s和Hadoop3.0的发展也越来越高效。

大数据的发展离不开数据仓库体系。数据仓库从1989年提出后经过了三个发展阶段,第一个阶段是数仓一体机时代,通过数据仓库一体机企业可以进行报表分析、财务分析。随后由于一体机在数据处理和性能上无法满足企业需求,于是出现了分布式MPP数据库,企业可以进行简单的模型推测和预测计算。之后,企业更加关注IT成本,因此更多企业开始选择云原生数据仓库。



SPARKLING 架构图

最后,丁晓坤分享了基于Spark计算引擎构建云数仓的技术实践。为何腾讯云会选择Spark来作为核心计算的支撑呢?丁晓坤归纳为四大原因,Spark生态丰富,支持场景比较全面,也是大数据领域比较热门的开源项目;第二,Spark支持Python,SQL,R,Scala, Java 等语言提交计算任务,比较容易上手;第三,依托开源社区,尽可能使用开源项目,用户可以熟知技术细节;第四,由于Spark拥有DAG模型、RDD内存计算和更细粒度的调度、钨丝计划等,使得性能更加优越。

在腾讯云构建数据仓库时,也表现出一定的云特性。在弹性伸缩方面,可以支持三种类型的节点:主节点,核心计算节点和弹性计算节点,并且支持核心计算节点的横向扩容,支持弹性计算节点的横向扩缩容,这样通过临时的弹性计算节点达到存算的分离,弹性节点可以随时扩缩容,快速回收计算资源从而降低成本。此外,通过平滑摘除机制,在所有的容器都执行完毕,或执行超时后移除,保证任务平滑稳定的运行。第二个云特性就是虚拟环境优化,增加NO Group层,读取策略采用 node > node group > rack > off-rack的方式,通过跨Rack的机制,满足云上虚拟环境的需求。第三是性能方面,可以通过Parquet将Bloom过滤器数据存储到列元数据,执行选择性查询时启用行组过滤。

对于Spark来说,应用场景中更多的问题就是Shuffle的问题,Shuffle的效率会影响到数据计算性能的延迟和效率,随着Spark的发展,通过性能优越的内存存储技术,提升Shuffle效率,从而提升Spark的效率。

未来,腾讯云构建的基于Spark的数据仓库还会支持Update和delete机制,以及增加对Serverless -K8S的支持,ACID的支持。

腾讯云ElasticSearch产品架构与实践

ElasticSearch在2010年左右出现,是目前搜索领域知名度较高的产品。腾讯云大数据技术总监邹建平分享了腾讯云ElasticSearch产品在云原生架构设计、高可用、自动化运维等方面的思考,以及如何利用ElasticSearch来实现企业智能化转型。

首先,邹建平介绍了ElasticSearch存储分析的平台的特点,支持全文检索的搜索引擎,同时ElasticSearch也是NoSQL数据库,支持数据做保存和读取,支持OLAP数据分析。此外,ElasticSearch是基于Java开发的,可以基于Lucene搜索库通过倒排索引来直接通过关键字命中文档,快速实现用户检索的请求。此外,通过在ElasticSearch外层开发RESTful接口,方便用户平台进行集群管理。而ElasticSearch产品成功的关键在于ELK Stack,拥有统一的生态,目前开发者超过10万人。

在进入到移动互联网时代,APP爆炸式增长,但APP中的数据并不能像网页一样很容易被爬虫到,这对ElasticSearch搜索引擎框架来说,带来了新的发展机遇。ElasticSearch数据都存在存储引擎中,用户对这些数据进行新的价值挖掘时,对ElasticSearch提出了新的要求,这也是ElasticSearch从搜索逐渐向分析演进的原因。

从搜索到分析的演进过程中,共经历了五次变化。2010年,ElasticSearch刚推出时,主要支持搜索场景,使用倒排索引,在ElasticSearch中加入FieldData,将term到docid的映射逆转,变成docid到term。但是在检索构建过程中,对于数据量较大的检索是非常灾难性的,加载速度较慢。因此到了2012年提出了DocValus,是通过Docld到Value的列式存储。FieldData是在检索时实时构建,而DocValues是在索引时构建的,因此更容易压缩,此外,DocValues是写在磁盘中而不是内存,因此可以利用文件系统缓存来加速访问。对比FieldData,DocValues的加速速度快2个数量级,并且检索速度性能保持一致,缓存亲和度更好。2014年以后,分析的复杂度越来越多,因此ElasticSearch做了去除框架的改进,后来提出的Aggregation可以支持嵌套聚合,Pipeline Aggregation能够对聚合后的结果集再进行加工计算,例如求最大值、排序等等操作。2016年ElasticSearch算法进行优化,其中涉及全局序数、DocValues、BKD tree等。2018年提出的Rollup,可以提升查询的效率,降低存储指标。此外,ElasticSearch也支持SQL,支持多种访问方式,例如CLI、Restful、Kibana Canvas、JDBC、ODBC等。

ElasticSearch增强了分析能力以外,还能做什么呢?首先是商业智能分析,通过各种手段对数据进行整合、统计和结果输出。第二是日志、指标和APM这也是ElasticSearch主推的功能之一,在业务日志、指标都保存在存储平台后,将业务逻辑进行串联实现APM,这样就可以打通前端到后端的所有数据,当应用出现问题后,可以快速的分析出问题所在。第三是基于机器学习的安全分析,能对日志、指标进行异常检测。

从2010年到如今,ElasticSearch从最初只用在搜索领域,到如今已经是分析领域的热门技术,ElasticSearch发展的过程可以总结为“高”、“精”、“尖”。“高”指的是ElasticSearch在分布式计算方面有很多的设计,例如alias、index、shard、segment。“精”指的是ElasticSearch拥有多种高效的索引,包括倒排表、Docvalues、BKD tree、Global Ordinals等等。“尖”指的是LSM存储结构,数据不可变,对缓存更有亲和度。

第二大部分邹建平重点介绍了腾讯云ElasticSearch架构的优化。



腾讯云ElasticSearch产品架构图

用户使用腾讯云ElasticSearch产品时,经常会有些担心,数据是安全,可用性是否高,没有专门的人员出了问题怎么办。在数据安全方面,腾讯云ElasticSearch支持高级商业特性( X-Pack插件)数据权限管理,支持角色管理,集群、索引、文档、字段各个级别的权限控制,外网HTTPS、黑白名单,客户端、集群内节点SSL传输加密;在CAM方面,设置了腾讯云账号权限管理;在Audit方面,加入了集群操作审计日志和XPACK安全审计日志。在数据可靠性方面,在VPC中可以做到完全逻辑隔离,多维度网络安全管控;在Backup方面,支持数据定时备份和COS低成本备份;在Recycle-Bin,设置垃圾回收站,避免数据因人为原因丢失。在高可用方面,腾讯云进行了三方面的设置,实现跨可用区容灾。基于ElasticSearch数据分布感知框架实现,主从副本放置到不同机房;三个专用主节点分布在三个可用区,避免无法选主;必选专用主节点,避免脑裂。此外,通过调整分配算法,使得在不同节点之间打散,避免热点不均的情况发生,从而达到分片均衡优化。在高可运维方面,腾讯云也做了很多工作,通过自动监控告警系统来支撑ElasticSearch日常运维。

最后,分享了腾讯云ES产品未来发展的三个方向,第一,在水平方面,是更好的将上下游产品联动起来,例如如何做好各种数据导入,和hadoop产品、对象存储产品的数据联动做得更加易用;第二,在垂直方面,加强将ES里的解决方案例如APM、安全分析、垂直搜索等功能更好落地到云;第三,在矩阵方面,我们会将腾讯的一些能力融入到ES产品中,例如如何将微信通知、或者我们的一些NLP插件,和ES结合起来。



Elasticsearch近期新功能

yarn在快手应用实践与技术演进之路

来自快手数据架构工程师房孝敬,介绍yarn系统在快手的应用实践,遇到的问题以及相应的技术演进过程。

Hadoop俨然已是业界认可、成熟的数据存储、处理框架。目前,Hadoop的发展已经从1.0走到了2.0版本。在Hadoop v2.0的版本中引入Yarn,主要是解决了Hadoop v1.0中的扩展性问题。yarn主要分成三个模块,一个是管理集群资源的RM,一个是管理机器资源情况的NM,还有管理APP资源和内部逻辑的AM。

RM模块内部架构分为两部分,一个是管理集群中节点和APP的状态,分别有ResourceTrackerService和ApplicationMasterService进行管理。服务和RM通信后将消息送到RM内部,生成相应的事件,通过事件处理机制驱动APP和节点状态机的更新,最后达成期望的状态。yarn另一个主要功能是调度,早期yarn在NM心跳处理逻辑中触发调度,因为调度比较耗时,会与其他事件处理过程竞争资源,导致双方互相影响,之后社区进行优化,将调度逻辑拆离到单独的线程,但还是存在很大问题,后面会介绍具体的优化。

快手在yarn方面的技术实践主要分成四个方面:1、集群稳定性方面的改动。2、对yarn的抢占机制做了优化。3、yarn的调度性能做提升。4、计算集群小IO优化。

集群规模变大后,节点变多,APP数量增多,导致事件处理压力变大,调度压力增大,机器故障变多。快手从RM优化、避免单点问题两方面进行稳定性改进。

在RM优化方面,快手曾经升级集群导致RM挂掉,通过对冗余事件进行优化,并且开发NM慢启动策略,最终降低RM事件处理压力,升级对RM的影响也就降低了。HDFS是yarn底层的设施,HDFS的卡顿会导致RM事件处理逻辑卡住,通过优化事件处理逻辑中HDFS、DNS等IO操作,提升事件处理逻辑的稳定性。优化完后,发现事件处理占用的CPU较多,为了避免事件处理逻辑成为集群性能瓶颈,把NM事件处理从主事件处理流程中剥离到单独的线程,提升了整个事件处理的速度。

在特定场景下,会出现奇怪的磁盘问题,比如磁盘是好的但是某个目录是坏的,这种问题在现有机制下很难发现,导致特定作业失败。快手采用NM磁盘黑名单,通过task失败信息进行规则匹配,发现磁盘问题,将有问题的磁盘放在黑名单中,不再向这个磁盘调度作业。yarn的一大问题是,一台机器有问题调度失败,会造成雪崩效应,造成作业大量失败,快手通过集群层面黑名单机制解决这个问题。磁盘满、fd泄露,线程泄露也是会造成故障的,快手通过对CPU,mem,磁盘文件大小,fd数目,线程数目的控制,增强底层隔离,避免相互影响。集群中的问题机器较多,在集群规模变大后,如何发现问题机器是个难题,快手通过Container失败率高机器check、物理指标异常topN check和Job失败信息汇总三个方法来快速发现问题机器。

yarn一个主要的功能就是调度整个集群的资源。yarn的调度模型是比较复杂的,为了保证调度公平性,需要对队列和app进行排序。快手的初始思路是减少排序时间,缩小排序规模,优化排序算法。通过优化后,能够支撑5000台机器的规模。

但是优化后还是存在问题,扩展性不足,只能利用一个CPU;缺少全局节点信息,调度策略难以全局决策。最终,快手重构了调度架构和逻辑,开发了Kwai scheduler,建立资源分配的上帝视角,预先给队列分配资源,并发批量调度。先选APP再选节点,调度策略方便扩充,最终线上的调度速度可以达到每秒钟4万多。

未来,快手将在三个方面进行建设,资源分级保障建设、多集群建设和超配在离线混合部署。目前,快手yarn集群规模较大,使用资源非常多,通过作业画像和分级保障体系把资源倾斜给更重要的作业。此外,单集群容量有限,快手还会考虑多集群建设。第三,快手的yarn主要托管是离线计算的资源,公司很多非YARN管理的空闲资源没有使用,将合适的任务调度到空闲的机器上,也是快手未来探索的方向。

云端大数据产品架构及实践

弹性MapReduce是腾讯云构架于云端海量存储、计算基础设施之上的云端Hadoop 框架,用户可在十分钟获得一个安全、低成本、高可靠、高弹性扩展、架构可持续演进的专属大数据集群。腾讯云高级工程师乔超分享了腾讯云大数据EMR产品及其价值,同时根据实际经验介绍了大数据平台实践。



如今,各大企业都意识到数据的重要性,如何挖掘数据价值,为企业做出决策,变得尤为重要。然而,在企业级大数据架构中,主要在三大领域存在挑战,企业级数仓与数据集市构建、流式数据分析和海量数据检索与分析,而各大社区也都通过开源组件形成了不同的解决方案。但是构建大数据平台的技术复杂性高,构建周期长,运维基础设施匮乏,技术抗风险能力弱,因此,大数据开源技术能一定程度满足研发工程师的显性技术需求,但无法满足企业潜在的深层次隐形需求。

为了帮助企业解决以上挑战问题,腾讯云从技术组件到产品服务,通过完善大数据基础设施帮助企业客户高效应对从初创发展到成熟过程中的大数据技术性挑战。腾讯云将企业划分为初创型和成熟型,对于初创型企业,腾讯云提供封装好的开箱即用的产品,包括计算服务、BI分析组件,云数仓、云搜等能力。而对于成熟型企业,腾讯云帮助其解决偏运维层面的问题,结合用户自己的特色,更加贴近用户的业务应用场景,帮助用户建立自己的大数据解决方案,腾讯云在此方面则提供弹性MapReduce和ES。

乔超介绍了腾讯云云端大数据基础设施的优势:1、海量计算资源的优势,腾讯云拥有全球25个地理区域、全球51个可用区、分钟级计算存储资源实时调度,解决用户就近计算的场景。2、开放性和连续。通过与开源基金及公司协作,开源协同的持续性研发资源投入。3、大数据业务场景化。腾讯云提供腾讯系金融、社交网站、游戏、视频、新闻资讯、电商等领域大数据场景应用,同时也包括用户画像、精准推荐、用户行为分析、金融风控等场景应用。4、持续性服务。腾讯云提供线上技术交流、培训,线下技术沙龙交流平台以及持续性产品/服务支撑。

弹性MapReduce是腾讯云构架于云端海量存储、计算基础设施之上的云端Hadoop 框架,用户可在十分钟获得一个安全、低成本、高可靠、高弹性扩展、架构可持续演进的专属大数据集群。该产品帮助企业在提升研发效率、运维效率、降低硬件成本的同时,轻松应对TB、PB级的海量数据的价值挖掘挑战。



弹性MapReduce可以灵活应对多业务场景,包括在线业务、数据仓库、实时流式计算,机器学习,有效支持企业大数据架构可持续演进。基于云端的Hadoop框架产品将有效提升企业对大数据基础设施的快速构建、高效运维及应用的综合性大数据能力。腾讯云弹性MapReduce产品包括四大优势:10分钟构建上百节点大数据集群,支持控制台/程序API灵活构建;十分钟节点级横向扩展(数节点扩展至数百节点),十分钟集群级横向扩展(单一集群扩展至数个异构集群);百余监控指标覆盖(服务器级、服务级),异常事件秒级触达,Ddos/VPC安全加固、 Kerberos节点级服务信任;云端多源数据支持(云数据库、ES、Ckafka、流计算、Snova云数仓),云端可视化BI工具无缝对接。

在沙龙现场,乔超现场演示了通过腾讯云快速构建云端大数据分析平台,只需要四步,首先勾选EMR组件,然后配置集群规格,创建集群,最后快速扩缩容。

最后,乔超介绍了腾讯云弹性MapReduce运营实践全方位规划,包括初期规划、集群构建、参数优化、线上运营四个阶段。在初期规划方面,企业需要进行资源预估,同时腾讯云也会提供建议,然后企业进行机型配置核定,包括机型、核数、内存、磁盘等方面。在集群构建阶段,通过大数据技术栈,提供从底层基础架构到上层应用全方位的技术能力。而集群部署模式分为混合部署和独立部署两种,初期阶段可以混合部署,随着业务规模及企业发展,逐步走向独立部署模式。经过EMR团队多年的经验积累,在参数优化这块他们也给出了一些建议,包括通过心跳设置和元数据管理对HDFS进行优化,通过ResourceManager堆大小、TimeLineServer和AMShare三个方面对yarn进行优化,通过FetchTask和计算引擎对Hive进行优化等。

腾讯基于Flink构建实时流计算平台的技术实践

Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。而Flink也是大数据处理领域最近冉冉升起的一颗新星。腾讯高级工程师杨华介绍了腾讯实时流计算技术的演进过程以及对Apache Flink所进行的优化与扩展。

Flink在腾讯的发展要追溯到2017年。2017年上半年,腾讯对Flink框架进行调研,包括性能对比测试,评估关键可用性等现网关键指标。到了2017年下半年,腾讯内部进行特性的定制开发与性能优化,相关业务的灰度测试、上线。2018年上半年,腾讯打造Oceanus实时流计算平台,覆盖公用云、专有云场景,内部业务迁移与试运行。2018年下半年,Oceanus公有云流计算产品正式上线公测,腾讯其他BG流计算业务与大数据套件整合。到了今年上半年,腾讯上线在线机器学习业务、秒级监控等服务,打造场景化的业务支撑能力,支持广告、推荐业务。虽然腾讯研发Flink只有2年半的时间,但是目前腾讯的Flink支持集群总核数达到34万,峰值算力达到每秒2.1亿,日均处理消息量20万亿,日均消息规模是PB级别。

腾讯对Flink进行了四方面的优化。由于Flink的Web UI不利于定位新网的问题,因此在Flink1.6版本时,腾讯对web UI进行重构。第二,腾讯对JobManager Failover进行优化。通过Standalone模式和宿主模式,腾讯云对Queryable state进行了优化。最后,腾讯对Increment Window进行改进,对Flink原生窗口进行增强。

Apache Hudi是今年上半年刚刚加入Apache孵化器进行孵化的项目,是Uber于2016年在内部环境中使用的框架,用于大规模数据集。通过Upsert和Incremental pull两种方式,Hudi可以在Hadoop重新分布式文件系统数据集上进行集中。 Hudi可以在延迟和成本的维度上,在单个的物理数据集上提供三个不同的逻辑视图:一是读优化视图,能够指向常规的Hive表进行查询;二是增量视图,能够捕获数据集的变更流供给下游的Job/ETL,允许增量拉取;三是准实时视图,在准实时数据上进行查询,同时联合Apache Parquet(列) & Avro(行)的数据。而Flink和Hudi进行整合,可以提升分析过程的效率。

腾讯实时计算团队对社区版的Flink进行了深度的优化,并在此之上构建了一个集开发、测试、部署和运维于一体的一站式可视化实时计算平台——Oceanus。腾讯云流计算Oceanus是位于云端的流式数据汇聚和计算服务,用户只需几分钟就可轻松构建流计算应用,而无须关注基础设施的运维,并能便捷对接丰富的云上数据源。它可以帮助企业构建多样化的流式数据处理能力,轻松应对海量数据实时处理和分析决策的挑战。 



Oceanus平台整体架构

Oceanus平台特点:1、实时计算;2、完全托管;3、超高弹性,支持弹性扩缩容;4、简易SQL模式;5、支持UDX/自定义程序,方便大家去简化开发逻辑的成本;6、丰富的云端生态,提供一些生态的产品,包括数据采集等服务。

Oceanus拥有丰富的流计算应用场景,有效支持企业的实时计算需要和提升决策分析水平。典型的应用场景包括:1、点击流分析,可以分析用户在Oceanus进行操作的行为,通过后台相应分析为商业决策或者广告投放提供支撑;2、金融实时风控,欺诈的行为监测;3、物联网IoT监控;4、电商精准推荐。

Oceanus覆盖作业的生命周期,包括开发、测试、部署、运维,用户只需要关注它的应用逻辑的实践。目前,Oceanus应用建构方式包括三种模式:1、画布的形式来构建应用,腾讯将Flink做成相应的组件放在Oceanus的平台上,用户在使用的时候只需要在具体的算力进行相应的编排即可;2、标准SQL的方式,支持SQL语法可以快速高效的创建应用;3、支持Datastream API和dataset API,可高度定制特殊的业务逻辑。

最后,杨华介绍了Oceanus应用提交步骤,首先让用户配置相应的元数据,包括消费信息、数据格式,然后创建DAG,最后再经过编译提交。

通过半天的沙龙活动,到场的用户纷纷表示收获满满,不但对大数据相关技术有了深入的了解,还对腾讯云在大数据方面所做的支持和优化给予了肯定,期待未来更多的技术内容分享。
云+社区技术沙龙是腾讯云官方开发者社区举办的沙龙活动,希望通过分享技术让更多开发者学习和交流,成为腾讯云连接开发者的平台,共同打造技术影响力。 

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

 

责任编辑:鸢玮 来源: 51cto
相关推荐

2017-01-15 10:56:57

大数据非结构化过期

2013-01-10 10:30:32

大数据预测Hadoop

2012-05-15 09:59:18

金蝶hBOS云平台

2014-04-25 11:28:00

私有云公共云

2010-09-13 12:47:56

CSS3

2012-08-13 14:27:31

大数据

2022-03-24 23:06:25

大数据技术应用

2017-02-13 10:46:01

2018-10-06 19:10:26

技术项目云计算

2014-03-19 10:39:33

私有云

2012-02-15 09:29:58

大数据IT

2015-10-20 09:42:36

医疗大数据应用

2022-03-14 09:46:10

Hadoop大数据

2017-10-30 11:11:03

2019-07-15 15:48:02

创业技术人工智能

2015-04-27 13:23:42

无线技术ZigBeeUWB

2009-03-19 09:55:00

OFDM无线通信技术

2021-12-31 08:15:59

云原生技术通信

2017-12-25 10:34:18

技术预测机遇

2022-08-08 10:20:19

数据安全首席信息安全官
点赞
收藏

51CTO技术栈公众号