万本电子书0元读

万本电子书0元读

顶部广告

从零开始学Storm电子书

是首本Storm技术教程,此书对技术基础、平台部署与应用案例进行了完全解析

售       价:¥

纸质售价:¥46.60购买纸书

28人正在读 | 0人评论 6.2

作       者:赵必厦,程丽明

出  版  社:清华大学出版社

出版时间:2014-09-01

字       数:31.0万

所属分类: 科技 > 计算机/网络 > 软件系统

温馨提示:数字商品不支持退换货,不提供源文件,不支持导出打印

为你推荐

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书由基础知识、安装与部署、研发与维护、阶知识、企业应用5个模块构成,并细分为20个章节,其中“基础知识”6章、“安装与部署”4章、“研发与维护”4章、“阶知识”5章、“企业应用”1章,分别介绍了Storm的安装与配置、Storm的基本原理、Topology组件、Spout组件、Bolt组件、ZooKeeper集群、实战环节等内容,包括理论基础、环境搭建、研发准备、应用案例等。 本书理论联系实际,通过大量实例分析,让读者在较短的时间内掌握Storm的使用,搭建并研发出自己的基于Storm的大数据处理平台。本书适合所有大数据处理、实时流数据处理、Storm的发者或爱好者,也适合高等院校和培训学校相关专业的师生参考使用。<br/>【推荐语】<br/>是首本Storm技术教程,此书对技术基础、平台部署与应用案例行了完全解析<br/>
目录展开

前言

第一章 Storm简介

1.1 什么是Storm

1.2 Storm的诞生

1.2.1 从Twitter说起

1.2.2 Twitter需要处理大批实时性要求高的大数据业务

1.2.3 Storm帮助Twitter解决实时海量大数据处理问题

1.3 Storm的成长

1.3.1 Storm正式开源

1.3.2 Storm的核心技术和基本组成

1.3.3 Storm的项目小组

1.项目主管

2.项目核心贡献者

3.项目的其他贡献者

1.3.4 Storm的技术支持网站

1.Storm项目的官方网址

2.GitHub上的Storm项目

3.在Wiki上的Storm介绍

4.Storm的邮件列表

1.4 Storm的优势

1.4.1 集成多种技术

1.4.2 简单的API

1.4.3 可扩展的

1.4.4 容错的

1.4.5 保证数据处理

1.4.6 可以使用任何语言

1.4.7 部署和操作简单

1.4.8 自由开源

1.5 Storm的应用现状和发展趋势

1.5.1 应用现状

1.Storm应用方向

2.使用Storm的企业和组织

3.Storm的相关项目

1.5.2 发展趋势

1.Storm技术发展情况

2.Storm研究人员发展情况

3.Storm版本发展情况

1.6 如何学习Storm

1.Storm的基本知识

2.Trident

3.安装和部署

4.Storm的进阶知识

5.Storm的高阶知识

1.7 本书的章节安排及学习建议

1.7.1 本书的章节安排

1.7.2 关于如何阅读本书的建议

1.为了调研Storm

2.为了学习Storm的理论基础

3.为了学习Storm的应用实践

1.8 本章小结

第2章 Storm的基本知识

2.1 概念

2.1.1 元组(Tuple)

2.1.2 流(Stream)

2.1.3 喷口(Spout)

2.1.4 螺栓(Bolt)

2.1.5 拓扑(Topology)

2.1.6 主控节点与工作节点

2.1.7 Nimbus进程与Supervisor进程

2.1.8 流分组(Stream grouping)

2.1.9 工作进程(Worker)

2.1.10 任务(Task)

2.1.11 执行器(Executor)

2.1.12 可靠性(Reliability)

2.2 Storm的配置

2.2.1 Storm的配置类型

2.2.2 defaults.yaml文件

2.2.3 storm.yaml文件

2.2.4 Config类

2.3 序列化(Serialization)

2.3.1 动态类型

2.3.2 自定义序列化

2.3.3 Java序列化

2.3.4 特定组件序列化注册

2.4 容错机制

2.4.1 Worker进程死亡

2.4.2 节点死亡

2.4.3 Nimbus或者Supervisor守护进程死亡

