请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册
搜索

大数据知识图谱——实战阅历总结

qazx 2020-1-7 08:51:01 显示全部楼层 阅读模式
作为数据迷信家,我想把行业最新知识图谱总结并分享给技术专家们,让大数据知识真正转化为互联网消费力!大数据与人工智能、云计算、物联网、区块链等技术日益交融,成为全球最热的战略性技术,给大数据从业者带来了史无前例的发展机遇,同时也对大数据工程师提出了高标准的技能要求。大数据具有海量性、多样性、高速性和易变性等特点,映射到大数据平台建设要求,不只要具有海量数据采集、并行存储、灵敏分享、高效调用和智能分析的通用Paas服务才能,而且能疾速孵化出各种新型的Saas运用的才能。

要完成这个目的,架构设计至少要满足三个总体技术要求:

一是把分布式大数据平台的基础数据服务才能建设摆在首位。规划出支撑PB级规模数据运营才能的云平台架构,运用经典设计准绳和设计形式的架构之美,吸纳业内主流分布式技术的思想精髓,深耕主流平台服务形式到古代微架构的演化外延;

二是用系统架构设计和微服务建设思想武装团队,持续撰写多维度的架构蓝图,推进团队协同作战;

三是围绕大数据全栈技术体系处理项目实战中的各类难题,制定主流技术规范和设计标准,经过平台核心组件方式疾速迭代出新型业务。从设计要求来讲,大数据平台服务的全体设计要具有片面、全局、权衡的关键技术要求,不只能片面提炼国内外优秀架构和处理方案的精髓,而且要了解分布式技术的底层设计思想;不只能全局了解上下游技术生态和业务结合的设计过程,而且要游刃不足的处理系统功能和功能成绩;不只能权衡新技术引入和改造旧系统的成本估算,而且要推进作战团队轻松驾驭新技术。

第一个总体技术要求:把分布式大数据平台的基础数据服务才能建设摆在首位。规划出支撑PB级规模数据运营才能的创新云平台架构,运用经典设计准绳和设计形式的架构之美,吸纳业内主流分布式技术的思想精髓,深耕主流平台服务形式到古代微架构的演化外延。

第二个总体技术要求:用系统架构设计和微服务建设思想武装团队,持续撰写多维度的架构蓝图,推进团队协同作战。架构师不只要具有大型云平台架构的实战阅历之外,更要有大智慧和战略思想,经过蓝图来推进和管理好每一个产品的全生命周期。

第三个总体技术要求:围绕大数据全栈技术体系处理项目实战中的各类难题,制定主流技术规范和设计标准,经过平台核心组件方式疾速迭代出新型业务。针对设计规范的重要性,我们不妨用《孙子兵法》的大智慧来分析一下。

从系统全体技术才能出发,提出物联网大数据平台的八个通用微服务的技术要求,包括大数据的高并发采集服务、灵敏分发服务、高可扩展海量存储服务、高并发展海量存储服务、高牢靠海量存储服务、自定义迁移服务、基于机器学习的智能分析服务和基于Spark生态的实时计算服务,详细如下:

高并发采集服务:

支持多种移动终端和物联网数据的可扩展接入,并具有大规模接入并发处理才能。可以兼容主盛行业通用的可扩展协议和规范,并采用高牢靠的集群或者负载平衡技术框架来处理。如引入Mina或者Netty技术框架后适配各种多种移动终端接入。标准化接入要求常用的字节流、文件、Json等数据格式符合主流标准格式。

灵敏分发服务:

按照分析运用需求,分享不同的数据类型和数据格式,交互方式之一是主流的音讯中间件MQ或者Kafka,保证高效的分享并转换数据给数据服务运营方。交互的方式之二是Restful 方式,保证数据可以按照协议规范停止安全牢靠的数据分享和传输。

高可扩展海量存储服务:

支持数据类型和数据表可扩展,对物联网大数据停止海量存储和计算,尤其适用于初创公司研发百万级用户之内的大数据平台。

高可并发海量存储服务:

支持数据类型和数据量的高速增长,对物联网大数据停止批处理,合适构建PB级数据量和千万级用户量的云平台。

高牢靠海量存储服务:

支持物联网多源异构数据的一致高效和海量存储,并提供易于扩展的行业数据的离线计算和批处理架构,合适构建ZB级数据量和亿级用户量的分布式大平台。

基于Spark生态的实时计算服务:

支持对物联网大数据智能分析才能,经过企业级中间件服务框架提供安全牢靠接口,完成数据实时统计和计算。

基于机器学习的智能分析服务:

支持安全高效的机器学习算法,经过支持分布式分类、聚类、关联规则等算法,为用户和物联网机构提供个性化的智能分析服务。

自定义迁移服务:

支持对物联网大数据的全体迁移和同步,经过数据转换和数据迁移工具对不同数据类型和数据格式停止全体迁移,完成数据集的自定义生成。

01高并发采集微服务

面对千倍用户量和万倍数据量的增长速度,如何保证物联网大数据在比较快的工夫内进入平台?应对用户量的增长,如何在规定的工夫内完成采集?在硬件设备处理才能之外,让数据更快的汇聚到平台是核心需求。详细思索如下:

满足采集来自不同的厂家、移动设备类型、传输协议的行业数据的需求。我们在接口设计中完全可以针对不同设备和传输协议来设计,就是借用“分而治之”的用兵之道,“分而治之” 就是把一个复杂的算法成绩按一定的“分解”方法分为等价的规模较小的若干部分,然后逐一处理,分别找出各部分的解,把各部分的解组成整个成绩的解,这种朴素的思想也完全合适于技术设计,软件的体系结构设计、模块化设计都是分而治之的详细表现。其中策略形式就是这个思想的集中表现。策略形式定义了一个公共接口,各种不同的算法以不同的方式完成这个接口。

满足高并发需求。需求借助音讯队列、缓存、分布式处理、集群、负载平衡等核心技术,完成数据的高牢靠、高并发处理,有效降低端到端的数据传输时延,提升用户体验。借用“因粮于敌”的思想。“因粮于敌”的精髓是取之于敌,胜之于敌,以战养战,动态共存。我们常说的借用对手优势发展本人并整合资源就是这个思想的集中表现。正式商用的系统需求借助高功能中间件来并行处理数据,达到不丢包下的低延迟。我们采用商用的Mina 负载平衡技术框架,可以支持多种设备和传输协议(HTTP、TCP、UDP)的数据接入,可以满足每秒上万并发数的数据接入需求。针对以上的核心需求分析和技术定位,我们可以借助第三方中间件和采用设计形式完成个性化业务,来处理接口的集中化、可扩展性、灵敏性等成绩,借助Mina的Socket NIO技术魅力,适配高并发的数据接口IOFilterAdapter停止反序列化编码,适配高并发的数据接口IOHandlerAdapter停止业务处理。

02 灵敏分享微服务

灵敏分享才能的总体设计中要思索接口和音讯中间件两种方式,其中音讯中间件可支撑千万级用户规模的音讯并发,适用于物联网、车联网、移动 Apps、互动直播等范畴。它的运用场景包括:

一是在传统的系统架构,用户从注册到跳转成功页面,中间需求等待系统接口前往数据。这不只影响系统呼应工夫,降低了CPU吞吐量,同时还影响了用户的体验。

二是经过音讯中间件完成业务逻辑异步处理,用户注册成功后发送数据到音讯中间件,再跳转成功页面,音讯发送的逻辑再由订阅该音讯中间件的其他系统担任处理。

三是音讯中间件的读写速度非常的快,其中的耗时可以忽略不计。经过音讯中间件可以处理更多的央求。

