|
手艺频道
js29.com
|
51CTO旗下网站
|
|金沙@js5网址
挪动端

中国移动研究院常耀斌:商用大数据平台的研发之路

我是中国移动研究院的资深架构师常耀斌。今天有幸分享商用大数据平台研发履历,让大数据常识图谱在列位的脑海里转起来,并构成商用产物的作战系统,那是“作为架构师,何谓准确?”的举动根蒂根基。我分享四大局部:常识分类,体系架构,核心技术,履历分享。

作者:常耀斌泉源:|2019-03-26 09:28

导语:我是中国移动研究院的资深架构师常耀斌。2007年,我到场中国电科,到场并主导设想的“三军一体化批示作战平台”荣获国度科技前进特等奖。2009年,我出任华为云第一代架构师,率领团队研制并运营了海内尾个私有云平台。回首回头回忆10年多的科研工作进程,也是中国经济高速生长的10多年,中国下铁、核电、航空、互联网、云盘算、大数据、人工智能等范畴无不铭记着“中国手刺”,那就是科技是第一生产力的理论考证!2007年,得到北邮计算机工学硕士后自信心满满的踏上了科研之路,一干就是十多年,有苦有泪有艰苦,但劳绩的是一种为国度科技生长能奉献和敢经受的责任感。

今天,又一次站在了挪动互联网这个朝阳家当的跑道上,和诸多大数据和人工智能的世界级大咖共商立异生长!2012年到场中国移动集团研究院,担负资深大数据专家和研究员,主攻大数据和人工智能平台架构设想和要害技术研究,并屡次受邀在大数据行业和支流峰会停止学术交流,在见证我的学生们历练为BAT/TMD的手艺专家同时,也悄悄实现着我的手艺空想-让高科技研发标准化和平民化。今天有幸分享商用大数据平台研发履历,让大数据常识图谱在列位的脑海里转起来,并构成商用产物的作战系统,那是“作为架构师,何谓准确?”的举动根蒂根基。我分享四大局部:常识分类,体系架构,核心技术,履历分享。详细以下:

01大数据知识结构归类:

* 文件存储:

Hadoop HDFS、Tachyon、KFS

* 离线盘算:

Hadoop MapReduce、Spark

* 流式、及时盘算:

Storm、Spark Streaming

* K-V、NOSQL数据库:

HBase、Redis、MongoDB

* 资源管理:

YARN、Mesos

* 日记收集:

Flume、Scribe、Logstash、Kibana

* 新闻体系:

Kafka、StormMQ、ZeroMQ、RabbitMQ

* 查询剖析:

Hive、Impala、Pig、SparkSQL、Flink

* 分布式和谐服务:

Zookeeper

* 集群管理取监控:

Ambari、Ganglia、Nagios、Cloudera Manager

* 数据发掘、机械进修:

Mahout、Spark MLLib

* 数据同步:

Sqoop

* 义务调理:

Oozie

02 常识汇总及体系架构构成:

以物联网大数据平台的架构为例,盘绕着这条主线:根蒂根基架构-》离线剖析-》离线迁徙-》离线同步-》及时盘算-》及时交流-》及时调理-》及时存储-》智能剖析。

03 核心技术(10个单位)

第一单位:根蒂根基架构-Hadoop的破冰之旅

Hadoop是一个由Apache基金会所开辟的分布式体系根蒂根基架构。Hadoop是实现了真正意义上的去“IOE”,尤其是开启了挣脱外洋高科技公司的环球把持时期,让环球用户能够轻松天在免费的Hadoop上开辟和运转处置惩罚海量数据的应用程序。发起先把Hadoop集群构建起来,具体操作睹我的博客:https://blog.csdn.net/peter_changyb/article/details/81195920。它重要有以下几个长处:

* 下可靠性。

Hadoop按位存储和处置惩罚数据的才能值得人们信任。

* 下扩展性。

Hadoop是在可用的计算机集簇间分派数据并完成盘算义务的,这些集簇能够轻易天扩展到数以千计的节点中。

* 高效性。

Hadoop可以或许在节点之间静态天挪动数据,并包管各个节点动态平衡,因而处置惩罚速度异常快。

* 下容错性

Hadoop可以或许主动生存数据的多个副本,而且可以或许主动将失利的义务从新分派。

Hadoop能够算是大数据存储和盘算的开山鼻祖,如今大多开源的大数据框架皆依靠Hadoop大概取它能很好的兼容。具有以下:

  • Hadoop 1.0、Hadoop 2.0
  • MapReduce、HDFS
  • NameNode、DataNode
  • JobTracker、TaskTracker
  • Yarn、ResourceManager、NodeManager

1.1 HDFS是Hadoop的关键技术地点

HDFS目次操纵下令;上传、下载文件下令;提交运转MapReduce示例顺序;翻开Hadoop WEB界面,检察Job运转状况,检察Job运转日记。晓得Hadoop的体系日记在哪里。

1.2 相识并行盘算的中心道理

MapReduce:分而治之的优异头脑;HDFS:数据分片和数据复制为中心的手艺。数据到底在哪里,什么是副本;

Yarn如何用分层管理头脑革命性的改动了MapReduce的中心架构?NameNode职责?;Resource Manager职责?

1.3 亲身写MapReduce顺序

第二单位:离线剖析

2.1 SQL On Hadoop之Hive

什么是Hive?官方注释以下:The Apache Hive data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage and queried using SQL syntax.

数据仓库物理上是数据库,逻辑上堆栈。有两个特性:海量数据、相对稳固的;相对稳固,指很少会被更新和删除,只会被大量查询。而Hive,也是具有那两个特性,因而,Hive合适做海量数据的数据仓库东西,而不是数据库东西。Hive核心技术解说拜见我的博客 https://blog.csdn.net/Peter_Changyb/article/details/81977665

2.2 安装设置Hive

2.3 运用Hive

2.4 Hive中心道理

2.5 Hive的根基下令:

建立、删除表;加载数据到表;下载Hive表的数据,需求您把握以下妙技:

  • MapReduce的道理;
  • HDFS读写数据的流程;
  • 学会检察日记解决问题;
  • 会SELECT、WHERE、GROUP BY等SQL语句;
  • Hive SQL转换成MapReduce的要害流程;
  • Hive中常见的语句:建立表、删除表、往表中加载数据、分区、将表中数据下载到当地;

第三单位:离线迁徙

3.1 HDFS PUT操纵

put下令在现实情况中也对照常用,一般合营shell、python等脚本语言去运用。

3.2 HDFS API挪用

HDFS供应了写数据的API,本身用编程言语将数据写入HDFS,put下令自己也是运用API。现实情况中一样平常本身较少编写顺序运用API去写数据到HDFS,一般都是运用其他框架封装好的要领。好比:Hive中的INSERT语句,Spark中的saveAsTextfile等。

3.3 Sqoop迁徙东西

Sqoop是一个重要用于Hadoop/Hive取传统干系型数据库,Oracle、MySQL、SQLServer等之间停止数据交流的开源框架。便像Hive把SQL翻译成MapReduce一样,Sqoop把您指定的参数翻译成MapReduce,提交到Hadoop运转,完成Hadoop与其他数据库之间的数据交流。本身下载和设置Sqoop。相识Sqoop常用的设置参数和要领。运用Sqoop完成从MySQL同步数据到HDFS;运用Sqoop完成从MySQL同步数据到Hive表;若是后续选型肯定运用Sqoop作为数据交流东西,那么发起纯熟把握,不然,相识和会用Demo便可。Sqoop导入Hbase中心代码睹我的手艺博客https://blog.csdn.net/Peter_Changyb/article/details/82557741

3.4 Flume分布式采集框架

Flume是一个分布式的海量日记采集和传输框架,由于“采集和传输框架”,以是它其实不合适干系型数据库的数据采集和传输。Flume能够及时的从网络和谈、新闻体系、文件系统采集日记,并传输到HDFS上。因而,若是您的业务有这些数据源的数据,而且需求及时的采集,那么便应当思索运用Flume。下载和设置Flume。运用Flume监控一个络续追加数据的文件,并将数据传输到HDFS;Flume的设置和运用较为庞大,若是您没有充足的乐趣和耐烦,能够先跳过Flume。核心技术拜见我的手艺博客https://blog.csdn.net/Peter_Changyb/article/details/81213997

第四单位:离线同步

Hive和MapReduce停止剖析了。那么接下来的问题是,剖析完的效果怎样从Hadoop上同步到其他体系和运用中去呢?实在,此处的要领和第三章根基同等的。

4.1 HDFS GET下令

把HDFS上的文件GET到当地。

4.2 HDFS API

4.3 Sqoop

运用Sqoop完成将HDFS上的文件同步到MySQL;运用Sqoop完成将Hive表中的数据同步到MySQL。

4.4 DataX

DataX 是一个同构数据源离线同步东西,致力于实现包孕干系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等种种同构数据源之间稳固高效的数据同步功用。之所以引见这个,是由于我们公司现在运用的Hadoop取干系型数据库数据交流的东西,就是之前基于DataX开辟的,非常好用。如今DataX曾经是3.0版本,支撑许多数据源。DataX自己作为离线数据同步框架,接纳Framework + plugin架构构建。将数据源读取和写入笼统成为Reader/Writer插件,归入到全部同步框架中。三个中心模块要明白。Reader:Reader为数据采集模块,卖力采集数据源的数据,将数据发送给Framework。Writer: Writer为数据写入模块,卖力络续背Framework与数据,并将数据写入到目标端。Framework:Framework用于衔接reader和writer,作为二者的数据传输通道,并处置惩罚缓冲,流控,并发,数据转换等核心技术题目。

第五单位:及时盘算

Spark对MapReduce做了大量的革新和优化,重要包孕以下个方面:

1)磁盘I/O的读写优化:

中央效果缓存在内存中:跟着及时大数据运用愈来愈多,Hadoop作为离线的下吞吐、低相应框架已不克不及知足这类需求。Hadoop MapReduce的map端将中央输出和效果存储在磁盘中,reduce端又需求从磁盘读写中央效果,从而形成磁盘I/O成为瓶颈。Spark则许可将map端的中央输出和效果缓存在内存中,从而使得reduce端在推与中央效果时制止了大量的磁盘I/O;应用程序上传的资本文件缓存在Driver本地文件服务的内存中:Hadoop YARN中的ApplicationMaster申请到Container后,详细义务需求应用NodeManager从HDFS的差别节点下载义务所需的资本(如Jar包),增添了磁盘I/O。Spark则将应用程序上传的资本文件缓存在Driver本地文件服务的内存中,当Executor实行义务时间接从Driver的内存中读取,从而节约了大量的磁盘I/O。

2)义务的并行处置惩罚优化:

因为将中央效果写到磁盘取从磁盘读取中央效果属于差别的环节,Hadoop将它们简朴天经由过程串行实行跟尾起来。而Spark则把差别的环节笼统为Stage,许可多个Stage既能够串行实行,又能够并行实行。

3)义务调理中的资本过滤:

当Stage中某个分区的Task实行失利后,会从新对此Stage调理,但在从新调理的时刻会过滤曾经实行胜利的分区义务,以是不会形成反复盘算和资本虚耗。

4)Shuffle排序:

Hadoop MapReduce在Shuffle之前会将中央效果按key的hash值和key值巨细停止两层排序,确保分区内部的有序性。而Spark则能够凭据差别场景选择在map端排序照样reduce端排序。

5)内存管理优化:

Spark将内存分为堆上的存储内存、堆中的存储内存、堆上的实行内存、堆中的实行内存4个局部。Spark既供应了实行内存和存储内存之间流动界限的实现,又供应了实行内存和存储内存之间“硬”界限的实现。Spark默许运用“硬”界限的实现,实行内存或存储内存中的恣意一方在资本缺乏时皆能够借用另外一方的内存,最大限度天进步资本的利用率,削减对资本的虚耗。Spark因为对内存运用的偏好,内存资本的多寡和使用率便显得尤其主要,为此Spark的内存管理器供应的Tungsten实现了一种取操作系统的内存Page异常类似的数据结构,用于间接操纵操作系统内存,节约了建立的Java工具在堆中占用的内存,使得Spark对内存的运用效力越发靠近硬件。Spark会给每一个Task分派一个配套的义务内存管理器,对Task粒度的内存停止管理。Task的内存能够被多个内部的消费者消耗,义务内存管理器对每一个消费者停止Task内存的分派取管理,因而Spark对内存有着更细粒度的管理。核心技术参考我的博客https://blog.csdn.net/Peter_Changyb/article/details/81904066