2.4.4 Nimbus是否是“单点故障”的

2.5 可靠性机制——保证消息处理

2.5.1 消息被“完全处理”的含义

2.5.2 如果一个消息被完全处理或完全处理失败会发生什么

2.5.3 Storm如何保证可靠性

2.5.4 Storm如何实现可靠性

2.5.5 调节可靠性

2.6 消息传输机制

2.6.1 ZeroMQ

2.6.2 Netty

2.6.3 自定义消息通信机制

2.7 Storm的开发环境与生产环境

2.7.1 开发环境与本地模式

2.7.2 生产环境与远程模式

2.7.3 开发环境与生产环境的对比

2.8 Storm拓扑的并行度(parallelism)

2.8.1 工作进程、执行器和任务

2.8.2 配置拓扑的并行度

1.工作进程的数量

2.执行器/线程的数量

3.任务的数量(Number of tasks)

2.8.3 拓扑示例

2.8.4 如何改变运行中拓扑的并行度

2.9 Storm命令行客户端

1.activate

2.classpath

3.deactivate

4.dev-zookeeper

5.drpc

6.help

7.jar

8.kill

9.list

10.localconfvalue

11.logviewer

12.nimbus

13.rebalance

14.remoteconfvalue

15.repl

16.shell

17.supervisor

18.ui

2.10 Javadoc文档

2.11 本章小结

第3章 拓扑详解

3.1 什么是拓扑

3.2 TopologyBuilder

3.3 流分组

3.3.1 什么是流分组

3.3.2 不同的流分组方式

1.随机分组

2.字段分组

3.广播分组

4.全局分组

5.无分组

6.直接分组

7.本地或者随机分组

8.自定义分组

3.4 一个简单的拓扑

3.5 在本地模式下运行拓扑

3.6 在生产集群上运行拓扑

3.6.1 常见的配置

3.6.2 杀死拓扑

3.6.3 更新运行中的拓扑

3.6.4 监控拓扑

3.7 拓扑的常见模式

3.7.1 流连接(Stream Join)

3.7.2 批处理(Batching)

3.7.3 BasicBolt

3.7.4 内存中缓存与字段的组合

3.7.5 流的top N

3.7.6 高效保存最近更新缓存对象的TimeCacheMap(已弃用)

3.7.7 分布式RPC的CoordinatedBolt与KeyedFairBolt

3.8 本地模式与StormSubmitter的对比

1.常见的本地模式的配置

2.Config.TOPOLOGY_MAX_TASK_PARALLELISM

3.Config.TOPOLOGY_DEBUG

3.9 多语言协议(Multi-Language Protocol)

1.协议(Protocol)

2.初始握手(Initial Handshake)

3.Spouts

4.Bolts

3.10 使用非JVM语言操作Storm

3.10.1 支持的非Java语言

3.10.2 对Storm使用非Java语言

3.10.3 实现非Java DSL的笔记

3.11 Hook

3.12 本章小结

第4章 组件详解

4.1 基本接口

4.1.1 IComponent接口

4.1.2 ISpout接口

4.1.3 IBolt接口

4.1.4 IRichSpout与IRichBolt接口

4.1.5 IBasicBolt接口

4.1.6 IStateSpout与IRichStateSpout接口

4.2 基本抽象类

4.2.1 BaseComponent抽象类

4.2.2 BaseRichSpout抽象类

4.2.3 BaseRichBolt抽象类

4.2.4 BaseBasicBolt抽象类

4.3 事务接口

4.3.1 IPartitionedTransactionalSpout

4.3.2 IOpaquePartitionedTransactionalSpout

4.3.3 ITransactionalSpout

4.3.4 ICommitterTransactionalSpout

4.3.5 IBatchBolt

4.4 组件之间的相互关系

4.5 本章小结

第5章 Spout详解

5.1 可靠的与不可靠的消息

5.2 Spout获取数据的方式

5.2.1 直接连接(Direct Connection)

5.2.2 消息队列(Enqueued Messages)

5.2.3 DRPC(分布式RPC)

5.3 常用的Spout

5.3.1 Kestrel作为Spout的数据源

5.3.2 AMQP作为Spout的数据源

5.3.3 JMS作为Spout的数据源

5.3.4 Redis作为Spout的数据源

5.3.5 beanstalkd作为Spout的数据源

5.4 学习编写Spout类

5.5 本章小结

第6章 Bolt详解

6.1 Bolt概述

6.2 可靠的与不可靠的Bolt

6.2.1 使用Anchoring机制实现可靠的Bolt

6.2.2 使用IBasicBolt接口实现自动确认

6.3 复合流与复合Anchoring

6.3.1 复合流

6.3.2 复合Anchoring

6.4 使用其他语言定义Bolt

6.5 学习编写Bolt类

6.5.1 可靠的Bolt

6.5.2 不可靠的Bolt

6.6 本章小结

第7章 ZooKeeper详解

7.1 ZooKeeper简介

7.2 ZooKeeper的下载和部署

7.2.1 ZooKeeper的下载

7.2.2 ZooKeeper的部署

1.添加ZK_HOME到环境变量中

2.解压并移动文件

7.3 ZooKeeper的配置

1.配置zoo.cfg文件

2.创建myid文件

7.4 ZooKeeper的运行

1.启动ZooKeeper

2.停止ZooKeeper

3.重新启动ZooKeeper

4.查看ZooKeeper状态

5.zkServer.sh的详细用法

6.从进程角度查看ZooKeeper

7.5 ZooKeeper的本地模式实例

7.6 ZooKeeper的数据模型

7.6.1 ZNode

1.监视器

2.数据访问

3.暂态节点(Ephemeral Node)

4.顺序节点——唯一命名

7.6.2 ZooKeeper中的时间

1.Zxid

2.版本号

3.Tick

4.真实时间(Real time)

7.6.3 ZooKeeper的Stat结构

7.7 ZooKeeper的命令行操作范例

1.启动ZooKeeper服务

2.连接到ZooKeeper

3.获取帮助

4.查看目录清单

5.创建ZNode

6.获取ZNode的数据

7.设置ZNode的数据

8.删除ZNode

7.8 Storm在ZooKeeper中的目录结构

7.9 本章小结

第8章 基础软件的安装与使用

8.1 Linux的基本操作

8.1.1 环境变量

8.1.2 常用命令

1.创建用户

2.把用户加入sudoers组

3.修改主机名

4.修改hosts文件

5.关闭防火墙

6.中英文操作界面互换

7.集群SSH无密码(单点对多点)

8.集群SSH无密码(多点对多点)

9.常用网络服务命令

8.2 JDK的下载与配置

8.2.1 Sun JDK的下载

8.2.2 在Linux下安装JDK

1.卸载OpenJDK

2.安装Sun JDK

8.2.3 在Windows下安装JDK

1.JDK的安装

2.JDK的配置

8.3 GitHub托管项目的下载

1.使用浏览器下载

2.使用Linux终端下载

3.使用Subversion软件

8.4 Maven的下载与配置

8.4.1 Maven的下载

8.4.2 在Linux下部署Maven

8.4.3 在Windows下部署Maven

8.5 其他软件——Notepad++

8.6 本章小结

第9章 Storm的安装与配置

9.1 Storm集群的安装步骤与准备工作

9.1.1 搭建ZooKeeper集群

9.1.2 安装Storm的本地依赖

1.ZMQ 2.1.7

2.JZMQ

3.Java 6

4.Python 2.6.6

5.unzip

9.1.3 下载并解压Storm发行版本

1.在线与部署

2.移动下载目录到STORM_HOME

3.配置环境变量

9.1.4 配置storm.yaml文件

1.本地模式storm.yaml文件的配置

2.集群模式storm.yaml文件的配置

3.使用Netty作为消息传输的配置

9.1.5 启动Storm的守护进程

9.2 本地模式的Storm完整的配置命令

9.3 本章小结

第10章 Storm集群搭建实践

10.1 准备工作

10.1.1 概述

10.1.2 配置hosts文件

10.1.3 配置静态IP

1.使用图形用户界面直接修改

2.使用命令行终端配置

10.1.4 集群SSH无密码

10.1.5 修改主机名

10.1.6 关闭防火墙

10.1.7 同步时间

10.1.8 安装JDK

10.2 ZooKeeper集群的搭建

10.2.1 部署第一个节点

1.下载与安装ZooKeeper

2.配置zoo.cfg文件

10.2.2 部署第i个节点

10.2.3 启动ZooKeeper集群

10.2.4 查看ZooKeeper状态

10.2.5 关闭ZooKeeper集群

10.2.6 清理ZooKeeper集群

10.3 Storm集群的搭建

10.3.1 安装Storm依赖(每个Storm节点)

1.安装zeromq

2.安装jzmq

10.3.2 部署第一个节点

1.下载与安装Storm

2.配置storm.yaml文件

10.3.3 部署第i个节点

10.3.4 启动Storm守护进程

1.Nimbus节点

2.Supervisor节点

3.查看集群的进程启动情况

10.4 本章小结

第11章 准备Storm的开发环境

11.1 Storm的开发环境

11.1.1 什么是Storm的开发环境

11.1.2 如何管理Storm

1.使用Maven管理Storm

2.使用Storm作为库

11.1.3 如何提交拓扑到集群

11.2 Eclipse的下载与配置

11.2.1 Eclipse的下载

11.2.2 Eclipse的配置与运行

11.2.3 Eclipse插件的安装

11.3 使用Maven管理项目

11.3.1 Maven的下载与配置

11.3.2 配置pom.xml文件

1.配置properties

2.配置repository

3.配置dependency

4.配置plugin

11.3.3 运行Maven命令

1.打包命令

2.生成Eclipse项目的命令

11.4 使用Nexus搭建本地Maven私服

11.4.1 下载Nexus

11.4.2 运行Nexus

11.4.3 登录Nexus后台

11.4.4 配置Repositories

1.配置proxy

2.配置hosted

3.配置group

11.4.5 配置setting.xml文件

11.4.6 修改Eclipse的Maven插件的配置

11.5 使用SVN管理代码版本

11.5.1 在Windows下搭建SVN服务器

11.5.2 在Linux下搭建SVN服务器

11.5.3 安装SVN客户端

11.6 部署单节点的Storm集群

11.6.1 部署伪分布的ZooKeeper

11.6.2 部署伪分布的Storm集群

11.7 本章小结

第12章 开发自己的Storm应用

12.1 新建Maven项目

12.2 修改为适合Storm开发的项目

12.2.1 对包名进行分类管理

12.2.2 修改pom.xml文件

1.添加dependency

2.添加repository

3.添加plugin

12.3 编写代码

12.3.1 编写Spout类

12.3.2 编写Bolt类

12.3.3 编写Topology类

12.4 本地测试运行

12.5 提交到Storm集群运行

12.5.1 使用Maven打包

1.配置pom.xml文件

2.运行maven打包命令

12.5.2 提交jar包到集群

12.6 本章小结

第13章 storm-starter详解

13.1 storm-starter项目概述

13.2 storm-starter的下载

13.3 使用Maven进行管理

13.3.1 使用Maven打包storm-starter

13.3.2 使用Maven直接运行WordCountTopology

13.3.3 使用Maven运行单元测试

13.4 在Eclipse中运行

13.4.1 新建Maven项目的方式

13.4.2 导入已存在的项目的方式

13.5 storm-starter的入门例子

13.5.1 ExclamationTopology

13.5.2 WordCountTopology

13.5.3 ReachTopology

13.6 storm-starter的其他例子

13.6.1 BasicDRPCTopology

13.6.2 ManualDRPC

13.6.3 PrintSampleStream

13.6.4 RollingTopWords

13.6.5 SingleJoinExample

13.6.6 TransactionalGlobalCount

13.6.7 TransactionalWords

13.7 本章小结

第14章 研发与集群管理技巧

14.1 使用daemontools监控Storm进程

14.1.1 daemontools简介

14.1.2 安装daemontools

14.1.3 编写监控脚本

1.nimbus节点的监控

2.supervisor节点的监控

3.验证storm进程不会死掉

4.查看/service/storm进程的ID

5.杀死已经存在的storm进程

14.2 使用Monit监控Storm

14.2.1 Monit简介

14.2.2 安装Monit

1.安装Monit

2.错误排除

14.2.3 配置Monit

1.复制配置文件并设置权限

2.修改配置文件的内容

14.2.4 启动Monit

14.2.5 获取Monit帮助信息

1.启动

2.查看状态信息

3.重新加载配置

4.退出

14.3 常用的集群操作命令

1.关闭集群的防火墙(运行在root用户下)

2.查看集群的主机名

3.修改主机名(运行在root用户下)

4.查看集群的Java版本

5.查看集群的java进程

6.查看/home目录下的用户

7.批量发送文件

8.批量获取文件

9.查看集群的系统时间

10.同步集群的系统时间

14.4 使用Storm的经验与建议

14.5 本章小结

第15章 DRPC详解

15.1 概述

15.2 DRPCTopologyBuilder

15.2.1 LinearDRPCTopologyBuilder

15.2.2 LinearDRPCTopologyBuilder提供的方法

1.构造函数

2.addBolt方法

3.createLocalTopology方法

4.createRemoteTopology方法

15.2.3 LinearDRPCTopologyBuilder使用范例

15.2.4 LinearDRPCTopologyBuilder的工作原理

15.2.5 LinearDRPCTopologyBuilder目前已弃用

15.3 本地模式的DRPC

15.4 远程模式的DRPC

15.5 一个复杂的DRPC例子(计算reach值)

15.6 非线性DRPC

15.7 本章小结

第16章 事务拓扑详解

16.1 什么是事务拓扑

16.1.1 设计1

16.1.2 设计2

16.1.3 设计3(Storm的设计)

16.2 事务拓扑的设计细节

16.3 事务拓扑的实现细节

16.3.1 事务Spout的工作原理

16.3.2 “对于给定的事务id不能发射相同的Batch”的处理

16.3.3 更多的细节

16.4 事务拓扑API

16.4.1 Bolt

1.Bolt的处理阶段(Processing Phase)和提交阶段(Commit Phase)

2.Acking

3.事务失败

16.4.2 事务Spout

16.4.3 配置

16.5 TransactionalTopologyBuilder

16.5.1 TransactionalTopologyBuilder提供的方法

1.构造函数

2.buildTopologyBuilder方法

3.buildTopology方法

4.getSpoutDeclarer方法

5.setBolt方法与setCommitterBolt方法

16.5.2 TransactionalTopologyBuilder类已弃用

16.6 一个简单的例子

16.7 本章小结

第17章 Trident详解

17.1 Trident概述

17.1.1 简单的例子——单词统计(TridentWordCount)

17.1.2 另一个例子——计算Reach值(TridentReach)

17.1.3 字段和元组

17.1.4 状态(State)

17.1.5 Trident拓扑的执行

17.2 Trident API

17.2.1 概述

17.2.2 本地分区操作

1.函数(Function)

2.过滤器(Filter)

3.分区聚合(partitionAggregate)

4.状态查询(stateQuery)与分区持久化(partitionPersist)

5.投影(projection)

17.2.3 重新分区操作

17.2.4 聚合操作

17.2.5 流分组操作

17.2.6 合并与连接

17.3 Trident的状态

17.3.1 Trident状态分类

17.3.2 事务Spout(Transactional Spout)

17.3.3 不透明事务Spout(Opaque Transactional Spout)

17.3.4 非事务Spout(Non-transactional Spout)

17.3.5 Spout与State之间的联系

17.3.6 State API

17.3.7 persistentAggregate方法

17.3.8 实现MapStates

17.4 Trident Spout

17.4.1 流水线(Pipelining)

17.4.2 Trident Spout的类型

17.5 本章小结

第18章 Storm的内部实现

18.1 文件系统分析

18.2 数据目录结构

18.2.1 Nimbus节点的目录结构

18.2.2 Supervisor节点的目录结构

18.3 代码库的结构

18.3.1 storm.thrift

18.3.2 Java接口

18.3.3 实现

1.主要的Java包

2.主要的Clojure命名空间

18.4 拓扑的生命周期

18.4.1 启动拓扑

1.使用StormSubmitter提交代码

2.Nimbus处理

3.Supervisor处理

4.启动工作进程(Worker processe)

5.建立任务

18.4.2 监控拓扑

18.4.3 杀死拓扑

18.5 Acking框架的实现

18.5.1 异或计算的基本原理

18.5.2 Acking框架的实现原理

18.5.3 Acker的execute方法

18.5.4 待定元组(pending tuple)和RotatingMap

18.6 Metric

18.7 本章小结

第19章 Storm相关的其他项目

19.1 JStorm项目

19.1.1 项目简介

1.JStorm的优点

2.应用场景

3.维护团队

19.1.2 下载与部署

19.1.3 源代码编译

19.2 storm-deploy项目

19.3 Storm与Kafka

19.3.1 Kafka简介

19.3.2 Kafka的安装

19.3.3 启动服务

1.启动单独的ZooKeeper

2.启动Kafka

19.3.4 测试运行

1.副本为1的话题

2.副本为3的话题

3.关闭服务

19.3.5 Storm与Kafka的项目

19.4 storm-kestrel项目

19.4.1 storm-kestrel项目简介

19.4.2 使用storm-kestrel项目

1.Spout的用法

2.使用Maven进行管理

19.4.3 Kestrel服务器和队列

19.4.4 添加元素到kestrel

19.4.5 从Kestrel中移除元素

19.4.6 持续添加元素到Kestrel

19.4.7 使用KestrelSpout

19.4.8 执行

19.5 本章小结

第20章 企业应用案例

20.1 Storm席卷众多互联网企业

20.1.1 Storm的典型应用场景

20.1.2 Storm的三大基本应用

1.流处理(Stream Processing)

2.连续计算(Continuous Computation)

3.分布式RPC(Distributed RPC)

20.2 Storm在Twitter中的应用

20.2.1 Twitter公司简介

20.2.2 Storm帮助Twitter提升产品性能

20.2.3 MapR在Twitter中的应用简介

20.3 Storm在阿里巴巴集团的应用

20.3.1 阿里巴巴集团简介

20.3.2 Storm在阿里巴巴的应用

20.3.3 Storm在淘宝公司的应用

20.3.4 Storm在支付宝公司的应用

20.4 其他应用Storm的知名企业和项目

1.Storm在Groupon公司的应用

2.Storm在The Weather Channel公司的应用

3.Storm在FullContact公司的应用

4.Storm在雅虎公司的应用

5.Storm在InfoChimps公司的应用

8.Storm在Flipboard公司的应用

9.Storm在Rubicon项目上的应用

10.Storm在Ooyala公司的应用

11.Storm在Klout公司的应用

12.Storm在Premise公司的应用

13.Storm在Wego公司的应用

14.Storm在Rocket Fuel公司的应用

15.Storm在QuickLizard公司的应用

16.Storm在spider.io公司的应用

17.Storm在8digits公司的应用

18.Storm在NaviSite公司的应用

19.Storm在Glyph公司的应用

20.Storm在Heartbyte的应用

21.Storm在2lemetry的应用

22.Storm在Nodeable公司的应用

23.Storm在TwitSprout公司的应用

24.Storm在HappyElements公司的应用

25.Storm在IDEXX实验室的应用

26.Storm在友盟公司的应用

27.Storm在Admaster公司的应用

28.Storm在SocialMetrix公司的应用

29.Storm在Needium公司的应用

30.Storm在Parse.ly公司的应用

31.Storm在PARC公司的应用

32.Storm在GumGum平台的应用

33.Storm在CrowdFlower公司的应用

34.Storm在Digital Sandbox公司的应用

35.Storm在Keepcon公司的应用

36.Storm在Visible Measures公司的应用

37.Storm在O2mc公司的应用

38.Storm在The Ladders公司的应用

39.Storm在SemLab的应用

40.Storm在Visual Revenue公司的应用

41.Storm在PeerIndex公司的应用

42.Storm在eClick公司的应用

43.Storm在Wayfair公司的应用

44.Storm在InnoQuant公司的应用

45.Storm在Fliptop公司的应用

46.Storm在Trovit的应用

20.5 本章小结

参考资料

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部