主流的音讯中间件有Kafka、RabbitMQ、RocketMQ,我们来对比一下它们功能,Kafka是开源的分布式发布-订阅音讯系统,归属于Apache顶级项目,次要特点是基于Pull形式来处理音讯消费,追求高吞吐量,次要用于日志搜集和传输。自从0.8版本末尾支持复制,不支持事务,对音讯的反复、丢失、错误没有严厉要求,合适产生大量数据的互联网服务的数据搜集业务;RabbitMQ是Erlang言语开发的开源音讯队列系统,基于AMQP协议来完成。AMQP的次要特征是面向音讯、队列、路由(包括点对点和发布/订阅)、牢靠性、安全。AMQP协议用在企业系统内,对数据分歧性、波动性和牢靠性要求很高的场景,对功能和吞吐量的要求还在其次。RocketMQ是阿里开源的音讯中间件,由Java言语开发,具有高吞吐量、高可用性、合适大规模分布式系统运用的特点。RocketMQ设计思想源于Kafka,但并不是Kafka的一个Copy,它对音讯的牢靠传输及事务性做了优化,目前在阿里集团被广泛运用于买卖、充值、流计算、音讯推送、日志流式处理、binglog分发等场景。结合上述服务优势对比,在第三章我们会运用最主流的ActiveMQ音讯中间件来处理数据分享,在第六章我们采用分布式的Kafka完成数据分享。

03 高可扩展海量存储服务

高可扩展是大数据处理的核心需求之一。实践工作中,当用户量在100万以内,而且数据量在TB级别以内,常常可以选择用Mysql数据库,灵敏、成熟和开源的Mysql数据库是初创公司的首选。我们思索运用纵表完成系统灵敏可扩展,让常常运用的数据放在一个数据表中,让灵敏变化的字段完成字典表形式,让内容常发生变化的数据对象尽量采用JSON格式。著名的OpenMRS系统在Mysql数据库中完成了自定义表格,让医生可以完成灵敏自定义表格,搜集本人的临床实验数据,让用户本人每天可以记录本人的饮食信息。这样的设计就能完成了运用场景的普适性。我们自创OpenMRS的核心思想来构建一个基于Mysql的小规模的物联网大数据模型。运用场景就是:一个患者到多个医院,停止体检并记录了各个生理目的。我们根据运用场景来建立数据模型。患者表构建为Patient表,医院表构建为Location表,体检构建为Encounter表,测量构建为Observation表,体检类型描画构建为Concept表,采用五张表的多表关联完成了普适的可扩展数据模型,在第三章节会详细阐述。

高可扩展的另外一个接口完成就是Restful架构。Restful接口是安全开放平台的主流接口风格。普通的运用系统运用Session停止登录用户信息的存储和验证,而大数据平台的开放接口服务的资源央求则运用Token停止登录用户信息的验证。Session次要用于保持会话信息,会在客户端保存一份cookie来保持用户会话有效性,而Token则只用于登录用户的身份鉴权。所以在移动端运用Token会比运用Session愈加简易并且有更高的安全性。Restful架构遵照一致接口准绳,一致接口包含了一组受限的预定义的操作,不论什么样的资源,都是经过运用相反的接口停止资源的访问。接口应该运用预先定义好的主流的标准的Get/Put/Delete/Post操作等。在第三章节会详细阐述。

04 高并发海量存储服务

MongoDB是适用于垂直行业运用的开源数据库,是我们高并发存储和查询的首选的数据库。MongoDB可以使企业业务愈加具有扩展性,经过运用MongoDB来创建新的运用,能使团队提升开发效率。

我们详细分析一下关系模型和文档模型的区别。关系模型是按照数据对象存到各个相应的表里,运用时按照需求停止调取。举例子来说,针对一个体检数据模型设计,在用户管理信息中包括用户名字、地址、联络方式等。按照第三范式,我们会把联络方式用单独的一个表来存储,并在显示用户信息的时分经过关联方式把需求的信息取回来。但是MongoDB的文档形式,存储单位是一个文档,可以支持数组和嵌套文档,这个文档就可以涵盖这个用户相关的一切个人信息,包括联络方式。关系型数据库的关联功能恰恰是它的发展瓶颈,尤其是用户数据达到PB级之后,功能和效率会急速下降。

我们采用MongoDB设计一个高效的文档数据存储形式。首先思索内嵌, 把同类型的数据放在一个内嵌文档中。内嵌文档和对象可以产生逐一映射关系,比如Map可以完成存储一个内嵌文档。假如是多表关联时,可以运用在主表里存储一个id值,指向另一个表中的 id 值,经过把数据存放到两个集合里完成多表关联, 目前在MongoDB的4.0之后末尾支持多文档的事务处理。

