Storm 实战:构建大数据实时计算

2019-03-02 23:38|来源: 网路

Storm 实战:构建大数据实时计算(阿里巴巴集团技术丛书,大数据丛书。大型互联网公司大数据实时处理干货分享!来自淘宝一线技术团队的丰富实践,快速掌握Storm技术精髓!)

阿里巴巴集团数据平台事业部商家数据业务部 编著

ISBN 978-7-121-22649-6

2014年8月出版

定价:59.00元

184

16

编辑推荐

Storm以其简单、灵活、健壮而著称。随着大数据实时处理需求的强劲增长,Storm的出现填补了大数据处理生态系统的缺失,并被越来越多的公司所采用。

Storm实战:构建大数据实时计算 》来自阿里巴巴集团数据平台事业部商家数据业务部一线经验的分享。团队专注于“数据让生意更简单”的大数据应用使命,一直致力于解决商家的大数据应用需求。并开发出量子恒道店铺经、江湖策、御膳房等重量级大数据开发、计算和分析工具。团队很早便开始使用Storm来处理实时大数据,结合实际的应用场景,积累了丰富的实践经验。《Storm实战:构建大数据实时计算》正是这些经验和心得的结晶,它一一解答了是Storm是什么,怎么做,如何做更好等关键的实际问题,对于从事大数据处理与分析的读者而言,是一本相当有价值的学习参考手册。

阿里巴巴集团技术丛书是抱持着为工程师服务的理念诞生的。

阿里的快速发展,使我们有机会见证技术变革的强大力量。在这过程中,我们经历了技术的变迁、兴衰、成败,既有收获也有教训。如今,阿里已成为一家令人瞩目的互联网公司,站在这样的时点上,回顾过去,放眼四周,我们深刻地觉得有必要将沉淀下来的一线经验与智慧,结集出版,理由有三。

1.回报。我们获得的种种经验与教训,只有在阿里这样快速成长、体量巨大的公司中才有机会亲历。这样的技术环境并不是每个工程师都有机缘遇到的。这些经历帮助了我们个人能力的提升,也帮助阿里成为一家技术实力过硬的公司。我们愿意把这些内容分享出来,帮助即将或已经面临类似问题的朋友们,如果他们可以从阅读中获得一些启发而少走弯路的话,将是我们最大的欣慰。

2.交流。在这套丛书里,我们同样会抛出我们的困惑、问题,借助丛书的平台,扩大工程师沟通的圈子,以书会友,共同探索、学习、提高。

3.温故知新。以结集的形式,将以往的经验与知识固化下来,既可便于以后查阅,也可以帮助我们系统地梳理思路,更为全面地审视、洞察、并理解过去发生的种种,为未来的变化做好更充分、扎实的准备。

基于以上的考虑,阿里巴巴集团技术丛书将立足于实践,着眼于问题,从工程师的视角解读技术的内涵。

让思考成为我们生活的乐趣,让阅读成为我们进步的阶梯!

内容提要

随着大数据实时处理需求的强劲增长,Storm的出现填补了大数据处理生态系统的缺失,并被越来越多的公司所采用。阿里巴巴集团数据平台事业部商家数据业务部正是最早使用Storm的技术团队之一。

Storm实战:构建大数据实时计算 》是一本系统并且具有实践指导意义的Storm工具书和参考书,对Storm整个技术体系进行了全面的讲解,不仅包括对基本概念、特性的介绍,也涵盖了一些原理说明。

实战性很强,各章节都提供了一些小案例,同时对于本地,以及集群环境的部署有详细介绍,易于理解,操作性强。

Storm实战:构建大数据实时计算 》一共分为10章:第1章全面介绍了Storm的特性、能解决什么问题,以及和其他流计算系统的对比;第2章通过实际运行一个简单的例子,以及介绍本地环境和集群环境的搭建,让读者对Storm有了直观的认识;第3章深入讲解了Storm的基本概念,同时实现一个Topology运行;第4章和第5章阐述了Storm的并发度、可靠处理的特性;第6~8章详细而系统地讲解了几个高级特性:事务、DRPCTrident;第9章以实例的方式讲解了Storm在实际业务场景中的应用;第10章总结了几个在大数据场景应用过程中遇到的经典问题,以及详细的排查过程。

目录

第1 章 Storm 基础 1

1.1 Storm 能做什么............................................... 2

1.2 Storm 特性...................................................... 3

1.3 其他流计算系统.............................................. 8

1.4 应用模式....................................................... 13

第2 章 Storm 初体验 17

2.1 本地环境搭建............................................... 18

2.2 Storm 集群.................................................... 25

第3 章 构建Topology 41

3.1 Storm 基本概念............................................. 42

3.2 构建Topology............................................... 53

3.3 小结.............................................................. 61

第4 章 Topology 的并行度 62

4.1 并行元素 .......................................................63

4.2 配置并行度................................................... 65

4.3 一个运行中Topology 的例子 ....................... 68

4.4 如何更新运行中的Topology的并行度 ........ 71

第5 章 消息的可靠处理 73

5.1 简介.............................................................. 74

5.2 理解消息被完整处理.................................... 74

5.3 消息的生命周期............................................ 76

5.4 可靠相关的API............................................ 79

5.5 高效地实现tupletree .................................... 84

5.6 选择合适的可靠性级别................................ 87

5.7 集群的各级容错............................................ 89

5.8 小结.............................................................. 91

第6 章 一致性事务 92

6.1 简单设计一:强顺序流................................ 93

6.2 简单设计二:强顺序batch流 ...................... 95

6.3 CoordinateBolt 的原理.................................. 96

6.4 TransactionalTopology .................................. 98

第7 章 DRPC 105

7.1 Storm DRPC................................................ 106

7.2 总体概述..................................................... 106

7.3LinearDRPCTopologyBuilder ...................... 108

7.4 本地模式DRPC.......................................... 110

7.5 远程模式DRPC.......................................... 111

7.6 一个复杂的例子.......................................... 113

7.7 非线性DRPC 拓扑 ..................................... 117

7.8LinearDRPCTopologyBuilder 工作过程 ...... 117

7.9 高级进阶..................................................... 118

第8 章 Trident 的特性 119

8.1 理解Trident................................................ 120

8.2 结合多个Trident 任务 ................................ 124

8.3 消费和生产Field........................................ 126

8.4 State(状态保存)...................................... 128

8.5 Trident Topology 的执行过程...................... 136

8.6 总结............................................................ 137

第9 章 Storm 实例 138

9.1 一个简单的实例.......................................... 139

9.2 复杂一点的实例.......................................... 150

9.3 其他 ............................................................161

第10 章 常见应用问题分析 162

10.1 性能问题排查与定位................................ 163

10.2 系统中常见的问题与排查......................... 167

10.3 业务问题的定位与排查............................ 170

作者简介

商家数据业务部, 隶属于阿里巴巴集团数据平台事业部,致力于“数据让生意更简单”的大数据应用使命。几年来,一直专注于解决商家的大数据应用需求,通过量子恒道店铺经已支撑起超过400万商家的日常经营决策,并为100万商家提供淘宝官方流量管理工具――江湖策,让深度探索、优化流量成为可能。2013年开创性地推出云数据平台――御膳房,作为完善的大数据开放、计算和分析云平台,打通了“阿里大数据”与“开放平台和服务市场体系”,为淘宝生态中的ISV和卖家提供海量丰富的阿里大数据、强大稳定的云计算处理能力和安全的数据应用开发容器,支持淘宝生态圈发展基于大数据分析的创新应用,深度助力卖家降低经营成本、提升效率,已为数百万的商家提供经营链路中的大数据应用解决方案。
支撑这些的,是对大数据的分布式计算、仓库建设、数据挖掘、高并发网站构建、数据可视化等各个领域前沿技术的深入探索和应用。

前言

实时流计算

互联网从诞生的一刻起,对世界的最大改变就是让信息能够实时交互,从而大大提高各个环节的效率。正因为大家对信息实时响应、实时交互的需求,软件行业除了个人操作系统之外,数据库(更精确地说是关系型数据库)应该是软件行业发展最快、收益最为丰厚的产品了。记得20 世纪90年代,很多银行别说实时转账,连实时查询都做不到,但是数据库和高速网络改变了这个情况。

互联网的进一步发展,从Portal信息浏览型到Search 信息搜索型再到SNS 关系交互传递型,以及电子商务、互联网旅游生活产品等,将人们生活中的流通环节在线化。对效率的要求让大家对实时性的要求进一步提升,而信息的交互和沟通正在从点对点向信息链甚至信息网的方向发展,这样必然带来数据在各个维度的交叉关联,数据爆炸已不可避免。因此流式处理加NoSQL 产品应运而生,分别解决实时处理框架和数据大规模存储计算的问题。

早在2000 年初,诸如UC 伯克利、斯坦福等大学就开始了对流式数据处理的研究,但是由于更多地关注于金融行业的业务场景或者互联网流量监控的业务场景,以及当时互联网数据场景的限制,造成了研究多是基于对传统数据库处理的流式化,对流式框架本身的研究偏少。目前这样的研究逐渐没有了声音,工业界将更多的精力转向了实时数据库。

2010 年Yahoo!对S4 的开源,2011 年Twitter对Storm的开源,改变了这个现状。以前互联网的开发人员在做一个实时应用的时候,除了要关注应用逻辑计算处理本身,还要为数据的实时流转、交互、分布大伤脑筋。现在的情况却大为不同,以Storm 为例,开发人员可以快速搭建一套健壮、易用的实时流处理框架,配合SQL 产品或者NoSQL 产品或者MapReduce 计算平台,就可以以低成本做出很多以前很难想象的实时产品,比如量子恒道品牌旗下的多个产品就是构建在Storm 实时流处理平台上的。

本书是一本对Storm 的基础介绍手册,但是我们也希望它不仅仅是一本Storm 的使用手册,我们会在其中加入更多在实际数据生产过程中的经验和应用架构,最终的目的是帮助所有愿意使用实时流处理框架的技术同仁,同时也默默地改变这个世界。

在本书即将出版之际,Storm已经成功发布了0.9.0 版本,追加了一些新的特性,如使用Netty作为新的消息传输层、提供日志查看UI 等,同时修复了大量跟稳定性相关的BUG。本次发布对茁壮成长的Storm 来说是一次巨大的进步。新版本的Storm 在系统结构及使用方式方面,并没有太多变化,本书可以帮助你快速掌握应用Storm的知识和技能。

本书由团队中多位同学先后参与合作完成,为体现阿里巴巴的文化,这里列出所有涉及同学的花名:张中、太奇、鸣世、曦轩、呜珂、民瞻、九翎、渊虹、国相、晨炫、木晗、毅山、宋智、澄苍,是大家的合作与努力才让此书得以成行。同时感谢刘皎等编辑的辛苦工作,是你们把这本书呈献给读者,感谢你们!同样要感谢支持我们工作的同事们:冰夷、王贲,有你们的帮助和支持才让我们有决心和毅力来完成这项工作。

wKiom1PtsXrjUaMNAAJ7XbB29xc214.jpg


转自:http://bvbroadview.blog.51cto.com/3227029/1540652

相关问答

更多
  • 你好湮魂,从多个角度全面讲解Storm实时数据处理技术和最佳实践,为快速掌握并灵活应用Storm提供实用指南   从实际问题出发,系统介绍Storm的基本应用、多语言特性、完整业务系统实现和产品交付的最佳实践方法;从产品持续交付角度,分析并实践集成、测试和交付的所有步骤   《大数据技术丛书:Storm实时数据处理》涵盖搭建基于Storm的开发环境和测试实时系统的许多实用方法与实战用例,以及如何应用交付最佳实践来将系统部署至云端。
  • 感谢您对Dataflow编程模型的兴趣! 的确,Dataflow和Apache Storm都支持流处理,但是有一些重要的区别: Dataflow支持同一个“窗口化”API下的批量和流式计算,而据我所知,Storm就是一个流式系统。 用于定义计算拓扑的API在Dataflow和Storm中非常不同。 Dataflow API很大程度上模仿了FlumeJava :您可以像操作真实集合一样操纵逻辑PCollection对象(并行集合;您可以将其视为逻辑数据集),并根据将不同并行操作(如ParDo )应用到其他结果 ...
  • 你的理解是正确的。 bolt的每个任务都只会打开自己与数据库服务器的连接。 Your understanding is correct. Each task of a bolt will just open its own connection to the database server.
  • 那么我找到了解决方案。 以下是我所做的: 1)在zookeeper VM上运行sudo nano /etc/environment并将内容更改为以下内容: JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386" ZOOKEEPER_HOME="/usr/share/zookeeper-3.4.9" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:$JAVA_HOME/ ...
  • 你可以使用fieldsGrouping 。 您可以声明一个字段,通过该字段对元组进行分组(在您的情况下为id )。 我只是假设您的输入流是具有id和body字段的JSON对象 {"id":"1234","body":"some body"} 还假设您的拓扑结构有一个喷口,两个螺栓,即BoltA和BoltB。 在BoltB中,覆盖declareOutputFields方法并填写详细信息。 public void declareOutputFields(OutputFieldsDeclarer declare ...
  • Maven正试图从https repo“ https://clojars.org/repo/ ”下载jar,但java没有客户端证书。 按照以下步骤导入客户端证书 第1步:下载客户端证书 在浏览器中打开https://clojars.org/repo/ URL(即firefox) 单击URL栏右侧的锁定图标 显示服务器URL,单击以获取右箭头,然后单击“更多信息” 弹出窗口以查看服务器的证书。 单击“查看证书”,在“详细信息”表中导出到文件CERT_FILE_NAME.crt 步骤2:将客户端证书导入mav ...
  • 好吧,没有办法像我想要的那样快速压缩。 但是我找到了解决办法,如果有人需要,我可以在这里分享。 这个问题不仅与Storm相关,而且是一个更一般的Hadoop问题。 我的所有数据都是使用HdfsBolt写入的: RecordFormat format = new DelimitedRecordFormat().withFieldDelimiter("|"); //Synchronize data buffer with the filesystem every 1000 tuples ...
  • 我最终通过使用maven repo中预编译的storm-kafka版本并在拓扑中添加过滤器螺栓而不是在spout本身中进行过滤来解决这个问题。 从而消除了对storm-core和storm-kafka本地编译的jar文件的需求。 这不是一个“解决方案”,但它是解决问题的一种方法。 I eventually worked around this problem by using a pre-compiled version of storm-kafka from a maven repo and adding ...
  • 我假设您正在处理连续计算算法或实时分析的用例。 如果你不使用Kafka或任何消息队列,下面给出的是你必须经历的: (1) You will have to implement functionality like consistency of data. (2) You are ready to implement replication on your own (3) You are ready to tackle a variety of failures and ready to build a ...
  • 我不知道你正在使用的平台,但在C ++ 10ms是永恒的 。 我认为你正在使用错误的工具来完成工作。 使用C ++,提供一些本地查询应该不到一微秒。 触摸多个内存位置和/或必须等待磁盘或网络I / O的非本地查询别无选择,只能花费更多时间。 在这种情况下,并行性是你最好的朋友。 你必须找到瓶颈。 是I / O吗? 是CPU吗? 是内存带宽吗? 是内存访问时间吗? 在找到瓶颈之后,您可以改进它,异步它和/或乘以(=并行化)它。 I don't know the platform you're using, b ...