副标题[/!--empirenews.page--]
【51CTO.com原创稿件】数据已经成为企业宝贵的资产,如何利用数据的分析挖掘,从而辅助企业进行商业决策,成为企业所关注的。
8月24日,由云+社区(腾讯云官方开发者社区)联合快手举办的《大数据技术实践与应用》沙龙活动成功举行,沙龙聚焦于大数据的技术实践与应用,为到场的用户奉上了一场大数据技术盛宴。来自腾讯云的专家和快手的工程师重点介绍了Spark、ElasticSearch,yarn、MapReduce、Flink等大数据技术的发展历程、架构优化以及实践应用。
基于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近期新功能
(编辑:南平站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|