我们采用AngularJS框架设计一个高并发调用系统。一提到数据调用就想到了JQuery框架,JQuery框架的设计思想就是在静态页面基础上停止DOM元素操作。目前最成熟的数据调用的主流框架之一是AngularJS框架,AngularJS特别合适基于CRUD的Web运用系统。它简化了对Web开发者的阅历要求,同时让Web本身变得功能更强。AngularJS对DOM元素操作都是在Directive中完成的,而且普通状况下很少本人直接去写DOM操作代码,只需你监听Model,Model发生变化后View也会发生变化。AngularJS框架强调UI应该是用Html声明式的方式构建,数据和逻辑由框架提供的机制自动婚配绑定。AngularJS有着诸多优势的设计思想,最为核心的是:数据理由、依赖注入、自动化双向数据绑定、语义化标签等。依赖注入思想完成了分层解耦,包括前后端分离和合理的模块化组织项目结构,让开发者更关注于每一个详细的逻辑本身,从而加快了开发速度,提升了系统的质量。双向绑定是它的精髓所在,就是从界面的操作能实时反映到数据,数据的变更能实时展现到界面,数据模型Model和视图View都是绑定在了内存映射$Scope上。

下面是我设计的AngularJS 的项目框架,可以运用于一切业务系统,在第四章的体检报告可视化展现中详细阐述。建立MVC的三层框架,先建立一个单页视图层Main.html, 然后创建一个模型层Service.js, 最后创建一个控制层App.js, App.js中包括多个模块的JS和Html文件,这样就构建了一个残缺的AngularJS MVC框架。

05 高牢靠海量存储服务

高牢靠海量存储是大数据处理的核心需求之一。实践工作中,常常需求完成多模态、不同工夫颗粒度的行业数据的一致高效和海量存储,并提供易于扩展的离线计算和批处理架构,例如,引入 Hadoop和Spark的大数据存储与计算方案。高牢靠数据海量存储的总体设计中要吸纳主流的Hadoop架构,Hadoop集群是一个可以让用户轻松架构和运用的分布式计算平台,用户可以在Hadoop上开发和运转处理海量数据的运用程序。它次要有以下几个优点:

高牢靠性。Hadoop按列存储和处理数据的才能值得信任。Hadoop可以在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。

高扩展性。Hadoop是在可用的列簇中分配数据并完成计算义务的,这些集簇可以方便地扩展到数以千计的节点中。

高容错性。Hadoop可以自动保存数据的多个副本,并且可以自动将失败的义务重新分配。

数据海量存储的弹性设计中要吸纳主流的HBase架构。它是一个高牢靠性、高功能、面向列、可伸缩的分布式存储系统,适用于结构化的存储,底层依赖于Hadoop的HDFS,应用HBase技术可在廉价PCServer上搭建起大规模结构化存储集群。因此HBase被广泛运用在大数据存储的处理方案中。从运用场景分析,由于HBase存储的是松懈的数据,假如运用程序中的数据表每一行的结构是有差别的,运用HBase最好,由于HBase的列可以动态添加,并且列为空就不存储数据,所以假如你需求常常追加字段,且大部分字段是NULL值的,那可以思索HBase。由于HBase可以根据Rowkey提供高效的查询,所以你的数据都有着同一个主键Rowkey。详细完成见第六章节。

06 实时计算服务

实时计算的总体设计中要思索Spark生态技术框架。Spark 运用 Scala 言语停止完成,它是一种面向对象、函数式编程言语,可以像操作本地集合对象一样轻松地操作分布式数据集(Scala 提供一个称为 Actor 的并行模型)。Spark具有运转速度快、易用性好、通用性。Spark 是在自创了 MapReduce 思想之上发展而来的,承继了其分布式并行计算的优点并改进了 MapReduce 分明的缺陷,详细优势分析如下:

Spark 把中间数据放到内存中,迭代运算效率高。MapReduce 中计算结果需求落地,保存到磁盘上,这样势必会影响全体速度,而 Spark 支持 DAG 图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。

Spark 容错性高。Spark 引进了弹性分布式数据集 RDD (Resilient Distributed Dataset) 的笼统,它是分布在一组节点中的只读对象集合,这些集合是弹性的,假如数据集一部分丢失,则可以根据“血缘“对它们停止重建。另内在 RDD 计算时可以经过 CheckPoint 来完成容错。

