本篇文章给大家谈谈数据平台架构设计,以及数据平台基本功能对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享数据平台架构设计的知识,其中也会对数据平台基本功能进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
怎样的架构设计才是真正的数据仓库架构
一直想整理一下这块内容,既然是漫谈,就想起什么说什么吧。我一直是在互联网行业,就以互联网行业来说。
先大概列一下互联网行业数据仓库、数据平台的用途:
整合公司所有业务数据,建立统一的数据中心;
提供各种报表,有给高层的,有给各个业务的;
为网站运营提供运营上的数据支持,就是通过数据,让运营及时了解网站和产品的运营效果;
为各个业务提供线上或线下的数据支持,成为公司统一的数据交换与提供平台;
分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果;比如广告定向精准投放、用户个性化推荐等;
开发数据产品,直接或间接为公司盈利;
建设开放数据平台,开放公司数据;
。。。。。。
上面列出的内容看上去和传统行业数据仓库用途差不多,并且都要求数据仓库/数据平台有很好的稳定性、可靠性;但在互联网行业,除了数据量大之外,越来越多的业务要求时效性,甚至很多是要求实时的 ,另外,互联网行业的业务变化非常快,不可能像传统行业一样,可以使用自顶向下的方法建立数据仓库,一劳永逸,它要求新的业务很快能融入数据仓库中来,老的下线的业务,能很方便的从现有的数据仓库中下线;
其实,互联网行业的数据仓库就是所谓的敏捷数据仓库,不但要求能快速的响应数据,也要求能快速的响应业务;
建设敏捷数据仓库,除了对架构技术上的要求之外,还有一个很重要的方面,就是数据建模,如果一上来就想着建立一套能兼容所有数据和业务的数据模型,那就又回到传统数据仓库的建设上了,很难满足对业务变化的快速响应。应对这种情况,一般是先将核心的持久化的业务进行深度建模(比如:基于网站日志建立的网站统计分析模型和用户浏览轨迹模型;基于公司核心用户数据建立的用户模型),其它的业务一般都采用维度+宽表的方式来建立数据模型。这块是后话。
整体架构下面的图是我们目前使用的数据平台架构图,其实大多公司应该都差不多:
请点击输入图片描述
请点击输入图片描述
逻辑上,一般都有数据采集层、数据存储与分析层、数据共享层、数据应用层。可能叫法有所不同,本质上的角色都大同小异。
我们从下往上看:
数据采集数据采集层的任务就是把数据从各种数据源中采集和存储到数据存储上,期间有可能会做一些简单的清洗。
数据源的种类比较多:
网站日志:
作为互联网行业,网站日志占的份额最大,网站日志存储在多台网站日志服务器上,
一般是在每台网站日志服务器上部署flume agent,实时的收集网站日志并存储到HDFS上;
业务数据库:
业务数据库的种类也是多种多样,有Mysql、Oracle、SqlServer等,这时候,我们迫切的需要一种能从各种数据库中将数据同步到HDFS上的工具,Sqoop是一种,但是Sqoop太过繁重,而且不管数据量大小,都需要启动MapReduce来执行,而且需要Hadoop集群的每台机器都能访问业务数据库;应对此场景,淘宝开源的DataX,是一个很好的解决方案(可参考文章 《异构数据源海量数据交换工具-Taobao DataX 下载和使用》),有资源的话,可以基于DataX之上做二次开发,就能非常好的解决,我们目前使用的DataHub也是。
当然,Flume通过配置与开发,也可以实时的从数据库中同步数据到HDFS。
来自于Ftp/Http的数据源:
有可能一些合作伙伴提供的数据,需要通过Ftp/Http等定时获取,DataX也可以满足该需求;
其他数据源:
比如一些手工录入的数据,只需要提供一个接口或小程序,即可完成;
数据存储与分析毋庸置疑,HDFS是大数据环境下数据仓库/数据平台最完美的数据存储解决方案。
离线数据分析与计算,也就是对实时性要求不高的部分,在我看来,Hive还是首当其冲的选择,丰富的数据类型、内置函数;压缩比非常高的ORC文件存储格式;非常方便的SQL支持,使得Hive在基于结构化数据上的统计分析远远比MapReduce要高效的多,一句SQL可以完成的需求,开发MR可能需要上百行代码;
当然,使用Hadoop框架自然而然也提供了MapReduce接口,如果真的很乐意开发Java,或者对SQL不熟,那么也可以使用MapReduce来做分析与计算;Spark是这两年非常火的,经过实践,它的性能的确比MapReduce要好很多,而且和Hive、Yarn结合的越来越好,因此,必须支持使用Spark和SparkSQL来做分析和计算。因为已经有Hadoop Yarn,使用Spark其实是非常容易的,不用单独部署Spark集群,关于Spark On Yarn的相关文章,可参考:《Spark On Yarn系列文章》
实时计算部分,后面单独说。
数据共享这里的数据共享,其实指的是前面数据分析与计算后的结果存放的地方,其实就是关系型数据库和NOSQL数据库;
前面使用Hive、MR、Spark、SparkSQL分析和计算的结果,还是在HDFS上,但大多业务和应用不可能直接从HDFS上获取数据,那么就需要一个数据共享的地方,使得各业务和产品能方便的获取数据; 和数据采集层到HDFS刚好相反,这里需要一个从HDFS将数据同步至其他目标数据源的工具,同样,DataX也可以满足。
另外,一些实时计算的结果数据可能由实时计算模块直接写入数据共享。
数据应用
业务产品
业务产品所使用的数据,已经存在于数据共享层,他们直接从数据共享层访问即可;
报表
同业务产品,报表所使用的数据,一般也是已经统计汇总好的,存放于数据共享层;
即席查询
即席查询的用户有很多,有可能是数据开发人员、网站和产品运营人员、数据分析人员、甚至是部门老大,他们都有即席查询数据的需求;
这种即席查询通常是现有的报表和数据共享层的数据并不能满足他们的需求,需要从数据存储层直接查询。
即席查询一般是通过SQL完成,最大的难度在于响应速度上,使用Hive有点慢,目前我的解决方案是SparkSQL,它的响应速度较Hive快很多,而且能很好的与Hive兼容。
当然,你也可以使用Impala,如果不在乎平台中再多一个框架的话。
OLAP
目前,很多的OLAP工具不能很好的支持从HDFS上直接获取数据,都是通过将需要的数据同步到关系型数据库中做OLAP,但如果数据量巨大的话,关系型数据库显然不行;
这时候,需要做相应的开发,从HDFS或者HBase中获取数据,完成OLAP的功能;
比如:根据用户在界面上选择的不定的维度和指标,通过开发接口,从HBase中获取数据来展示。
其它数据接口
这种接口有通用的,有定制的。比如:一个从Redis中获取用户属性的接口是通用的,所有的业务都可以调用这个接口来获取用户属性。
实时计算现在业务对数据仓库实时性的需求越来越多,比如:实时的了解网站的整体流量;实时的获取一个广告的曝光和点击;在海量数据下,依靠传统数据库和传统实现方法基本完成不了,需要的是一种分布式的、高吞吐量的、延时低的、高可靠的实时计算框架;Storm在这块是比较成熟了,但我选择Spark Streaming,原因很简单,不想多引入一个框架到平台中,另外,Spark Streaming比Storm延时性高那么一点点,那对于我们的需要可以忽略。
我们目前使用Spark Streaming实现了实时的网站流量统计、实时的广告效果统计两块功能。
做法也很简单,由Flume在前端日志服务器上收集网站日志和广告日志,实时的发送给Spark Streaming,由Spark Streaming完成统计,将数据存储至Redis,业务通过访问Redis实时获取。
任务调度与监控在数据仓库/数据平台中,有各种各样非常多的程序和任务,比如:数据采集任务、数据同步任务、数据分析任务等;
这些任务除了定时调度,还存在非常复杂的任务依赖关系,比如:数据分析任务必须等相应的数据采集任务完成后才能开始;数据同步任务需要等数据分析任务完成后才能开始; 这就需要一个非常完善的任务调度与监控系统,它作为数据仓库/数据平台的中枢,负责调度和监控所有任务的分配与运行。
前面有写过文章,《大数据平台中的任务调度与监控》,这里不再累赘。
总结在我看来架构并不是技术越多越新越好,而是在可以满足需求的情况下,越简单越稳定越好。目前在我们的数据平台中,开发更多的是关注业务,而不是技术,他们把业务和需求搞清楚了,基本上只需要做简单的SQL开发,然后配置到调度系统就可以了,如果任务异常,会收到告警。这样,可以使更多的资源专注于业务之上。
大数据架构流程图
大数据管理数据处理过程图
大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理
数据平台架构设计的数据集合,是需要新处理模式才能具有更强
数据平台架构设计的决策力、洞察力。大数据处理的主要流程包括数据收集、数据存储、数据处理、数据应用等主要环节。随着业务的增长,大量和流程、规则相关的非结构化数据也爆发式增长。
平台数据架构流程图
标准大数据平台架构,标准大数据平台架构,大数据平台架构,数据仓库,数据集市,大数据平台层级结构,数据挖掘,举报,包含该模版的分享。数据架构设计(数据架构组) 概述 总体描述 相对于业务架构和应用架构,数据架构在总体架构中处于基础和核心地位。
产品体验结构流程图
产品的功能结构图,产品功能结构图,产品主要流程图,产品的核心流程,
数据平台架构设计我们继续围绕着得到app的核心流程探究。还原产品,产品结构、核心流程体验、核心页面体验的情况,而不仅仅是界面表层;从产品视角、用户视角来分析,而不是自我感觉
数据平台架构设计,撰写报告,推出报告。产品体验从产品现状、目标用户及场景、关键功能体验
程序流程图
程序流程图又称程序框图
数据平台架构设计,是用统一规定的标准符号描述程序运行具体步骤的图形表示。程序框图的设计是在处理流程图的基础上,通过对输入输出数据和处理过程的详细分析,将计算机的主要运行步骤和内容标识出来。
软件开发周期
软件生命周期(Software Life Cycle,SLC)是软件的产生直到报废或停止使用的生命周期。软件生命周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段
软件测试流程鱼骨图
软件测试流程: 需求分析,制订测试计划,设计测试用例与编写,实施测试,提交缺陷报告,生成测试总结和报告。软件测试按照研发阶段一般分为5个部分:单元测试、集成测试、确认测试、系统测试、验收测试。根据设计用例的方法不同,黑盒测试包括等价划分法、边界值分析法、错误推测法、因果图法等。
云平台整体架构图
云计算的体系结构由5部分组成,分别为应用层,平台层,资源层,用户访问层和管理层,云计算的本质是通过网络提供服务,所以其体系结构以服务为核心。公认的云架构是划分为基础设施层、平台层和软件服务层三个层次的。
项目管理九大体系
项目管理思维导图包括项目采购管理、项目成本核算、时间管理等关于项目管理的九大体系。项目管理十大领域:进度、成本、质量、范围等4个核心领域,风险、沟通、采购、人力资源、干系人等5个辅助领域,1个整体领域。
产品经理项目管理思维导图
思维导图可以帮助产品经理梳理多而乱的产品思路,也可以帮助产品经理进行需求管理、产品分析等。产品经理会使用思维导图来对产品的思路进行一个有效的分析,梳理产品逻辑,然后再画原型图。一个优秀的产品经理,不仅仅是会画原型,写需求文档,更重要的是做出用户满意的产品。
项目规划时间轴流程图
项目规划时间轴流程图,对一个项目从开始到竣工的整个过程进行总结归纳。时间线图,又叫时间轴图,能以历史进程为载体,将过往的重要事项或者里程碑,标注在轴线上,并加以说明。它的作用是能够可视化内容,以图文的形式呈现出来。时间轴是一种表达事物发展进程的可视化图示,被许多商业管理人士所使用。
大数据架构师的基本职责
大数据架构师需要参与规划从数据源到数据应用数据平台架构设计的整体流程数据平台架构设计,并参与相关产品的决策。下面是我为您精心整理的大数据架构师的基本职责。
大数据架构师的基本职责1
职责数据平台架构设计:
1.负责整个大数据平台架构的设计和构建;
2.负责构建大数据平台的数据交换、任务调度等通用平台;
3.制定开发、测试、实施、维护的标准和规范数据平台架构设计,指导和培训工程师,不断提升团队能力。
4.参与系统需求分析、架构设计、技术选型、应用设计与开发以及测试与部署,负责编写核心部分代码。
5.持续挑战新的技术方向,攻克大数据量、高并发、高可用、可扩展等技术难点。
任职要求:
1.3年以上大数据架构经验,丰富的数据仓库、数据挖掘、机器学习项目经验
2.大规模数据处理的架构和设计实战经验
3.精通Spark、MR,熟练HDFS、Yarn、Hbase、Hive、MongoDB,熟悉Kafka、Redis、Storm、Mahout、Flume、ElasticSearch、GraphDB(NEO4J或其他)等,并具有丰富的大型数据平台工程经验
4.深刻理解大数据处理(流计算,分布式计算,分布式文件系统,分布式存储等)相关技术和实现方法
5.熟悉主数据、元数据、数据质量等企业数据管理相关的体系和方法,熟练Linux/Unix平台上的开发环境
6.本科或以上学历,计算机软件或相关专业,丰富的java开发经验和互联网背景优先。
7.具有比较强的问题分析和处理能力,有比较优秀的动手能力,热衷技术,精益求精
大数据架构师的基本职责2
职责:
1. 深刻理解政府行业业务模式,构建政府行业的数据模型,制定公司大数据技术发展路线;
2. 对接业务研究和技术部门,主动搜集和转化需求,组织数据中心业务开发,进行数据相关产品需求分析和设计;
3. 搭建数据仓库,研发数据库管理系统,搜集、提取、处理业务积累的海量数据,开展数据分析和挖掘;
4. 根据公司战略和发展需要,规划数据中心重点工作和任务;落实部门人员、事务管理,开展跨部门、跨地区协作,协助对外交流与合作。
职位要求:
1. 5年以上相关工作经验,有团队管理和项目管理经验者优先;
2.了解政府运作机制,掌握财政行业知识,有电子政务行业经验者优先;
3. 熟练掌握使用Java或Python,精通数据库查询语言如SQL,Oracle等,在机器学习模型和算法方向有应用经验者优先;
4. 具备数据中心产品策划整体思维,有大数据处理、分析、挖掘经验者优先;
5. 逻辑思维严密,具备业务抽象、分解和标准化的能力,口头和书面表达优秀;
6. 有较强的大局意识和良好的团队合作意识,富有领导力,具备优秀的人际交往和沟通能力。
大数据架构师的基本职责3
职责:
1、从事电信行业大数据项目相关业务调研、产品标准建设、核心模型设计和优化、系统测试等相关工作
2、与数据专业委员会一起研究数据建模方案和建模工具,负责产品线产品的数据架构、数据模型设计
3、参与研究数据库之间的数据转换方式,参与项目中的数据移植工作,收集在项目中的数据移植经验,优化产品的数据模型
4、负责培训本部门队伍的数据模型基础理论工作,建立数据模型团队
岗位要求:
1、统招本科学历,3年以上主流数据上(DB2、Oracle、SQLServer、Mysql等)ETL设计、开发经验,具备大型数据仓库逻辑模型和物理模型设计经验,精通SQL,有较好的SQL性能调优经验;
2、拥有Python,R等数学建模工具的使用经验,并具备一定的数据处理和建模经验,可以输出相应的模型分析结果、模型比较、模型效率以及对模型的理论和判断依据方法并对其进行完整的解释和说明;
3、熟悉统计学基本原理,做过实战的数据建模项目;
4、有分布式数据仓库建设相关经验者优先,具备电信行业数据仓库建设相关经验者优先;
大数据架构师的基本职责4
职责:
1、负责大数据平台的架构设计、核心代码开发等任务;根据项目要求编写相关技术文档;
2、负责大数据平台的架构评审,代码评审,上线评审;参与数据应用需求、设计、审核和评审;
3、负责核心模块研发,负责大数据平台的搭建,完成系统调试、集成与实施;
4、负责建立和维护大数据平台技术标准规范,指导开发人员编写代码;
任职要求:
1、本科及以上计算机相关专业毕业;
2、精通离线和实时数据处理流程,掌握离线数据处理框架hive、impala、spark-sql等,掌握实时数据处理常用技术工具,包括Storm、SparkStreaming等;
3、熟悉大数据技术生态圈,精通大数据技术架构,有大数据平台构建经验;
4、掌握常见数据流接入工具,包括Flume、kafka等;
5、熟练掌握基本的Linux操作系统和某种脚本语言编程(如Shell等);
6、掌握一种或以上实时处理语言,如JAVA、SCALA、PYTHON等,有SCALA经验者优先;
7、有实际大规模数据(TB级以上)处理经验优先;
大数据架构师的基本职责5
职责:
1、负责公司的大数据处理框架的研发设计工作,梳理可实现方案和技术规范;
2、开发、完善公司大数据平台;参与公司离线、实时大数据处理系统的设计、开发、测试及多个业务模块的自动化集成;
3、负责业务平台数据统计分析模块的设计与规划;
4、负责公司产品研发过程中的数据及存储设计;
5、带领和培养团队完成组织分解的目标;
任职要求:
1、统招本科及以上学历,计算机、软件工程相关专业,至少8年以上工作经验,5年以上大数据开发经验;
2、熟悉Java、Hadoop、HDFS、Hive、HBase、Spark、Storm、Flume等相关技术的基础架构
3、熟悉数据仓库,数据算法,分布式计算技术理论,具有大数据整体系统架构设计经验;
4、熟悉Linux系统,熟练使用shell/perl/python脚本处理问题;
5、对深度学习框架(Tensorflow)和机器学习(svm 随机深林贝叶斯等)有一定了解的优先;
6、能够组织项目开发组协同工作,包括团队沟通、计划、开发环境管理等
大数据架构师岗位的主要职责概述
大数据架构师岗位的主要职责概述 篇1
职责数据平台架构设计:
1、负责大数据平台及BI系统框架设计、规划、技术选型数据平台架构设计,架构设计并完成系统基础服务的开发;
2、负责海量埋点规则、SDK标准化、埋点数据采集、处理及存储数据平台架构设计,业务数据分布存储、流式/实时计算等应用层架构搭建及核心代码实现;
3、开发大数据平台的核心代码,项目敏捷开发流程管理,完成系统调试、集成与实施,对每个项目周期技术难题的解决,保证大数据产品的上线运行;
4、负责大数据平台的架构优化,代码评审,并根据业务需求持续优化数据架构,保证产品的可靠性、稳定性;
5、指导开发人员完成数据模型规划建设,分析模型构建及分析呈现,分享技术经验;
6、有效制定各种突发性研发技术故障的应对预案,有清晰的隐患意识;
7、深入研究大数据相关技术和产品,跟进业界先进技术;
任职要求
1、统计学、应用数学或计算机相关专业大学本科以上学历;
2、熟悉互联网移动端埋点方法(点击和浏览等行为埋点),无埋点方案等,有埋点SDK独立开发经验者优选;
3、熟悉Hadoop,MR/MapReduce,Hdfs,Hbase,Redis,Storm,Python,zookeeper,kafka,flinkHadoop,hive,mahout,flume,ElasticSearch,KafkaPython等,具备实际项目设计及开发经验;
4、熟悉数据采集、数据清洗、分析和建模工作相关技术细节及流程
5、熟悉Liunx/Unix操作系统,能熟练使用shell/perl等脚本语言,熟练掌握java/python/go/C++中一种或多种编程语言
6、具备一定的算法能力,数据平台架构设计了解机器学习/深度学习算法工具使用,有主流大数据计算组件开发和使用经验者优先
7、熟悉大数据可视化工具Tableau/echarts
8、具有较强的执行力,高度的责任感、很强的学习、沟通能力,能够在高压下高效工作;
大数据架构师岗位的主要职责概述 篇2
职责:
根据大数据业务需求,设计大数据方案及架构,实现相关功能;
搭建和维护大数据集群,保证集群规模持续、稳定、高效平稳运行;
负责大数据业务的设计和指导具体开发工作;
负责公司产品研发过程中的数据及存储设计;
针对数据分析工作,能够完成和指导负责业务数据建模。
职位要求:
计算机、自动化或相关专业(如统计学、数学)本科以上学历,3年以上大数据处理相关工作经验;
精通大数据主流框架(如Hadoop、hive、Spark等);
熟悉MySQL、NoSQL(MongoDB、Redis)等主流数据库,以及rabbit MQ等队列技术;
熟悉hadoop/spark生态的原理、特性且有实战开发经验;
熟悉常用的数据挖掘算法优先。
大数据架构师岗位的主要职责概述 篇3
职责:
1、大数据平台架构规划与设计;
2、负责大数据平台技术框架的选型与技术难点攻关;
3、能够独立进行行业大数据应用的整体技术框架、业务框架和系统架构设计和调优等工作,根据系统的业务需求,能够指导开发团队完成实施工作;
4、负责数据基础架构和数据处理体系的升级和优化,不断提升系统的稳定性和效率,为相关的业务提供大数据底层平台的支持和保证;
5、培养和建立大数据团队,对团队进行技术指导。
任职要求:
1、计算机相关专业的背景专业一类院校毕业本科、硕士学位,8年(硕士5年)以上工作经验(至少拥有3年以上大数据项目或产品架构经验);
2、精通Java,J2EE相关技术,精通常见开源框架的架构,精通关系数据库系统(Oracle MySQL等)和noSQL数据存储系统的原理和架构;
3、精通SQL和Mapreduce、Spark处理方法;
4、精通大数据系统架构,熟悉业界数据仓库建模方法及新的建模方法的发展,有DW,BI架构体系的专项建设经验;
5、对大数据体系有深入认识,熟悉Kafka、Hadoop、Hive、HBase、Spark、Storm、greenplum、ES、Redis等大数据技术,并能设计相关数据模型;
6、很强的学习、分析和解决问题能力,可以迅速掌握业务逻辑并转化为技术方案,能独立撰写项目解决方案、项目技术文档;
7、具有较强的内外沟通能力,良好的团队意识和协作精神;
8、机器学习技术、数据挖掘、人工智能经验丰富者优先考虑;
9、具有能源电力行业工作经验者优先。
大数据架构师岗位的主要职责概述 篇4
职责:
1.参与公司数据平台系统规划和架构工作,主导系统的架构设计和项目实施,确保项目质量和关键性能指标达成;
2.统筹和推进制造工厂内部数据系统的构建,搭建不同来源数据之间的逻辑关系,能够为公司运营诊断、运营效率提升提供数据支持;
3.负责数据系统需求对接、各信息化系统数据对接、软件供应商管理工作
5.根据现状制定总体的数据治理方案及数据体系建立,包括数据采集、接入、分类、开发标准和规范,制定全链路数据治理方案;深入挖掘公司数据业务,超强的数据业务感知力,挖掘数据价值,推动数据变现场景的落地,为决策及业务赋能;
6.定义不同的数据应用场景,推动公司的数据可视化工作,提升公司数据分析效率和数据价值转化。
任职要求:
1.本科以上学历,8年以上软件行业从业经验,5年以上大数据架构设计经验,熟悉BI平台、大数据系统相关技术架构及技术标准;
2.熟悉数据仓库、熟悉数据集市,了解数据挖掘、数据抽取、数据清洗、数据建模相关技术;
3.熟悉大数据相关技术:Hadoop、Hive、Hbase、Storm、Flink、Spark、Kafka、RabbitMQ;
4.熟悉制造企业信息化系统及相关数据库技术;
5.具备大数据平台、计算存储平台、可视化开发平台经验,具有制造企业大数据系统项目开发或实施经验优先;
6.对数据敏感,具备优秀的业务需求分析和报告展示能力,具备制造企业数据分析和数据洞察、大数据系统的架构设计能力,了解主流的报表工具或新兴的前端报表工具;
7.有较强的沟通和组织协调能力,具备结果导向思维,有相关项目管理经验优先。
大数据架构师岗位的.主要职责概述 篇5
职责:
1.负责产品级业务系统架构(如业务数据对象识别,数据实体、数据属性分析,数据标准、端到端数据流等)的设计与优化。协助推动跨领域重大数据问题的分析、定位、解决方案设计,从架构设计上保障系统高性能、高可用性、高安全性、高时效性、分布式扩展性,并对系统质量负责。
2.负责云数据平台的架构设计和数据处理体系的优化,推动云数据平台建设和持续升级,并制定云数据平台调用约束和规范。
3.结合行业应用的需求负责数据流各环节上的方案选型,主导云数据平台建设,参与核心代码编写、审查;数据的统计逻辑回归算法、实时交互分析;数据可视化方案等等的选型、部署、集成融合等等。
4.对云数据平台的关注业内技术动态,持续推动平台技术架构升级,以满足公司不同阶段的数据需求。
任职要求:
1.熟悉云计算基础平台,包括Linux(Ubuntu/CentOS)和KVM、OpenStack/K8S等基础环境,熟悉控制、计算、存储和网络;
2.掌握大型分布式系统的技术栈,如:CDN、负载均衡、服务化/异步化、分布式缓存、NoSQL、数据库垂直及水平扩容;熟悉大数据应用端到端的相关高性能产品。
3.精通Java,Python,Shell编程语言,精通SQL、NoSQL等数据库增删改查的操作优化;
4.PB级别实战数据平台和生产环境的实施、开发和管理经验;
5.熟悉Docker等容器的编排封装,熟悉微服务的开发和日常调度;
6.计算机、软件、电子信息及通信等相关专业本科以上学历,5年以上软件工程开发经验,2年以上大数据架构师工作经验。
大数据架构师岗位的主要职责概述 篇6
职责描述:
1、负责集团大数据资产库的技术架构、核心设计方案,并推动落地数据平台架构设计;
2、带领大数据技术团队实现各项数据接入、数据挖掘分析及数据可视化;
3、新技术预研,解决团队技术难题。
任职要求:
1、在技术领域有5年以上相关经验,3年以上的架构设计或产品经理经验;
2、具有2年以上大数据产品和数据分析相关项目经验;
3、精通大数据分布式系统(hadoop、spark、hive等)的架构原理、技术设计;精通linux系统;精通一门主流编程语言,java优先。
大数据架构师岗位的主要职责概述 篇7
岗位职责:
1、基于公司大数据基础和数据资产积累,负责大数据应用整体技术架构的设计、优化,建设大数据能力开放平台;负责大数据应用产品的架构设计、技术把控工作。
2、负责制定大数据应用系统的数据安全管控体系和数据使用规范。
3、作为大数据技术方案到产品实现的技术负责人,负责关键技术点攻坚工作,负责内部技术推广、培训及知识转移工作。
4、负责大数据系统研发项目任务规划、整体进度、风险把控,有效协同团队成员并组织跨团队技术协作,保证项目质量与进度。
5、负责提升产品技术团队的技术影响力,针对新人、普通开发人员进行有效辅导,帮助其快速成长。
任职资格:
1、计算机、数学或相关专业本科以上学历,5—20xx年工作经验,具有大型系统的技术架构应用架构数据架构相关的实践工作经验。
2、有分布式系统分析及架构设计经验,熟悉基于计算集群的软件系统架构和实施经验。
3、掌握Hadoop/Spark/Storm生态圈的主流技术及产品,深入了解Hadoop/Spark/Storm生态圈产品的工作原理及应用场景。
4、掌握Mysql/Oracle等常用关系型数据库,能够对SQL进行优化。
5、熟悉分布式系统基础设施中常用的技术,如缓存(Varnish、Memcache、Redis)、消息中间件(Rabbit MQ、Active MQ、Kafka、NSQ)等;有实践经验者优先。
6、熟悉Linux,Java基础扎实,至少3—5年以上Java应用开发经验,熟悉常用的设计模式和开源框架。
大数据架构师岗位的主要职责概述 篇8
岗位职责:
1、负责公司大数据平台架构的技术选型和技术难点攻关工作;
2、依据行业数据现状和客户需求,完成行业大数据的特定技术方案设计与撰写;
3、负责研究跟进大数据架构领域新兴技术并在公司内部进行分享;
4、参与公司大数据项目的技术交流、解决方案定制以及项目的招投标工作;
5、参与公司大数据项目前期的架构设计工作;
任职要求:
1、计算机及相关专业本科以上,5年以上数据类项目(数据仓库、商务智能)实施经验,至少2年以上大数据架构设计和开发经验,至少主导过一个大数据平台项目架构设计;
2、精通大数据生态圈的技术,包括但不限于MapReduce、Spark、Hadoop、Kafka、Mongodb、Redis、Flume、Storm、Hbase、Hive,具备数据统计查询性能优化能力。熟悉星环大数据产品线及有过产品项目实施经验者优先;
3、优秀的方案撰写能力,思路清晰,逻辑思维强,能够根据业务需求设计合理的解决方案;
4、精通ORACLE、DB2、mySql等主流关系型数据库,熟悉数据仓库建设思路和数据分层架构思想;
5。熟练掌握java、R、python等1—2门数据挖掘开发语言;
6。熟悉云服务平台及微服务相关架构思想和技术路线,熟悉阿里云或腾讯云产品者优先;
7、有烟草或制造行业大数据解决方案售前经验者优先;
8、能适应售前支持和项目实施需要的短期出差;
大数据架构师岗位的主要职责概述 篇9
岗位职责:
1、负责相关开源系统/组件的性能、稳定性、可靠性等方面的深度优化;
2、负责解决项目上线后生产环境的各种实际问题,保障大数据平台在生产上的安全、平稳运行;
3、推动优化跨部门的业务流程,参与业务部门的技术方案设计、评审、指导;
4、负责技术团队人员培训、人员成长指导。
5、应项目要求本月办公地址在锦江区金石路316号新希望中鼎国际办公,月底项目结束后在总部公司办公
任职要求:
1、熟悉linux、JVM底层原理,能作为技术担当,解决核心技术问题;
2、3年以上大数据平台项目架构或开发经验,对大数据生态技术体系有全面了解,如Yarn、Spark、HBase、Hive、Elasticsearch、Kafka、PrestoDB、Phoenix等;
3、掌握git、maven、gradle、junit等工具和实践,注重文档管理、注重工程规范优先;
4、熟悉Java后台开发体系,具备微服务架构的项目实施经验,有Dubbo/Spring cloud微服务架构设计经验优先;
5、性格开朗、善于沟通,有极强的技术敏感性和自我驱动学习能力,注重团队意识。
大数据架构师岗位的主要职责概述 篇10
职责描述:
1、负责大数据平台框架的规划设计、搭建、优化和运维;
2、负责架构持续优化及系统关键模块的设计开发,协助团队解决开发过程中的技术难题;
3、负责大数据相关新技术的调研,关注大数据技术发展趋势、研究开源技术、将新技术应用到大数据平台,推动数据平台发展;
4、负责数据平台开发规范制定,数据建模及核心框架开发。
任职要求:
1、计算机、数学等专业本科及以上学历;
2、具有5年及以上大数据相关工作经验;
3、具有扎实的大数据和数据仓库的理论功底,负责过大数据平台或数据仓库设计;
4、基于hadoop的大数据体系有深入认识,具备相关产品(hadoop、hive、hbase、spark、storm、 flume、kafka、es等)项目应用研发经验,有hadoop集群搭建和管理经验;
5、熟悉传统数据仓库数据建模,etl架构和开发流程,使用过kettle、talend、informatic等至少一种工具;
6、自驱力强、优秀的团队意识和沟通能力,对新技术有好奇心,学习能力和主动性强,有钻研精神,充满激情,乐于接受挑战;
五种大数据处理架构
五种大数据处理架构
大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模,以及价值在最近几年才经历了大规模扩展。
本文将介绍大数据系统一个最基本的组件:处理框架。处理框架负责对系统中的数据进行计算,例如处理从非易失存储中读取的数据,或处理刚刚摄入到系统中的数据。数据的计算则是指从大量单一数据点中提取信息和见解的过程。
下文将介绍这些框架:
· 仅批处理框架:
Apache Hadoop
· 仅流处理框架:
Apache Storm
Apache Samza
· 混合框架:
Apache Spark
Apache Flink
大数据处理框架是什么?
处理框架和处理引擎负责对数据系统中的数据进行计算。虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。
例如Apache Hadoop可以看作一种以MapReduce作为默认处理引擎的处理框架。引擎和框架通常可以相互替换或同时使用。例如另一个框架Apache Spark可以纳入Hadoop并取代MapReduce。组件之间的这种互操作性是大数据系统灵活性如此之高的原因之一。
虽然负责处理生命周期内这一阶段数据的系统通常都很复杂,但从广义层面来看它们的目标是非常一致的:通过对数据执行操作提高理解能力,揭示出数据蕴含的模式,并针对复杂互动获得见解。
为了简化这些组件的讨论,我们会通过不同处理框架的设计意图,按照所处理的数据状态对其进行分类。一些系统可以用批处理方式处理数据,一些系统可以用流方式处理连续不断流入系统的数据。此外还有一些系统可以同时处理这两类数据。
在深入介绍不同实现的指标和结论之前,首先需要对不同处理类型的概念进行一个简单的介绍。
批处理系统
批处理在大数据世界有着悠久的历史。批处理主要操作大容量静态数据集,并在计算过程完成后返回结果。
批处理模式中使用的数据集通常符合下列特征…
· 有界:批处理数据集代表数据的有限集合
· 持久:数据通常始终存储在某种类型的持久存储位置中
· 大量:批处理操作通常是处理极为海量数据集的唯一方法
批处理非常适合需要访问全套记录才能完成的计算工作。例如在计算总数和平均数时,必须将数据集作为一个整体加以处理,而不能将其视作多条记录的集合。这些操作要求在计算进行过程中数据维持自己的状态。
需要处理大量数据的任务通常最适合用批处理操作进行处理。无论直接从持久存储设备处理数据集,或首先将数据集载入内存,批处理系统在设计过程中就充分考虑了数据的量,可提供充足的处理资源。由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史数据进行分析。
大量数据的处理需要付出大量时间,因此批处理不适合对处理时间要求较高的场合。
Apache Hadoop
Apache Hadoop是一种专用于批处理的处理框架。Hadoop是首个在开源社区获得极大关注的大数据框架。基于谷歌有关海量数据处理所发表的多篇论文与经验的Hadoop重新实现了相关算法和组件堆栈,让大规模批处理技术变得更易用。
新版Hadoop包含多个组件,即多个层,通过配合使用可处理批数据:
· HDFS:HDFS是一种分布式文件系统层,可对集群节点间的存储和复制进行协调。HDFS确保了无法避免的节点故障发生后数据依然可用,可将其用作数据来源,可用于存储中间态的处理结果,并可存储计算的最终结果。
· YARN:YARN是Yet Another Resource Negotiator(另一个资源管理器)的缩写,可充当Hadoop堆栈的集群协调组件。该组件负责协调并管理底层资源和调度作业的运行。通过充当集群资源的接口,YARN使得用户能在Hadoop集群中使用比以往的迭代方式运行更多类型的工作负载。
· MapReduce:MapReduce是Hadoop的原生批处理引擎。
批处理模式
Hadoop的处理功能来自MapReduce引擎。MapReduce的处理技术符合使用键值对的map、shuffle、reduce算法要求。基本处理过程包括:
· 从HDFS文件系统读取数据集
· 将数据集拆分成小块并分配给所有可用节点
· 针对每个节点上的数据子集进行计算(计算的中间态结果会重新写入HDFS)
· 重新分配中间态结果并按照键进行分组
· 通过对每个节点计算的结果进行汇总和组合对每个键的值进行“Reducing”
· 将计算而来的最终结果重新写入 HDFS
优势和局限
由于这种方法严重依赖持久存储,每个任务需要多次执行读取和写入操作,因此速度相对较慢。但另一方面由于磁盘空间通常是服务器上最丰富的资源,这意味着MapReduce可以处理非常海量的数据集。同时也意味着相比其他类似技术,Hadoop的MapReduce通常可以在廉价硬件上运行,因为该技术并不需要将一切都存储在内存中。MapReduce具备极高的缩放潜力,生产环境中曾经出现过包含数万个节点的应用。
MapReduce的学习曲线较为陡峭,虽然Hadoop生态系统的其他周边技术可以大幅降低这一问题的影响,但通过Hadoop集群快速实现某些应用时依然需要注意这个问题。
围绕Hadoop已经形成了辽阔的生态系统,Hadoop集群本身也经常被用作其他软件的组成部件。很多其他处理框架和引擎通过与Hadoop集成也可以使用HDFS和YARN资源管理器。
总结
Apache Hadoop及其MapReduce处理引擎提供了一套久经考验的批处理模型,最适合处理对时间要求不高的非常大规模数据集。通过非常低成本的组件即可搭建完整功能的Hadoop集群,使得这一廉价且高效的处理技术可以灵活应用在很多案例中。与其他框架和引擎的兼容与集成能力使得Hadoop可以成为使用不同技术的多种工作负载处理平台的底层基础。
流处理系统
流处理系统会对随时进入系统的数据进行计算。相比批处理模式,这是一种截然不同的处理方式。流处理方式无需针对整个数据集执行操作,而是对通过系统传输的每个数据项执行操作。
· 流处理中的数据集是“无边界”的,这就产生了几个重要的影响:
· 完整数据集只能代表截至目前已经进入到系统中的数据总量。
· 工作数据集也许更相关,在特定时间只能代表某个单一数据项。
处理工作是基于事件的,除非明确停止否则没有“尽头”。处理结果立刻可用,并会随着新数据的抵达继续更新。
流处理系统可以处理几乎无限量的数据,但同一时间只能处理一条(真正的流处理)或很少量(微批处理,Micro-batch Processing)数据,不同记录间只维持最少量的状态。虽然大部分系统提供了用于维持某些状态的方法,但流处理主要针对副作用更少,更加功能性的处理(Functional processing)进行优化。
功能性操作主要侧重于状态或副作用有限的离散步骤。针对同一个数据执行同一个操作会或略其他因素产生相同的结果,此类处理非常适合流处理,因为不同项的状态通常是某些困难、限制,以及某些情况下不需要的结果的结合体。因此虽然某些类型的状态管理通常是可行的,但这些框架通常在不具备状态管理机制时更简单也更高效。
此类处理非常适合某些类型的工作负载。有近实时处理需求的任务很适合使用流处理模式。分析、服务器或应用程序错误日志,以及其他基于时间的衡量指标是最适合的类型,因为对这些领域的数据变化做出响应对于业务职能来说是极为关键的。流处理很适合用来处理必须对变动或峰值做出响应,并且关注一段时间内变化趋势的数据。
Apache Storm
Apache Storm是一种侧重于极低延迟的流处理框架,也许是要求近实时处理的工作负载的最佳选择。该技术可处理非常大量的数据,通过比其他解决方案更低的延迟提供结果。
流处理模式
Storm的流处理可对框架中名为Topology(拓扑)的DAG(Directed Acyclic Graph,有向无环图)进行编排。这些拓扑描述了当数据片段进入系统后,需要对每个传入的片段执行的不同转换或步骤。
拓扑包含:
· Stream:普通的数据流,这是一种会持续抵达系统的无边界数据。
· Spout:位于拓扑边缘的数据流来源,例如可以是API或查询等,从这里可以产生待处理的数据。
· Bolt:Bolt代表需要消耗流数据,对其应用操作,并将结果以流的形式进行输出的处理步骤。Bolt需要与每个Spout建立连接,随后相互连接以组成所有必要的处理。在拓扑的尾部,可以使用最终的Bolt输出作为相互连接的其他系统的输入。
Storm背后的想法是使用上述组件定义大量小型的离散操作,随后将多个组件组成所需拓扑。默认情况下Storm提供了“至少一次”的处理保证,这意味着可以确保每条消息至少可以被处理一次,但某些情况下如果遇到失败可能会处理多次。Storm无法确保可以按照特定顺序处理消息。
为了实现严格的一次处理,即有状态处理,可以使用一种名为Trident的抽象。严格来说不使用Trident的Storm通常可称之为Core Storm。Trident会对Storm的处理能力产生极大影响,会增加延迟,为处理提供状态,使用微批模式代替逐项处理的纯粹流处理模式。
为避免这些问题,通常建议Storm用户尽可能使用Core Storm。然而也要注意,Trident对内容严格的一次处理保证在某些情况下也比较有用,例如系统无法智能地处理重复消息时。如果需要在项之间维持状态,例如想要计算一个小时内有多少用户点击了某个链接,此时Trident将是你唯一的选择。尽管不能充分发挥框架与生俱来的优势,但Trident提高了Storm的灵活性。
Trident拓扑包含:
· 流批(Stream batch):这是指流数据的微批,可通过分块提供批处理语义。
· 操作(Operation):是指可以对数据执行的批处理过程。
优势和局限
目前来说Storm可能是近实时处理领域的最佳解决方案。该技术可以用极低延迟处理数据,可用于希望获得最低延迟的工作负载。如果处理速度直接影响用户体验,例如需要将处理结果直接提供给访客打开的网站页面,此时Storm将会是一个很好的选择。
Storm与Trident配合使得用户可以用微批代替纯粹的流处理。虽然借此用户可以获得更大灵活性打造更符合要求的工具,但同时这种做法会削弱该技术相比其他解决方案最大的优势。话虽如此,但多一种流处理方式总是好的。
Core Storm无法保证消息的处理顺序。Core Storm为消息提供了“至少一次”的处理保证,这意味着可以保证每条消息都能被处理,但也可能发生重复。Trident提供了严格的一次处理保证,可以在不同批之间提供顺序处理,但无法在一个批内部实现顺序处理。
在互操作性方面,Storm可与Hadoop的YARN资源管理器进行集成,因此可以很方便地融入现有Hadoop部署。除了支持大部分处理框架,Storm还可支持多种语言,为用户的拓扑定义提供了更多选择。
总结
对于延迟需求很高的纯粹的流处理工作负载,Storm可能是最适合的技术。该技术可以保证每条消息都被处理,可配合多种编程语言使用。由于Storm无法进行批处理,如果需要这些能力可能还需要使用其他软件。如果对严格的一次处理保证有比较高的要求,此时可考虑使用Trident。不过这种情况下其他流处理框架也许更适合。
Apache Samza
Apache Samza是一种与Apache Kafka消息系统紧密绑定的流处理框架。虽然Kafka可用于很多流处理系统,但按照设计,Samza可以更好地发挥Kafka独特的架构优势和保障。该技术可通过Kafka提供容错、缓冲,以及状态存储。
Samza可使用YARN作为资源管理器。这意味着默认情况下需要具备Hadoop集群(至少具备HDFS和YARN),但同时也意味着Samza可以直接使用YARN丰富的内建功能。
流处理模式
Samza依赖Kafka的语义定义流的处理方式。Kafka在处理数据时涉及下列概念:
· Topic(话题):进入Kafka系统的每个数据流可称之为一个话题。话题基本上是一种可供消耗方订阅的,由相关信息组成的数据流。
· Partition(分区):为了将一个话题分散至多个节点,Kafka会将传入的消息划分为多个分区。分区的划分将基于键(Key)进行,这样可以保证包含同一个键的每条消息可以划分至同一个分区。分区的顺序可获得保证。
· Broker(代理):组成Kafka集群的每个节点也叫做代理。
· Producer(生成方):任何向Kafka话题写入数据的组件可以叫做生成方。生成方可提供将话题划分为分区所需的键。
· Consumer(消耗方):任何从Kafka读取话题的组件可叫做消耗方。消耗方需要负责维持有关自己分支的信息,这样即可在失败后知道哪些记录已经被处理过了。
由于Kafka相当于永恒不变的日志,Samza也需要处理永恒不变的数据流。这意味着任何转换创建的新数据流都可被其他组件所使用,而不会对最初的数据流产生影响。
优势和局限
乍看之下,Samza对Kafka类查询系统的依赖似乎是一种限制,然而这也可以为系统提供一些独特的保证和功能,这些内容也是其他流处理系统不具备的。
例如Kafka已经提供了可以通过低延迟方式访问的数据存储副本,此外还可以为每个数据分区提供非常易用且低成本的多订阅者模型。所有输出内容,包括中间态的结果都可写入到Kafka,并可被下游步骤独立使用。
这种对Kafka的紧密依赖在很多方面类似于MapReduce引擎对HDFS的依赖。虽然在批处理的每个计算之间对HDFS的依赖导致了一些严重的性能问题,但也避免了流处理遇到的很多其他问题。
Samza与Kafka之间紧密的关系使得处理步骤本身可以非常松散地耦合在一起。无需事先协调,即可在输出的任何步骤中增加任意数量的订阅者,对于有多个团队需要访问类似数据的组织,这一特性非常有用。多个团队可以全部订阅进入系统的数据话题,或任意订阅其他团队对数据进行过某些处理后创建的话题。这一切并不会对数据库等负载密集型基础架构造成额外的压力。
直接写入Kafka还可避免回压(Backpressure)问题。回压是指当负载峰值导致数据流入速度超过组件实时处理能力的情况,这种情况可能导致处理工作停顿并可能丢失数据。按照设计,Kafka可以将数据保存很长时间,这意味着组件可以在方便的时候继续进行处理,并可直接重启动而无需担心造成任何后果。
Samza可以使用以本地键值存储方式实现的容错检查点系统存储数据。这样Samza即可获得“至少一次”的交付保障,但面对由于数据可能多次交付造成的失败,该技术无法对汇总后状态(例如计数)提供精确恢复。
Samza提供的高级抽象使其在很多方面比Storm等系统提供的基元(Primitive)更易于配合使用。目前Samza只支持JVM语言,这意味着它在语言支持方面不如Storm灵活。
总结
对于已经具备或易于实现Hadoop和Kafka的环境,Apache Samza是流处理工作负载一个很好的选择。Samza本身很适合有多个团队需要使用(但相互之间并不一定紧密协调)不同处理阶段的多个数据流的组织。Samza可大幅简化很多流处理工作,可实现低延迟的性能。如果部署需求与当前系统不兼容,也许并不适合使用,但如果需要极低延迟的处理,或对严格的一次处理语义有较高需求,此时依然适合考虑。
混合处理系统:批处理和流处理
一些处理框架可同时处理批处理和流处理工作负载。这些框架可以用相同或相关的组件和API处理两种类型的数据,借此让不同的处理需求得以简化。
如你所见,这一特性主要是由Spark和Flink实现的,下文将介绍这两种框架。实现这样的功能重点在于两种不同处理模式如何进行统一,以及要对固定和不固定数据集之间的关系进行何种假设。
虽然侧重于某一种处理类型的项目会更好地满足具体用例的要求,但混合框架意在提供一种数据处理的通用解决方案。这种框架不仅可以提供处理数据所需的方法,而且提供了自己的集成项、库、工具,可胜任图形分析、机器学习、交互式查询等多种任务。
Apache Spark
Apache Spark是一种包含流处理能力的下一代批处理框架。与Hadoop的MapReduce引擎基于各种相同原则开发而来的Spark主要侧重于通过完善的内存计算和处理优化机制加快批处理工作负载的运行速度。
Spark可作为独立集群部署(需要相应存储层的配合),或可与Hadoop集成并取代MapReduce引擎。
批处理模式
与MapReduce不同,Spark的数据处理工作全部在内存中进行,只在一开始将数据读入内存,以及将最终结果持久存储时需要与存储层交互。所有中间态的处理结果均存储在内存中。
虽然内存中处理方式可大幅改善性能,Spark在处理与磁盘有关的任务时速度也有很大提升,因为通过提前对整个任务集进行分析可以实现更完善的整体式优化。为此Spark可创建代表所需执行的全部操作,需要操作的数据,以及操作和数据之间关系的Directed Acyclic Graph(有向无环图),即DAG,借此处理器可以对任务进行更智能的协调。
为了实现内存中批计算,Spark会使用一种名为Resilient Distributed Dataset(弹性分布式数据集),即RDD的模型来处理数据。这是一种代表数据集,只位于内存中,永恒不变的结构。针对RDD执行的操作可生成新的RDD。每个RDD可通过世系(Lineage)回溯至父级RDD,并最终回溯至磁盘上的数据。Spark可通过RDD在无需将每个操作的结果写回磁盘的前提下实现容错。
流处理模式
流处理能力是由Spark Streaming实现的。Spark本身在设计上主要面向批处理工作负载,为了弥补引擎设计和流处理工作负载特征方面的差异,Spark实现了一种叫做微批(Micro-batch)*的概念。在具体策略方面该技术可以将数据流视作一系列非常小的“批”,借此即可通过批处理引擎的原生语义进行处理。
Spark Streaming会以亚秒级增量对流进行缓冲,随后这些缓冲会作为小规模的固定数据集进行批处理。这种方式的实际效果非常好,但相比真正的流处理框架在性能方面依然存在不足。
优势和局限
使用Spark而非Hadoop MapReduce的主要原因是速度。在内存计算策略和先进的DAG调度等机制的帮助下,Spark可以用更快速度处理相同的数据集。
Spark的另一个重要优势在于多样性。该产品可作为独立集群部署,或与现有Hadoop集群集成。该产品可运行批处理和流处理,运行一个集群即可处理不同类型的任务。
除了引擎自身的能力外,围绕Spark还建立了包含各种库的生态系统,可为机器学习、交互式查询等任务提供更好的支持。相比MapReduce,Spark任务更是“众所周知”地易于编写,因此可大幅提高生产力。
为流处理系统采用批处理的方法,需要对进入系统的数据进行缓冲。缓冲机制使得该技术可以处理非常大量的传入数据,提高整体吞吐率,但等待缓冲区清空也会导致延迟增高。这意味着Spark Streaming可能不适合处理对延迟有较高要求的工作负载。
由于内存通常比磁盘空间更贵,因此相比基于磁盘的系统,Spark成本更高。然而处理速度的提升意味着可以更快速完成任务,在需要按照小时数为资源付费的环境中,这一特性通常可以抵消增加的成本。
Spark内存计算这一设计的另一个后果是,如果部署在共享的集群中可能会遇到资源不足的问题。相比HadoopMapReduce,Spark的资源消耗更大,可能会对需要在同一时间使用集群的其他任务产生影响。从本质来看,Spark更不适合与Hadoop堆栈的其他组件共存一处。
总结
Spark是多样化工作负载处理任务的最佳选择。Spark批处理能力以更高内存占用为代价提供了无与伦比的速度优势。对于重视吞吐率而非延迟的工作负载,则比较适合使用Spark Streaming作为流处理解决方案。
Apache Flink
Apache Flink是一种可以处理批处理任务的流处理框架。该技术可将批处理数据视作具备有限边界的数据流,借此将批处理任务作为流处理的子集加以处理。为所有处理任务采取流处理为先的方法会产生一系列有趣的副作用。
这种流处理为先的方法也叫做Kappa架构,与之相对的是更加被广为人知的Lambda架构(该架构中使用批处理作为主要处理方法,使用流作为补充并提供早期未经提炼的结果)。Kappa架构中会对一切进行流处理,借此对模型进行简化,而这一切是在最近流处理引擎逐渐成熟后才可行的。
流处理模型
Flink的流处理模型在处理传入数据时会将每一项视作真正的数据流。Flink提供的DataStream API可用于处理无尽的数据流。Flink可配合使用的基本组件包括:
· Stream(流)是指在系统中流转的,永恒不变的无边界数据集
· Operator(操作方)是指针对数据流执行操作以产生其他数据流的功能
· Source(源)是指数据流进入系统的入口点
· Sink(槽)是指数据流离开Flink系统后进入到的位置,槽可以是数据库或到其他系统的连接器
为了在计算过程中遇到问题后能够恢复,流处理任务会在预定时间点创建快照。为了实现状态存储,Flink可配合多种状态后端系统使用,具体取决于所需实现的复杂度和持久性级别。
此外Flink的流处理能力还可以理解“事件时间”这一概念,这是指事件实际发生的时间,此外该功能还可以处理会话。这意味着可以通过某种有趣的方式确保执行顺序和分组。
批处理模型
Flink的批处理模型在很大程度上仅仅是对流处理模型的扩展。此时模型不再从持续流中读取数据,而是从持久存储中以流的形式读取有边界的数据集。Flink会对这些处理模型使用完全相同的运行时。
Flink可以对批处理工作负载实现一定的优化。例如由于批处理操作可通过持久存储加以支持,Flink可以不对批处理工作负载创建快照。数据依然可以恢复,但常规处理操作可以执行得更快。
另一个优化是对批处理任务进行分解,这样即可在需要的时候调用不同阶段和组件。借此Flink可以与集群的其他用户更好地共存。对任务提前进行分析使得Flink可以查看需要执行的所有操作、数据集的大小,以及下游需要执行的操作步骤,借此实现进一步的优化。
优势和局限
Flink目前是处理框架领域一个独特的技术。虽然Spark也可以执行批处理和流处理,但Spark的流处理采取的微批架构使其无法适用于很多用例。Flink流处理为先的方法可提供低延迟,高吞吐率,近乎逐项处理的能力。
Flink的很多组件是自行管理的。虽然这种做法较为罕见,但出于性能方面的原因,该技术可自行管理内存,无需依赖原生的Java垃圾回收机制。与Spark不同,待处理数据的特征发生变化后Flink无需手工优化和调整,并且该技术也可以自行处理数据分区和自动缓存等操作。
Flink会通过多种方式对工作进行分许进而优化任务。这种分析在部分程度上类似于SQL查询规划器对关系型数据库所做的优化,可针对特定任务确定最高效的实现方法。该技术还支持多阶段并行执行,同时可将受阻任务的数据集合在一起。对于迭代式任务,出于性能方面的考虑,Flink会尝试在存储数据的节点上执行相应的计算任务。此外还可进行“增量迭代”,或仅对数据中有改动的部分进行迭代。
在用户工具方面,Flink提供了基于Web的调度视图,借此可轻松管理任务并查看系统状态。用户也可以查看已提交任务的优化方案,借此了解任务最终是如何在集群中实现的。对于分析类任务,Flink提供了类似SQL的查询,图形化处理,以及机器学习库,此外还支持内存计算。
Flink能很好地与其他组件配合使用。如果配合Hadoop 堆栈使用,该技术可以很好地融入整个环境,在任何时候都只占用必要的资源。该技术可轻松地与YARN、HDFS和Kafka 集成。在兼容包的帮助下,Flink还可以运行为其他处理框架,例如Hadoop和Storm编写的任务。
目前Flink最大的局限之一在于这依然是一个非常“年幼”的项目。现实环境中该项目的大规模部署尚不如其他处理框架那么常见,对于Flink在缩放能力方面的局限目前也没有较为深入的研究。随着快速开发周期的推进和兼容包等功能的完善,当越来越多的组织开始尝试时,可能会出现越来越多的Flink部署
总结
Flink提供了低延迟流处理,同时可支持传统的批处理任务。Flink也许最适合有极高流处理需求,并有少量批处理任务的组织。该技术可兼容原生Storm和Hadoop程序,可在YARN管理的集群上运行,因此可以很方便地进行评估。快速进展的开发工作使其值得被大家关注。
结论
大数据系统可使用多种处理技术。
对于仅需要批处理的工作负载,如果对时间不敏感,比其他解决方案实现成本更低的Hadoop将会是一个好选择。
对于仅需要流处理的工作负载,Storm可支持更广泛的语言并实现极低延迟的处理,但默认配置可能产生重复结果并且无法保证顺序。Samza与YARN和Kafka紧密集成可提供更大灵活性,更易用的多团队使用,以及更简单的复制和状态管理。
对于混合型工作负载,Spark可提供高速批处理和微批处理模式的流处理。该技术的支持更完善,具备各种集成库和工具,可实现灵活的集成。Flink提供了真正的流处理并具备批处理能力,通过深度优化可运行针对其他平台编写的任务,提供低延迟的处理,但实际应用方面还为时过早。
最适合的解决方案主要取决于待处理数据的状态,对处理所需时间的需求,以及希望得到的结果。具体是使用全功能解决方案或主要侧重于某种项目的解决方案,这个问题需要慎重权衡。随着逐渐成熟并被广泛接受,在评估任何新出现的创新型解决方案时都需要考虑类似的问题。
哪种数据仓库架构最成功?
”的争论一直没有休止,这个问题同时也是企业在建立DW时需要决策的关键问题。Bill Inmon的集线器架构/企业信息工厂架构(Hub and Spoke / CIF – Corporate Information Factory)与Ralph Kimball的数据集市/数据仓库总线架构(Data Mart Bus Architecture/Data Warehouse Bus Architecture)则是DW架构的争论焦点。但是,这些争论一直无法形成统一的结论。到底哪种DW架构最好,不同的BI/DW从业者在不同的项目中,面对不同企业的不同情况时,往往持有不同的说法。2005 年,Thilini Ariyachandra 与Hugh Watson针对DW架构做了一个深入的调查,调查题目为“哪种数据仓库最成功?”,受访者由454位曾在各种不同规模的企业(绝大多数是美国企业)中参与了DW规划与实施的人员组成,受访者根据DW应用实际情况及经验体会做出回答。为了合理设计调查问卷,在调查问卷中合理设置调查对象(参与调查的DW架构)和评判标准(影响DW架构选择的因素及判断DW架构成功的因素等)等内容,Watson和Ariyachandra邀请了20位专家组成专家组设计调查问卷及判断标准等,这20位专家包括了DW领域的两位先驱——赫赫有名的Bill Inmon和Ralph Kimball。因此我们可以认为这份调查的结果是权威可信的。
关于数据平台架构设计和数据平台基本功能的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
数据平台架构设计的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于数据平台基本功能、数据平台架构设计的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~