新書推薦:
《
大模型启示录
》
售價:HK$
115.0
《
东法西渐:19世纪前西方对中国法的记述与评价
》
售價:HK$
207.0
《
养育男孩:官方升级版
》
售價:HK$
51.8
《
小原流花道技法教程
》
售價:HK$
112.7
《
少女映像室 唯美人像摄影从入门到实战
》
售價:HK$
113.9
《
詹姆斯·伍德系列:不负责任的自我:论笑与小说(“美国图书评论奖”入围作品 当代重要文学批评家詹姆斯·伍德对“文学中的笑与喜剧”的精湛研究)
》
售價:HK$
89.7
《
武当内家散手
》
售價:HK$
51.8
《
诛吕:“诸吕之乱”的真相与吕太后时期的权力结构
》
售價:HK$
102.4
|
內容簡介: |
本书主要对Spark和Spark的安装、配置、主要架构和组件进行介绍,并介绍如何利用SparkStreaming进行实时数据的处理,讨论利用Spark Streaming的多种API和操作进行近实时的分布式日志流的处理。本书要求读者对Scala有很好的认识和理解,以便能够利用核心组件和应用进行高效编程。
|
關於作者: |
Sumit Gupta从事设计、管理并提供各种业务领域(如酒店业务,医疗保健,风险管理,保险业务等)的企业解决方案将近9年以上,是业内经验丰富的专家、技术创新者和传播者。他热爱技术,在软件行业拥有14年的实践经验。在过去4~5年中一直使用大数据和云计算技术来解决复杂的业务问题。
现任北方工业大学教授、北方工业大学云计算研究中心主任。现兼任中国计算机学会服务计算专业委员会副主任、中国电子学会云计算专家委员会委员、计算机学报编委。曾就职于德国国家计算机研究中心、德国弗郎霍夫软件技术研究所和美国大规模分布系统实验室等机构。2000年被聘为中科院计算技术研究所研究员,入选中科院海外杰出人才计划(中科院百人计划,2001期)。曾任中科院研究生院教授、博士生导师、中科院计算技术研究所网格与服务计算研究中心主任、软件集成与服务计算研究分中心主任、中德软件集成技术联合实验室主任。在数据库、工作流、分布对象中间件、移动计算、网格计算等多个领域主持完成了863重点项目、国家基金重点项目、973子项等30项研究课题,发表论文140余篇,出版专著4部。申报或合作申报发明专利和软件登记50项,其中已向工业界转化5项。是目前国内关于云计算方面研究的*科学家。
|
目錄:
|
目?录
第1章?Spark和Spark Streaming的安装与配置1
安装Spark2
硬件需求2
软件需求4
安装Spark扩展Spark Streaming7
配置和运行Spark集群8
你的第一个Spark程序11
用Scala编码Spark作业12
用Java开发Spark作业15
管理员开发者工具18
集群管理 18
提交Spark作业19
故障定位 20
配置端口号 20
类路径问题类没有发现 20
其他常见异常20
总结21
第2章?Spark和Spark Streaming的体系结构与组件23
批处理和实时数据处理的比较24
批处理24
实时数据处理26
Spark的体系结构28
Spark对比Hadoop28
Spark的层次化结构29
Spark Streaming的体系结构31
Spark Streaming是什么32
Spark Streaming的上层体系结构32
你的第一个Spark Streaming程序34
用Scala编码Spark Streaming作业34
用Java编码Spark Streaming作业37
客户端程序39
打包和部署一个Spark Streaming作业41
总结43
第3章?实时处理分布式日志文件45
Spark的封装结构和客户端API46
Spark内核48
Spark库及扩展54
弹性分布式数据集及离散流58
弹性分布式数据集59
离散流63
从分布的、多样的数据源中加载数据65
Flume 框架67
Flume的安装和配置69
配置Spark以接收Flume事件73
封装和部署Spark Streaming作业77
分布式日志文件处理的总体架构77
总结78
第4章?在流数据中应用Transformation79
理解并应用Transformation功能80
模拟日志流80
功能操作82
转换操作89
窗口操作91
性能调优94
分块和并行化94
序列化94
Spark内存调优95
总结97
第5章?日志分析数据的持久化99
Spark Streaming的输出操作100
集成Cassandra110
安装和配置Apache Cassandra110
配置Spark112
通过编写Spark作业将流式网页日志存入Cassandra113
总结120
第6章?与Spark高级库集成121
实时查询流数据122
了解Spark SQL122
集成Spark SQL与流数据129
图的分析Spark GraphX135
GraphX API介绍137
集成Spark Streaming140
总结147
第7章?产品部署149
Spark部署模式150
部署在Apache Mesos上151
部署在Hadoop或者YARN上156
高可用性和容错性160
单机模式下的高可用性160
Mesos或者YARN下的高可用性162
容错性162
Streaming 作业的监听166
应用程序UI界面作业UI界面166
与其他监控工具的集成169
总结170
|
內容試閱:
|
序?言
处理大规模数据并产生具有商业前瞻性的信息是当下的流行趋势,它的目标是在历史数据上的商务智能(Business Intelligence,BI)挖掘。很多企业致力于开发数据仓库(https:en.wikipedia.orgwikiData_warehouse),希望尽可能地获取多方面的数据,并选择合适的BI工具以分析数据仓库中的数据。然而,开发数据仓库是复杂、耗时且昂贵的过程,可能会花费几个月甚至几年的时间。
毫无疑问,Hadoop及其生态系统提供了解决大数据问题的新框架。这种解决方案廉价且可扩展,能够在几小时内处理TB级别的数据,而这在过去要花上几天
时间。
下图为典型的Apache Hadoop生态系统及其用于解决大数据问题的多种组件。
图片来源:http:www.dezyre.comarticlebig-data-and-hadoop-training-hadoop-components-and-architecture114
如果说设计Hadoop只是为进行批处理,就有点片面了。因为在一些商务案例中,实时的或者近实时的商业数据分析需求量也很大,这被称作实时商务智能(Real-Time Business Intelligence,RTBI)或者近实时商务智能(Near Real-Time Business Intelligence,NRTBI)(https:en.wikipedia.orgwikiReal-time_business_intelligence),也被称作快数据(Fast Data),它代表近实时的决策能力和缩短商务决策时间数量级的能力。
目前已经出现了多款平台来满足这些企业的实时数据分析需求,这些平台功能强大、易用而且开源。其中最引人注目的两个平台就是Apache Storm和Apache Spark,它们给潜在用户提供了更宽泛的实时数据处理能力。这两个项目同属Apache软件基金会,彼此的处理能力既有重叠的部分,又各具特色,因此在项目开发中扮演着不同的角色。
对于分布式流数据的可靠处理来讲,Apache Storm是一个出色的框架,或者可以说它适用于复杂事件处理(Complex Event Processing,CEP)风格的数据处理(https:en.wikipedia.orgwikiComplex_event_processing)。它能解
决大多数近实时数据处理案例,但是它解决不了下面这些问题:
如果同样的数据既需要批处理,也需要近实时的处理怎么办?难道要部署两个不同的框架吗?
怎么融合两种不同来源的数据流?
除了Java,我还能用别的编程语言吗?
怎么把处理近实时流的系统和其他系统整合起来,如图片、SQL、Hive等?
近实时的推荐、聚类、分类怎么处理?
Apache Spark解决了上述问题,它不仅保留了Hadoop和Storm的优点,还可以在一个统一的框架下使用多种语言编码,如Python、Java、Scala。你甚至还可以在数据流与批处理的应用案例中使用同一段代码。同时它也支持多种库与扩展,例如:
Spark GraphX:用于开发图形编程。
Spark DataFrames and SQL:执行SQL语句。
Spark MLlib:执行用于推荐、聚类和分类的机器学习算法。
Spark Streaming:用于实时处理流数据。
Apache Spark的一个值得注意的特点是这些库和扩展的互用。例如,近实时数据流可以被转换成图形或者用SQL语句进行分析,或者可以在流数据上执行机器学习算法来提供推荐、聚类或者分类。
很有趣,不是吗?
Apache Spark最开始是加利福尼亚大学伯克利分校的AMP实验室开发的一个项目,后来加入Apache育成计划并于2014年2月成为顶级项目。Spark不仅是一个通用的分布式计算平台,它同时支持批处理和近实时数据的处理。
接下来我们将讨论用Spark Streaming进行实时处理的实质问题。
在本书中,我们将介绍Spark Streaming的多方面内容,包括它的安装和配置、体系结构、操作、与其他Spark库及NoSQL数据库的融合,以及产品环境中的部署
问题。
本书主要内容
第1章,Spark和Spark Streaming的安装与配置。首先详细介绍Spark和Spark Streaming的安装和配置,包括运行Spark作业的软硬件配置,Spark封装的一些工具和实用程序的功能与用法。然后介绍开发者如何用Java和Scala编写他们的第一个Spark作业,以及如何在集群上执行这个作业。最后讨论Spark和Spark Streaming常见错误的定位技巧。
第2章,Spark和Spark Streaming的体系结构与组件。首先介绍批处理和实时数据处理的总体模型和复杂性。然后详细描述Spark体系结构,以及Spark Streaming在体系结构中的位置。最后介绍开发者如何编写他们的第一段Spark Streaming代码并在Spark集群上执行。
第3章,实时处理分布式日志文件。首先讨论Spark和Spark Streaming的包结构和多个重要的API。然后讨论Spark和Spark Streaming的两个核心组件弹性分布式数据集和离散流。最后介绍一个分布式日志处理案例,这个案例利用Apache Flume从分布式数据源加载数据并交由Spark Streaming分发和执行作业。
第4章,在流数据中应用Transformation。首先讨论Spark Streaming提供的多种转换操作,包括功能、转换和窗口操作,然后在流数据上应用这些转换操作来改进我们的分布式日志处理案例。同时讨论了改善Spark Streaming作业性能的多种因素和一些考虑。
第5章,日志分析数据的持久化。介绍Spark Streaming的输出操作,并用Apache Cassandra来持久化Spark Streaming接收和处理的分布式日志数据。
第6章,与Spark高级库集成。改善分布式日志文件处理案例并讨论了Spark Streaming与Spark高级库(比如GraphX和Spark SQL)的集成。
第7章,产品部署。讨论了在产品中部署Spark Streaming时需要考虑的多方面的问题,包括高可用性、延迟容忍、监控等。同时讨论了在其他集群计算框架(如YARN和Apache Mesos)中部署Spark Streaming作业的过程。
看这本书需要哪些准备
你应该已经有一些Scala的编程经验,并对某个分布式计算平台(如Apache Hadoop)有一些基本的知识和了解。
本书的目标读者
本书需要读者对Scala有很好的认识和理解,以便能够利用核心组件和应用进行高效编程。
如果你正在阅读本书,那么你可能已经对Scala有了丰富的了解。这本书讲的是利用Spark Streaming进行实时数据的处理,同时讨论了利用Spark Streaming的多种API和操作进行近实时的分布式日志流的处理。
惯例
在本书中,你会看到一些文本的格式和其他信息的格式不同,这里先举几个例子并解释它们的含义。
文本、数据库表名、文件夹名、文件名、文件扩展名、路径、伪URL、用户输入和Twitter标签的字体像下面这样:在Linux操作系统上执行sudo ulimit n 20000可以增加ulimit。
语句块都写成下面的形式:
public class JavaFirstSparkExample {
public static void mainString args[]{
Java Main Method
}
}
命令行的输入和输出都写成下面的形式:
export FLUME_HOME=<path of extracted Flume binaries>
新定义和重要的名词都会用粗体标明。在屏幕上看到的词,比如在菜单或者对话框中看到的词,会以如下文本的形式显示:单击下一步按钮可以移动到下一屏。
警告或者重要提示会出现在这样的方框里。
提示和技巧会这么写。
读者反馈
欢迎我们的读者反馈意见。你喜欢或者不喜欢本书的哪一点,请告诉我们。读者的反馈对我们来说非常重要,这能帮助我们做出读者最能获益的内容来。
请将普通反馈通过E-mail发送到feedback@packtpub.com,并附上书名和你的反馈信息。
如果你希望在你精通的或者感兴趣的话题上写本书或者贡献内容,那么请参看www.packtpub.comauthors的作者指南。
用户支持
你现在已经是Packt书籍的荣誉用户了,我们有一系列方法来帮助你从你购买的书中获取最大的价值。
下载样例代码
你可以从http:www.packtpub.com的账户里下载所有你购买过的Packt书籍的样例代码。如果你是在其他地方买到的这本书,则可以访问http:www.packtpub.comsupport并注册,我们会把样例代码通过电子邮件发送给你。
勘误
虽然我们已经十分小心地确保本书内容的准确性,但犯错是难免的。如果你在这本书里发现了错误(可能是文本错误,也可能是代码错误),那么十分感谢你能反馈给我们。这能避免其他读者因同样的错误而懊恼,也能帮助我们在本书后续的版本中纠正这个错误。如果你发现了任何错误,那么请通过http:www.packtpub.comsubmit-errata反馈给我们,你只需选择书名,单击勘误提交表链接,并输入你的勘误具体信息。一旦你的勘误信息被核实,你提交的信息就会被接受,并上传到我们的网站上,或者加入该书的已有勘误信息列表中。
你可以在https:www.packtpub.combooksconten
|
|