5.1 关于Spark和SparkSQL

什么是Spark,什么是SparkSQL。Spark有的中心观点及名词解释。SparkSQL和Spark是什么干系,SparkSQL和Hive是什么干系。SparkSQL为何比Hive跑的快。

5.2 怎样布置和运转SparkSQL

Spark有哪些布置形式?如安在Yarn上运转SparkSQL?运用SparkSQL查询Hive中的表。Spark不是一门短时间内便能把握的手艺,因而发起在相识了Spark以后,能够先从SparkSQL动手,循规蹈矩。关于Spark和SparkSQL,若是您卖力完成了上面的进修和理论,此时,您的”大数据平台”应该是如许的。

第六单位:及时交流

在现实业务场景下,特别是关于一些监控日记,念立即的从日记中相识一些目标,这时候,从HDFS上剖析就太慢了,只管是经由过程Flume采集的,但Flume也不能距离很短就往HDFS上转动文件,如许会致使小文件稀奇多。为了知足数据的一次采集、屡次消耗的需求,这里要说的就是Kafka。

6.1 关于Kafka

什么是Kafka?Kafka的中心观点及名词解释。

6.2 怎样布置和运用Kafka

运用单机布置Kafka,并胜利运转自带的生产者和消费者例子。运用Java顺序本身编写并运转生产者和消费者顺序。Flume和Kafka的集成,运用Flume监控日记,并将日记数据及时发送至Kafka。

这时候,运用Flume采集的数据,不是曲接到HDFS上,而是先到Kafka,Kafka中的数据能够由多个消费者同时消耗,个中一个消费者,就是将数据同步到HDFS。

  1. 为何Spark比MapReduce快。
  2. 运用SparkSQL替代Hive,更快的运转SQL。
  3. 运用Kafka完成数据的一次收集,屡次消耗架构。
  4. 本身能够写顺序完成Kafka的生产者和消费者。

第七单位:及时调

不单单是剖析义务,数据采集、数据交流一样是一个个的义务。这些义务中,有的是准时触发,有点则需求依靠其他义务去触发。当平台中有几百上千个义务需求保护和运转时刻,仅仅靠crontab远远不敷了,这时候便需求一个调理监控体系去完成这件事。调理监控体系是全部数据平台的中枢体系,类似于AppMaster,卖力分派和监控义务。

7.1 Apache Oozie

1. Oozie是什么?有哪些功用?当您的体系引入了spark大概hadoop今后,基于Spark和Hadoop曾经做了一些义务,好比一连串的Map Reduce义务,然则他们之间相互左前后依靠的递次,因而您必需要等一个义务实行胜利后,再手动实行第二个义务。

  • * Oozie是管理Hadoop功课的工作流调理体系
  • * Oozie的工作流是一系列的操作图,Oozie和谐功课是经由过程工夫(频次)和有用数据触发当前的Oozie事情流程
  • * Oozie是针对Hadoop开辟的开源工作流引擎,专门针对大规模庞大事情流程和数据管道设想
  • * Oozie盘绕两个中心:工作流和和谐器,前者界说义务的拓扑和实行逻辑,后者卖力工作流的依靠和触发。

2. Oozie能够调理哪些范例的义务(顺序)?

3. Oozie能够支撑哪些义务触发体式格局?

4. 安装设置Oozie。

7.2 其他开源的义务调理体系

Azkaban,light-task-scheduler,Zeus,等等。别的,我这边是之前零丁开辟的义务调理取监控体系。

第八单位:实时处理

在引见Kafka的时刻提到了一些需求及时目标的业务场景,及时根基能够分为绝对及时和准及时,绝对及时的提早要求一样平常在毫秒级,准及时的提早要求一样平常在秒、分钟级。关于需求绝对及时的业务场景,用的对照多的是Storm,关于其他准及时的业务场景,能够是Storm,也能够是Spark Streaming。

8.1 Storm

  1. 什么是Storm?有哪些能够的运用场景?
  2. Storm由哪些中心组件组成,各自担负什么脚色?
  3. Storm的简朴安装和布置。
  4. 案例实战拜见我的手艺博客https://blog.csdn.net/Peter_Changyb/article/details/82380603

8.2 Spark Streaming

  1. 什么是Spark Streaming,它和Spark是什么干系?
  2. Spark Streaming和Storm对照,各有什么优缺点?
  3.  运用Kafka + Spark Streaming,完成及时盘算的Demo顺序。

第九单位:及时存储

HBase属于存储层,是一个下可靠性、下机能、面向列、可伸缩的分布式存储系统,可在便宜PC Server上搭建起大规模构造化存储集群。Hbase依托于许多框架和东西。个中,Hadoop HDFS为HBase供应了下可靠性的底层存储支撑,Hadoop MapReduce为HBase供应了下机能的盘算才能,Zookeeper为HBase供应了稳固服务和failover机制。Pig和Hive借为HBase供应了高层言语支撑,使得在HBase长进行数据统计处置惩罚简朴快速。Sqoop为HBase供应了轻易的RDBMS数据导入功用,使得传统数据库数据背HBase中迁徙更天真。

HBase的 Client客户端借助HBase的RPC机制取HMaster和HRegionServer停止通讯,Zookeeper Quorum中除存储了-ROOT-表的地点和HMaster的地点,HRegionServer也注册到Zookeeper中,使得HMaster能够随时感知到各个HRegionServer的存活状况。HMaster处理了单点毛病题目,HBase中能够启动多个HMaster,经由过程Zookeeper的Master Election机制包管总有一个Master运转,HMaster在功用上重要卖力Table和Region的管理工作,包孕管理用户对Table的删、删、改、查操纵,管理HRegionServer的负载平衡,调解Region散布,在Region Split后卖力新Region的分派,在HRegionServer停机后卖力生效HRegionServer 上的Regions迁徙。

HRegionServer职责是卖力相应用户I/O恳求,背HDFS文件系统中读写数据,属于HBase中最中心的模块。它内部管理了一系列HRegion工具,每一个HRegion对应了Table中的一个Region,HRegion中由多个HStore构成。每一个HStore对应了Table中的一个Column Family的存储,每一个Column Family就是一个集中的存储单位,设计师最好将具有配合IO特性的column放在一个Column Family中,一般来说,我们只设置一个Column Family。HStore存储是HBase存储的中心,个中由两局部构成,一是MemStore,二是StoreFiles。MemStore是Sorted Memory Buffer,用户写入的数据起首会放入MemStore,当MemStore谦了今后会Flush成一个StoreFile(底层实现是HFile),当StoreFile文件数目增进到肯定阈值,会触发Compact兼并操纵,将多个StoreFiles兼并成一个StoreFile,兼并历程中会停止版本兼并和数据删除,以是HBase实在只要增添数据,所有的更新和删除操纵都是在后续的compact历程中停止的,那使得用户的写操纵只要进入内存中便能够立刻返回,包管了HBase I/O的下机能。

第十单位:智能剖析

机械进修核心技术拜见我的手艺博客https://blog.csdn.net/Peter_Changyb/article/details/82347169。常用的机械进修处理的题目有三类:

* 分类题目:

包孕二分类和多分类,二分类就是处理了展望的题目,便像展望一启邮件是不是垃圾邮件;多分类处理的是文本的分类;

* 散类题目:

从用户搜刮过的关键词,对用户停止也许的归类。

* 推荐题目:

凭据用户的汗青阅读和点击行动停止相干推荐。

04 履历分享

总之,对商用大数据平台而言,我们要思索运用场景,用户范围和数据处理才能,和将来3年的目的等。在运用场景的设想中,会思索业务和手艺的联合器量,业务的范围和流程设想。用户范围和数据处理才能,会思索手艺选型和架构设想。详细要思索架构设想。架构中主要的中心目标:机能、可用性、伸缩性、扩展性的等。

一、机能

机能就是中心要素之一,详细以下:

  • * CDN减速
  • * 反向署理
  • * 分布式缓存

* 异步化:

经由过程分布式新闻行列去实现削峰的目标。经由过程业务合营手艺去解决问题。

* 集群:

接纳集群也是服务假造化的一个表现。用以制止单点题目,同时供应更加高可用,下机能的服务。

* 代码优化:

多线程中,若是是密集型盘算,线程数不宜凌驾CPU核数。若是是IO处置惩罚,则线程数=[义务执行时间/(义务执行时间-IO等待时间)] * CPU核数。除此之外,我们应当将工具设想成无状况工具,多接纳部分工具,恰当将锁细化。停止资本复用。好比接纳单例形式,好比接纳衔接池。公道设置JVM参数。

* 存储机能优化:

干系型数据库的索引接纳B+树停止实现。而许多的nosql数据库则接纳了LSM树停止存储。LSM在内存中保存最新增删改查的数据,直到内存没法放下,则取磁盘的下一级LSM树停止merge。以是关于写操纵较多,而读操纵更多的是查询近来写入数据的场景,其机能远高于b+树;接纳HDFS联合map reduce停止海量数据存储和剖析。其能主动停止并发接见和冗余备份,具有很下的可靠性。其即是是实现了RAID的功用。

* 数据接见接口优化:

数据库层实在是最懦弱的一层,一样平常在运用设计时在上游便需求把恳求阻拦失落,数据库层只负担“才能范围内”的接见恳求,以是,我们经由过程在服务层引入行列懈弛存,让最底层的数据库万事大吉。

二、下可用性

权衡一个体系架构设想是不是知足下可用的目的,就是假定体系中任何一台大概多台服务器宕机时,和泛起种种弗成预期的题目时,体系整体是不是仍然可用。一样平常便三个手腕、冗余、集群化、分布式。下可用的重要手腕就是冗余,运用布置在多台服务器上同时供应服务,数据存储在多台服务器上互相备份。平安服务是指计算机网络供应的平安防护步伐,包孕认证服务、接见掌握、数据机密性服务、数据完整性服务和弗成否定服务。特定的平安机制是用来实行平安服务的机制,包孕加密机制、数据署名机制、接见掌握机制、数据完整性机制、认证交流机制、流量添补机制、路由掌握机制和公证机制。普遍性的平安机制不是为任何特定的服务而特设的,属于安全管理方面,分为可托功用度、平安符号、事宜检测、平安审计跟踪和平安规复。

三、下扩展性

扩展性指对现有体系影响最小的状况下,体系功用可持续扩大或提拔的才能。显示在体系基础设施稳固不需要常常调换,运用之间较少依靠和耦合,当体系增添新功能时,不需要对现有体系的构造和代码停止修正。扩展性依赖于前期优越的架构设想。公道业务逻辑笼统,程度/垂直切割分布式化等等。可扩大架构的重要手腕是事宜驱动架构和分布式服务。事宜驱动一般应用新闻行列实现,经由过程这类体式格局将新闻消费和处置惩罚逻辑分离隔。服务器服务则是将业务和可复用服务星散开来,经由过程分布式服务框架挪用。新增加产物可用经由过程挪用可复用的服务去实现本身的业务逻辑,而对现有产物没有任何影响。

四、下伸缩性

服务只管同构。DB、cache在思索分布式时只管提早设想好扩大计划。也能够接纳一些支流的对程度伸缩支撑较好的nosql、memcached、hbase等

【编纂推荐】

www.51566.com
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
  •     
分享:
人人皆在看
猜您喜好
  • 7002js金沙平台

编纂推荐

头条
热点
存眷
存眷
聚焦
24H热文
一周话题
本月最赞

定阅专栏

优化运维流水线
共3章 | youerning

198人定阅进修

IT人的职场心法
共22章 | Bear_Boss

79人定阅进修

运维标配手艺
共15章 | one叶孤舟

199人定阅进修

视频课程

讲师:31589人进修过

讲师:42938人进修过

讲师:25875人进修过

CTO品牌

最新专题

7002js金沙平台
精选博文
论坛热帖
下载排行

读 书

SQL Server 2005微软官方威望参考手册。 是Inside Microsoft SQL Server 2005系列书中的第一本,SQL Server类的顶尖之做。 环球公认SQL S...

定阅51CTO邮刊

51CTO服务号

51CTO播客

7002js金沙平台