Spark 具有通用性。在Hadoop 提供了 Map 和 Reduce 两种操作基础上,Spark 又提供的很多数据集操作类型有,大致分为:Transformations 和 Actions 两大类。Transformations 包括 Map、Filter、FlatMap、Sample、GroupByKey、ReduceByKey、Union、oin、Cogroup、MapValues、Sort 和 PartionBy 等多种操作类型,同时还提供 Count, Actions 包括 Collect、 Reduce、Lookup 和 Save 等操作。

弱小的SparkMLlib机器学习库,旨在简化机器学习的工程实际工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。详细完成见第六章节。

07 基于机器学习的智能分析服务

智能分析服务的总体设计中要思索Spark MLlib工具。当今主流的建模言语包括R言语,Weka,Mahout和Spark等,我们来分析一下它们的基因和运用场景。

R是一种数学言语,外面封装了大量的机器学习算法,但是它是单机的,不可以很好的处理海量的数据。Weka和R言语相似,外面包含大量经过良好优化的机器学习和数据分析算法,可以处理与格式化数据转换相关的各种义务,独一的不足就是它对高内存要求的大数据处理遇到瓶颈。

Mahout是hadoop的一个机器学习库,有海量数据的并发处理才能,次要的编程模型是MapReduce。而基于MapReduce的机器学习在反复迭代的过程中会产生大量的磁盘IO,即本次计算的结果要作为下一次迭代的输入,这个过程中只能把中间结果存储磁盘,然后在下一次计算的时分从新读取,这对于迭代频发的算法显然是致命的功能瓶颈。所以计算效率很低。如今Mahout曾经中止更新MapReduce算法,向Spark迁移。另外,Mahout和Spark ML并不是竞争关系,Mahout是MLlib的补充。

MLlib是Spark对常用的机器学习算法的完成库,同时包括相关的测试和数据生成器。Spark的设计就是为了支持一些迭代的Job, 这正好符合很多机器学习算法的特点。在逻辑回归的运算场景下,Spark比Hadoop快了100倍以上。Spark MLlib立足于内存计算,顺应于迭代式计算。而且Spark提供了一个基于海量数据的机器学习库,它提供了常用机器学习算法的分布式完成,工程师只需求有 Spark基础并且了解机器学习算法的原理,以及方法中相关参数的含义,就可以轻松的经过调用相应的 API 来完成基于海量数据的机器学习过程。

数据迁移才能的总体设计中要思索Sqoop框架。Sqoop是一个目前Hadoop和关系型数据库中的数据互相转移的主流工具,可以将一个关系型数据库(MySQL ,Oracle ,Postgres等)中的数据导入到Hadoop的HDFS中,也可以将HDFS的数据导入到关系型数据库中。作为ETL工具,运用元数据模型来判别数据类型,并在数据从数据源转移到Hadoop时确保类型安全的数据处理。Sqoop框架可以停止大数据批量传输设计,可以分割数据集并创建Hadoop义务来处理每个区块。

码字不易,假如您觉得文章写得不错,

请您 1.关注作者~ 您的关注是我写作的最大动力

2.私信我“大数据”

我将与您分享一套最新的大数据学习资源和全套开发工具

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

大神点评23

笑点来了 2020-1-7 09:00:56 显示全部楼层
跟你学习大数据技术!
回复

使用道具 举报

分享了
回复

使用道具 举报

屠豚手 2020-1-7 09:11:49 显示全部楼层
分享了
回复

使用道具 举报

minghuayin 2020-1-7 09:23:28 显示全部楼层
分享了
回复

使用道具 举报

紫梦雅芝 2020-1-7 09:35:00 显示全部楼层
分享了
回复

使用道具 举报

wulihot 2020-1-7 09:45:31 显示全部楼层
分享了
回复

使用道具 举报

山电寸十 2020-1-7 09:49:18 显示全部楼层
分享了
回复

使用道具 举报

分享了
回复

使用道具 举报

dirkyoyo 2020-1-7 09:58:26 显示全部楼层
分享了
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies