《2023离线和实时大数据开发实战.docx》由会员分享,可在线阅读,更多相关《2023离线和实时大数据开发实战.docx(259页珍藏版)》请在课桌文档上搜索。
1、离线和实时大数据开发实战I第1章数据大图2 1.1数据流程3 1.2数据技术4 1.3数据相关从业者和角色5 1.4本章小结6第2章数据平台大图7 2.1离线数据平台的架构、技术和设计8 2.2实时数据平台的架构、技术和设计9 2.3数据管理I)2.4本章小结Il第二篇离线数据开发:大数据开发的主战场12第3章H章OOD原理实践B3.1开启大数据时代的HadoODK3.2HDFS和MaPRedUCe优缺点分析153.3HDFS和MaDRedUCe基本架构63.4MaDRedUCe内部原理实践IZ3.5本章小结B第4章HiVe原理实践K4.1离线大数据处理的主要技术:HiVe2)4.2HiVeS
2、oL2L4.3HiVeSOL执行原理图角军22 4.4HiVe函数23 4.5其他SQLCmHadOoP技术Z4.6本章小结25第5章HiVe优化实践加5.1离线数据处理的主要挑战:数据倾斜2Z5.2HiVe优化28 5.3join无关的优化29 5.4大表ioin小表优化D5.5大表ioin大表优化315.6本章小结32第6章维度建模技术实践S6.1大数据建模的主要技术:维度建模4 6.2维度表设计至6.3深入事实表金6.4大数据的维度建模实践3Z6.5本章小结38第7章H章OOD数据仓库开发实战5 7.1业务需求4)7.2HadoOP数据仓库架构设计417.3HadOOD数据仓库规范设计里
3、7.4FUmreRetailer数据仓库构建实践电7.5数据平台新架构数据湖41名7.6本章小结第三篇实时数据开发:大数据开发的未来心第8章StOrm流计算开发4Z8.1流计算技术的鼻祖:StOrm技术冬8.2SlOrm实时开发示例4J8.3Storm高级原语Trident5)8.4StOrm关键技术5L8.5本章结2第9章SDarkStreaming流计算开发$9.1SDark生态和核心概念国9.2SPark生态的流计算技术:SparkStreamingS9.3SDarkStreaming的实时开发示例S9.4SparkStreaming调优实践5Z9.5SParkStreaming关键技术
4、5B9.6本章小结刃第10章Flink流计算开发10.1流计算技术新贵:Flink&10.2FlinkAPIS10.3Flink实时开发示例10.4Flink关键技术详解国10.5本章小结伤第11章Beam技术6611.1意图一统添计算的BeamQ11.2Beam技术核心:BeamModel囹11.3BeamSDK11.4Beam窗口详解D11.5本章小结71第12章StreamSQL实时开发实战H12.1流计算SQL原理和架构飞12.2流计算SQL:未来主要的实时开发技术羽12.3StreamSoL飞12.4StreamSQL的实时开发实战无12.5撤回机制7712.6本章小结第1章数据大图
5、数据是原油,数据是生产资料,数据和技术驱动,人类正从IT时代走向DT时代,随着数据的战略性日渐得到认可,越来越多的公司、机构和组织,尤其是互联网公司,纷纷搭建了自己的数据平台。不管是基于开源技术自研、自建还是购买成熟的商业解决方案,不管是在私有的数据中心还是在公有云端,不管是自建团队还是服务外包,一个个数据平台纷纷被搭建,这些数据平台不但物理上承载了所有的数据资产,也成为数据开发工程师、数据分析师、算法工程师、业务分析人员和其他相关数据人员日常的工作平台和环境,可以说数据平台是一个公司、机构或组织内“看”数据和“用数据”的关键基础设施,己经像水电煤一样不可或缺,正是它们的存在才使得数据变现成为
6、可能。数据从产生到进入数据平台中被消费和使用,包含四大主要过程:数据产生、数据采集和传输、数据存储和管理以及数据应用,每个过程都需要很多相关数据技术支撑。了解这些关键环节和过程以及支撑它们的关键技术,对一个数据从业者来说,是基本的素养要求。因此本章首先对数据流程以及相应的主要数据技术进行介绍。同时,本章也将介绍数据的主要从业者,包括平台开发运维工程师、数据开发工程师、数据分析师、算法工程师等,并对他们的基本工作职责和日常工作内容等进行介绍,使读者对数据相关的职位有基本的认识和了解。Ll数据流程不管是时髦的大数据还是之前传统的数据仓库,不管是目前应用最为广泛的离线数据还是越来越得到重视的实时数据
7、,其端到端流程都包含:数据产生、数据采集和传输、数据存储处理、数据应用四大过程,具体的数据流程图及其包含的关键环节如图1-1所示。数据产生数据应用 报表展示 数据分析 即席分析 数据挖掘 机器学习 深度学习 数据在线 服务图1-1数据流程大图下面详述图1-1所示的各个关键关节。1.1.1数据产生数据产生是数据平台的源头,没有数据,所谓的大数据也无从谈起。所以首先要保证有数据。随着近年来互联网和移动互联网的蓬勃发展,数据已经无处不在,毫无疑问,这是一个数据和信息爆炸的时代。所以,即使一个企业和个人没有数据,通过爬虫工具和系统的帮助,也可以从互联网上爬取到各种各样的公开数据。但是更多的、高质量的数
8、据是爬取不到的,这些数据存在于各个公司、企业、政府机关和机构的系统内部。1 .数据分类根据源头系统的类型不同,我们可以把数据产生的来源分为以下几种。(1)业务系统业务系统指的是企业核心业务的或者企业内部人员使用的、保证企业正常运转的IT系统,比如超市的POS销售系统、订单/库存/供应链管理的ERP系统、客户关系管理的CRM系统、财务系统、各种行政系统等。不管何种系统,后台的数据一般都存在后台数据库内。早期的大部分数据主要来源于这些业务系统的数据库,管理人员和业务运营人员查看的数据报表等基本来源于此。即便是目前,企业的业务系统依然是大部分公司数据平台的主要数据来源,业务系统的数据通常是格式化和高
9、质量的。(2) Web系统随着互联网的发展,很多系统都变成了Web系统,即互联网或者局域网范围内通过浏览器就可以访问,而不是必须安装客户端软件才能访问的系统(这种就是传统的业务系统)。Web系统也会有用于存储各种格式化数据的后台数据库,但除此之外,还有各种用户行为日志,比如用户通过何种途径访问了本网站(搜索引擎、直接输入Web网址、其他系统跳转等),在网站内都有何种行为(访问了哪些网页、点击了哪些按钮、停留了多长时间)。通过COokie以及各种前端埋点技术,用户的这些行为都可以被记录下来,并保存到相应的日志文件内。Web系统的日志文件通常是非格式化的文本文件。Web系统和业务系统不是互相对立的
10、,比如现在的ERP系统通常也支持Web和浏览器访问。(3)手机APP在当今的移动互联网时代,作为移动互联网的基础设施,手机APP已经渗透到所有人的吃穿住行,毫不夸张地说,手机俨然称得上是一个身体的“新器官”;另一方面,通过手机的内置传感器可以知道你是谁(指纹识别、虹膜识别、人脸识别),你在哪里(GPS、WiFi和移动网络)和你在干什么(吃穿住行App),当然移动APP也会记录你在该APP上的各种行为,比如你打开了几次App、点击了哪些页面和使用了哪些功能。(4)外部系统很多企业除了自己内部的数据,还会通过爬虫工具与系统来爬取竞争对手的数据和其他各种公开的数据,此外企业有时也会购买外部的数据,以
11、作为内部数据的有益补充。(5)人工整理尽管通过各种内部和外部系统可以获取到各种数据,但有些数据是无法直接由系统处理的,必须通过人工输入和整理才能得到,典型的例子是年代较久的各类凭证、记录等,通过OCR识别软件可以自动识别从而简化和加快这类工作。以上从IT系统的类型介绍了数据产生的源头,从数据的本身特征,数据还可以分为以下儿类。(1)结构化数据结构化数据的格式非常规范,典型的例子是数据库中的数据,这些数据有几个字段,每个字段的类型(数字、日期还是文本)和长度等都是非常明确的,这类数据通常比较容易管理维护,查询、分析和展示也最为容易和方便。(2)半结构化数据半结构化数据的格式较为规范,比如网站的日
12、志文件。这类数据如果是固定格式的或者固定分隔符分隔的,解析会比较容易;如果字段数不固定、包含嵌套的数据、数据以XML/JSON等格式存储等,解析处理可能会相对比较麻烦和繁琐。(3)非结构化数据非结构化数据主要指非文本型的、没有标准格式的、无法直接处理的数据,典型代表为图片、语音、视频等,随着以深度学习为代表的图像处理技术和语音处理技术的进步,这类数据也越来越能得到处理,价值也越来越大(比如最近FaCeboOk公布了他们基于深度学习技术的研究成果,目前己经可以初步识别图片中的内容并就图片内容标注标签)。通常进行数据存储时,数据平台仅存储这些图片、语音和视频的文件地址,实际文件则存放在文件系统上。
13、2 .数据埋点后台数据库和日志文件一般只能够满足常规的统计分析,对于具体的产品和项目来说,一般还要根据项目的目标和分析需求进行针对性地“数据埋点”工作。所谓埋点,就是在额外的正常功能逻辑上添加针对性的统计逻辑,即期望的事件是否发生,发生后应该记录哪些信息,比如用户在当前页面是否用鼠标滚动页面、有关的页面区域是否曝光了、当前用户操作的时间是多少、停留时长多少,这些都需要前端工程师进行针对性地埋点才能满足有关的分析需求。数据埋点工作一般由产品经理和分析师预先确定分析需求,然后由数据开发团队对接前端开发和后端开发来完成具体的埋点工作。随着数据驱动产品理念和数据化运营等理念的日益深入,数据埋点已经深入
14、产品的各个方面,变成产品开发中不可或缺的一环。数据埋点的技术也在飞速发展,也出现了一批专业的数据分析服务提供商(如国外的MiXPanle和国内的神策分析等),尽管这些公司提供专门的SDK可以通用化和简化数据埋点工作,但是很多时候在具体的产品和项目实践中,还是必须进行专门的前端埋点和后端埋点才可以满足数据分析与使用需求。1.1.2 数据采集和传输业务系统、Web系统、手机APP等产生的数据文件、日志文件和埋点日志等分散于各个系统与服务器上,必须通过数据采集传输工具和系统的帮助,才能汇总到一个集中的区域进行关联和分析。在大数据时代,数据量的大当然重要,但更重要的是数据的关联,不同来源数据的结合往往
15、能产生1+12甚至1+110的效果。另一个非常关键的点是数据的时效性,随着时间的流失,数据的价值会大打折扣,只有在最恰当的时间捕捉到用户的需求,才会是商机,否则只能是错失时机。试想一下,如果中午用户在搜索“西餐厅”,只有在这一刻对用户推送西餐厅推荐才是有效的,数分钟、数十分钟、数小时后的推送效果和价值将逐步递减。而实现这些必须借助于专业的数据采集传输工具和系统的帮助。过去传统的数据采集和传输工具一般都是离线的,随着移动互联网的发展以及各种个性化推荐系统的兴起,实时的数据采集和传输工具越来越得到重视,可以亳不夸张地说,数据采集传输工具和系统已是大数据时代的关键基础设施。数据产生的来源有很多,但是
16、其物理存在表现形式主要为文本文件和数据库两种。理论上来说,数据采集和传输无非就是把一个地方的数据从源头复制到目的地,文本文件可直接复制,数据库也可以通过创建数据库连接直接拖数据,但是数据采集传输的挑战在于:数据可能分布在不同的数据中心,数据库也可能是分库分表的,而数据采集也不能对生产系统库有任何性能上的影响,最好也不需要产品开发、DBA或系统管理员的过多介入,有时候还必须能够做到亳秒级的实时采集,而这些都必须借助专业的数据采集传输工具和系统才能完成,比如专.业的数据采集传输工具不会通过建立数据库连接来采集数据,而会通过解析数据库日志来进行。在无须数据库DBA、系统管理员和产品开发介入的情况下(
17、只需要开通权限即可)高效地完成数据采集和同步的任务。1.1.3 数据存储处理数据采集同步后的数据是原始的和杂乱的,必须经过专门的清洗、关联、规范化和精心的组织建模,而且要通过数据质量检测后才能进行后续的数据分析或用于提供数据服务,而这就是数据平台构建的第三个关键关节数据存储处理。大数据项目和数据平台构建的实践表明,数据存储处理通常占用整个项目至少1/3以上的时间,这一环节的设计是否合理、最终的数据是否稳定可靠、建模是否灵活可扩展直接决定后续数据应用的成败,也决定了整个数据平台项目的成败。数据存储处理也是数据领域最为激动人心和百花齐放的领域,各种开源技术框架和创新层出不穷,但是万变不离其宗,根据
18、下游数据使用方的时效性,我们可以把数据存储处理工具和技术分为离线处理、近线处理和实时处理,处理后的数据也相应地存储于离线数据仓库、近线数据存储区和实时数据存储区。离线处理一般按天进行数据处理,每天凌晨等数据采集和同步的数据到位后,相关的数据处理任务会被按照预先设计的ETL(抽取、转换、加载,一般用来泛指数据清洗、关联、规范化等数据处理过程)逻辑以及ETL任务之间的拓扑关系依次调用,最终的数据会被写入离线数据仓库中。离线数据仓库中的数据通常是按照某种建模思想(最常用的是维度建模思想)精心组织的,这样既可以使下游用户非常直观和方便地使用,又可以使数据处理过程很方便地扩展和修改。从各个源头系统采集同
19、步过来的离线数据,通常放在一个StagingArea(暂存区,也叫登台区),进行便于后续的离线ETL处理。离线数据的存储处理技术发展已经比较成熟,也有很多成熟的ETL工具、商业/开源数据仓库和解决方案。这些商业或者开源的数据仓库工具和解决方案在数据量不是很大和解决结构化数据方面还是比较成功的,但是随着GoOgle关于分布式计算三篇论文的发表内容主体分别是分布式文件系统GoogIeFileSystem,分布式计算框架M叩RedUCe,分布式数据库Bigtable)和基于GoogIe三篇论文开源实现的HadooP生态系统(分别对应GoOgle三篇论文HDFS,M叩RedUCe,HBase)兴起,大
20、数据时代真正到来,这些传统的商业和开源数据仓库工具与解决方案在成本及可扩展性方面的劣势日益显现,不仅仅是互联网公司,越来越多的传统公司也日渐转向基于HadOoP生态系统的数据仓库工具和解决方案。大数据时代对于数据的使用已经不限于离线数据的分析,实时数据正变得越来越重要,而这必须借助专业的流计算工具和框架才能实现。目前最为流行和使用广泛的流计算框架是StOlTn/类StOlTn的流处理框架和SPark生态的SParkStreaming等。国内外大厂在使用这些开源框架的同时,还结合自身的使用实践对这些流计算框架从不同层面进行改进和创新,如稳定性、可扩展性、性能等,但是笔者认为这其中最具革命性的是S
21、QL抽象层的出现。SQL抽象层使得实时开发用户不必写JaVa或者其他编程语言来开发实时处理逻辑,不但大大加快了实时开发的效率,而且大大降低了实时开发的门槛。通常,实时处理的结果会写入实时存储区(比如HBaSe),以提供高可靠和高并发的实时数据服务,比如用户的实时画像和实时搜索请求,后续的个性化推荐系统或者智能处理程序直接访问此实时存储区就可以实现实时数据服务。近线数据的时效性于离线(以“天”为单位)和实时(以毫秒/秒为单位)之间,比如最近1小时的数据或者最近15分钟的数据。近线数据兼有离线批次处理的便捷性和实时数据的时效性优势,通常是业务需求和技术可实现性折中的结果。近线数据可以通过提高离线任
22、务调度频次来实现,但是必须有相关的数据采集同步工具提供近线数据源头的支持。离线和在线以及近线的划分,是目前数据工业界的技术现状,但这样是合理的吗?为什么同样的业务逻辑必须用离线和在线两种技术分别实现?离线的批处理难道不是实时流处理的一种特例吗?离线的批处理和实时的流处理为什么不能实现融合(用一种技术来实现),同样的逻辑为什么要存在于离线和实时两个地方?2015年和2016年以来涌现出来的ApacheFlinkffApacheBeam等就是同时针对流数据和批数据两者的分布式数据处理引擎,这些技术已经逐渐成熟并大量进入生产环境中使用,这些技术代表了未来大数据处理的方向。1.1.4 数据应用数据的精
23、心埋点、海量离线数据同步和毫秒级的实时数据采集、繁琐的数据处理和精心的数据建模,这些都为数据使用奠定了坚实的基础,但是数据最终发挥价值依赖于数据应用环节。数据应用最广泛的方式是“看”,比如决策层和管理人员定时查看的公司/部门业务日报、业务周报和业务月报,一线运营人员查看的运营指标和报表,分析师给业务决策和业务运营参考的数据分析报告,还有分析人员和业务人员不定时的即席分析等。这些数据报表帮助企业管理人员、产品和项目管理人员及一线运营人员定位企业、产品和项目中的问题、隐患和发力方向,并及早采取措施修正方向或者看到正确趋势后加大投入。可以毫不夸张地说,一个企业“看”数据的能力代表了这个企业的数据应用
24、能力水平,也是其核心竞争力之一。随着大数据时代和人工智能热潮的到来,数据已经不仅局限于“看GOOgIe的超级搜索框、淘宝的“千人千面个性化推荐系统、新闻聚合推荐APP今日头条都代表着数据和算法结合的成功,也彰显着数据+算法的威力。借助数据挖掘、机器学习算法和深度学习算法以及在线数据服务等技术,数据已经成为在线生产系统的一部分。1NDMySQLjqBinLog,数据库日志包含了对数据库的所有变更信息,以二进制形式保存,包含了修改前和修改后的数据快照,主要用于数据库的备份和恢复。商业性的有微软的SSlS可视化ETL工具和SQLSerVer数据库,IBM的dataStage可视化ETL工具和DB2数
25、据库,甲骨文的PL/SQL以及OraCle的数据库等;开源的有Kettle可视化ETL工具和开源的MySQL数据库等。1.2数据技术目前大数据相关的技术可以说是蓬勃发展、百花齐放,对于初入者来说,一个个响亮的名字,一个个眼花缭乱的框架,之前刚了解了一个,很快又跳出来一个,正如白居易的钱塘湖春行所言,真的是“乱花渐欲迷人眼”。但是万变不离其宗,不管这些技术如何变化、名词如何新颖,它们都属于1.1节介绍的某个具体流程和环节,因此下面将结合前面所述的数据流程来介绍当前主要的数据技术和框架。结合1.1节的数据流程图,当前大数据生态系统的主要开源技术和框架如图1-2所示。图12当前大数据生态系统的主要开
26、源技术和框架数据采集一数据处理数据存储数据使用TlensorFIowTLXKSAC11t.DRILL出于篇幅和开源框架实际情况考虑,图12并没有列出所有数据相关的开源技术框架,比如SQLonHadOoP方面的技术还有很多(如ClOUderalmPala、Presto、SharkDremeI等),数据采集传输还有ChUkWa、RabbitMQ等,数据存储还包含RediS缓存数据库以及MySQL等关系型数据库。此外,IBM、微软、Oracle、InfOrmatiCa等大公司的商业软件和技术尚不在此列。但正是这些所有的数据技术一起构成了目前大数据的生态系统,各种技术你中有我,我中有你,互相借鉴,互相
27、启发。实际上很多技术甚至其基本原理都是类似的,只是由于商业的、社区的或者甚至私人的各种原因,它们才独立出来。也许正是这样,才促成了目前大数据整个生态圈的繁荣和欣欣向上,正如一句诗所言:“一花独放不是春,万紫千红春满园下面逐一介绍图1-2中提到的各种技术。1.2.1 数据采集传输主要技术数据采集传输工具和技术主要分为两大类:离线批处理和实时数据采集和传输。顾名思义,离线批处理主要是批量一次性采集和导出数据。离线批处理目前比较有名和常用的工具是SqOOp,下游的用户主要是离线数据处理平台(如HiVe等)。实时数据采集和传输最为常用的则是FlUme和Kafka,其下游用户一般是实时流处理平台,如St
28、orm、SparkFlink等。(1) SqoopSqoop(发音:SkUP)作为一款开源的离线数据传输工具,主要用于Hadoop(Hive)与传统数据库(MySQL、POStgreSQL等)间的数据传递。它可以将一个关系型数据库(例如MySQLOracle、POStgreSQL等)中的数据导入HadOoP的HDFS中,也可以将HDFS的数据导入关系型数据库中。SqOOP项目开始于2009年,最早作为HadOoP的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速地迭代开发,独立为一个APaChe项目。(2) Flume随着目前业务对实时数据需求的日益增长,实时数据的
29、采集越来越受到重视,而目前这方面主流的开源框架就是FkIme,国内很多互联网公司也都是基于FkIme搭建自己的实时日志采集平台。FIUme是CloUdera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统,目前已经是APaChe的顶级子项目。使用Fhlme可以收集诸如日志、时间等数据,并将这些数据资源集中存储起来供下游使用(尤其是流处理框架,例如SIorm)。和FlUme类似的另一个框架是SCribe(FaCebOOk开源的日志收集系统,它为日志的分布式收集、统一处理提供一个可扩展的、高容错的简单方案)。(3) Kafka通常来说FIUme采集数据的速度和下游处理的速度通常不同
30、步,因此实时平台架构都会用一个消息中间件来缓冲,而这方面最为流行和应用最为广泛的无疑是Kaflea。Kafka是由Linkedln开发的一个分布式消息系统,以其可以水平扩展和高吞吐率而被广泛使用,目前主流的开源分布式处理系统(如Storm和SPark等)都支持与Kafka集成。Kafka是一个基于分布式的消息发布-订阅系统,特点是快速、可扩展且持久。与其他消息发布-订阅系统类似,Kafla可在主题当中保存消息的信息。生产者向主题写入数据,消费者从主题读取数据。作为一个分布式的、分区的、低延迟的、冗余的日志提交服务,得益于其独特的设计,目前KaflApacheGearpump等执行引擎的支持也在
31、讨论或开发当中。1.2.3数据存储主要技术(1) HDFSHadoopDistributedFileSystem,简称HDFS,是一个分布式文件系统。它是谷歌的GOOgleFileSystem(GFS)提出之后,DoUgCUtting受GOogIe启发而开发的一种类GFS文件系统。它有一定高度的容错性,而且提供了高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS提供了一个高容错性和高吞吐量的海量数据存储解决方案。在HadooP的整个架构中,HDFS在MaPRedUCe任务处理过程中提供了对文件操作和存储等的支持,MaPRedUCe在HDFS基础上实现了任务的分发、跟踪和执行等工作,并收
32、集结果,两者相互作用,共同完成了HadooP分布式集群的主要任务。(2) HBaseHBaSe是一种构建在HDFS之上的分布式、面向列族的存储系统。在需要实时读写并随机访问超大规模数据集等场景下,HBaSe目前是市场上主流的技术选择。HBaSe技术来源于GoOgIe论文Bigtable:一个结构化数据的分布式存储系统。如同Bigtable利用了GoogleFileSyStem提供的分布式数据存储方式一样,HBaSe在HDFS之上提供了类似于Bigtable的能力。HBaSe解决了传统数据库的单点性能极限。实际上,传统的数据库解决方案,尤其是关系型数据库也可以通过复制和分区的方法来提高单点性能极
33、限,但这些都是后知后觉的,安装和维护都非常复杂。而HBaSe从另一个角度处理伸缩性问题,即通过线性方式从下到上增加节点来进行扩展。HBaSe不是关系型数据库,也不支持SQL,其中的表一般有这样的特点。 大:一个表可以有上亿行、上百万列。 面向列:面向列表(簇)的存储和权限控制,列(簇)独立检索。 稀疏:为空(NULL)的列并不占用存储空间,因此表可以设计得非常稀疏。 无模式:每一行都有一个可以排序的主键和任意多的列。列可以根据需要动态增加,同一张表中不同的行可以有截然不同的列。 数据多版本:每个单元中的数据可以有多个版本,默认情况下,版本号自动分配,它是单元格插入时的时间戳。数据类型单一:HB
34、aSe中的数据都是字符串,没有类型。1.2.4数据应用主要技术数据有很多种应用方式,如固定报表、即时分析、数据服务、数据分析、数据挖掘和机器学习等。下面挑选典型的即时分析DriH框架、数据分析R语言、机器学习TenSorFk)W框架进行介绍。(1) DrillApacheDrill是一个开源实时大数据分布式查询引擎,目前已经成为APaChe的顶级项目QDriIl是开源版本的GOogIeDremelDremel是GOogIe的“交互式”数据分析系统,可以组建成规模上千的集群,处理PB级别的数据。MaPRedUCe处理数据一般在分钟甚至小时级别,而DremeI将处理时间缩短到秒级,即Drin是对M
35、apReduce的有力补充。DremeI作为GOOgIeBigQUery的报表引擎,获得了很大的成功。Drin兼容ANSlSQL语法作为接口,支持对本地文件、HDFS、Hive、HBaseMOngeDB作为存储的数据杳询,文件格式支持ParqUet、CSVTSV以及JSoN这种无模式(schema-free)的数据。所有这些数据都可以像使用传统数据库的表查询一样进行快速实时查询。Drin于2014年年底成为APaChe的顶级项目,旨在为基于HadOoP应用的开发者和Bl分析人员的工作效率带来巨大提升。(2) R语言R是一种开源的数据分析解决方案,其实市面上也有很多优秀的统计和制图软件,如Exc
36、ekSASSPSS和Stata等。那么为什么R变得这么流行,成了很多数据分析师的主要工具呢?原因如下。 R是自由软件。这意味着它是完全免费的、开放源代码的。可以在官方网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料,标准的安装文件自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。 R是一种可编程的语言。作为一个开放的统计编程环境,R语言的语法通俗易懂,而且目前大多数最新的统计方法和技术都可以在R中直接得到。 R具有很强的互动性。除了图形输出是在另外的窗口,它的输入/输出都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口中给出提示,对以前输
37、入过的命令有记忆功能,可以随时再现、编辑、修改以满足用户的需要,输出的图形可以直接保存为JPG、BMP、PNG等图片格式,还可以直接保存为PDF文件。此外,R与其他编程语言和数据库之间有很好的接口。(3) TensorFlow随着大数据时代和人工智能热潮的到来,数据已经不仅仅局限在“看”,数据和算法已经是生产系统的一部分,众多的开源机器学习平台和深度学习平台纷纷出现,而TenSorFk)W无疑是目前最为流行的一个。TenSorFlOW是一个非常灵活的框架,它能够运行在个人电脑或者服务器的单个/多个CPU和GPU上,甚至是移动设备上。TenSorFloW最早是GOogle大脑团队为了研究机器学习
38、和深度神经网络而开发的,但后来发现这个系统足够通用,能够支持更加广泛的应用,于是将其开源。TenSorFIoW是基于数据流图的处理框架,TenSOrFIOW节点表示数学运算(mathematicaloperations),边表示运算节点之间的数据交互。TenSorFIOW从字面意义上来讲有两层含义:第一层含义,TenSor代表的是节点之间传递的数据,通常这个数据是一个多维度矩阵(multidimensionaldataarrays)或者一维向量;第二层含义,FlOW指的是数据流,形象理解就是数据按照流的形式进入数据运算图的各个节点。1.3 数据相关从业者和角色大数据时代,数据已经变为生产资料,但是数据真正从生产资料变成生产力变现必须借助专业数据人员的帮助。下面结合数据流程图介绍数据相关的主要从业者和角色。1.3.1 数据