编辑推荐
适读人群 :本书适合所有的对广告分析、大数据、高可用分布式系统感兴趣的所有爱好者 资深大数据工程师,立足于企业真实场景,系统梳理和详尽讲解全栈大数据核心技术;
为企业大数据技术选型和大数据平台构建提供成熟的解决方案,包含大量实用案例
内容简介
这是一本立足于企业真实的商用项目来讲解如何高效从事大数据实践的著作。技术层面,从全栈的角度系统梳理和详尽讲解了大数据的核心技术,包括Spark、Druid、Flume、Kafka等,让我们在纷繁复杂的技术中少走弯路;经验层面,为企业的大数据技术选型和大数据平台建设提供了成熟的解决方案;实操层面,提供了大量的案例,其中包括2个综合性的案例。
全书一共分为三个部分:
第一部分(第1章):主要介绍了企业大数据系统的前期准备工作,包括构建企业大数据处理系统需要的软件环境和集群环境是如何搭建的。
第二部分(第2~7章):依次重点讲解了Spark的基本原理、使用方法和优化方式;Druid的基本原理、集群的搭建过程,以及相关的各种操作;日志收集系统Flume的基本架构、关键组件,以及分层日志收集架构的设计与实践;分布式消息队列Kafka的基本架构和集群搭建过程,以及使用Java语言实现客户端API的详细过程。
第三部分(第8~9章):详细讲解了企业大数据处理的两个实际应用案例,分别是基于Druid构建多维数据分析平台和基于JMX指标的监控系统。
作者简介
肖冠宇
资深大数据研发工程师,有多年的大数据工作经验,对高性能分布式系统架构、大数据技术、数据分析等有深入的研究。
曾就职于人民网人民在线和乐视网智能中心大数据部,主要从事大数据系统研发和广告数据分析;现就职于小米旗下的田米科技,担任大数据研发工程师。
精彩书评
大数据时代,传统的关系型数据库已经越来越无法满足企业存储和处理海量数据的需求。感谢Google和开源界给我们带来了Hadoop生态系统,赋予了我们应对海量数据的能力。然后,由于整个Hadoop生态系统技术和产品极为丰富,而且在不断发展,技术选型对很多企业来说是个难题,本书尝试在这方面给大家一些建议和成功的解决方案。相信通过作者对于大数据技术的梳理与总结,定能让读者少走弯路,更快更好地掌握大数据的相关技术。
——姜承尧 腾讯金融支付数据库研发与运营组负责人
作者系统整理了多年的工程实践经验,详细介绍了一个典型大数据平台的架构,可以帮助从事大数据平台开发和运维工作的读者快速掌握所需的技能,因此我非常乐意向大家推荐本书。
——谢磊 小象学院创始人
本书采用理论与实践相结合的方式,由浅入深地介绍了大数据相关技术,隆重向喜爱大数据或者已经从事大数据工作的同学推荐。
——胡春辉 田米科技CTO
冠宇是大数据领域的一名积极探索者,面对工作中层出不穷的问题,敢于用创新的方案去解决。本书从数据收集开始,讲解了一整套端到端的企业大数据平台建设方案和经验。计划构建和启用大数据平台或者需要改进数据处理能力的工程师,能通过此书受益。
——罗宏宇 乐视智能中心大数据部技术总监
本书从实战角度出发,系统地梳理和深入地讲解了目前业界常用的大数据技术,并且将工作中的经验融合到本书中,非常适合于想转型学习大数据技术的初学者,或者对大数据有深入的理论基础却欠缺实践经验的工程师,同时也适合大数据架构师作为构建整体解决方案的参考书。
——程超 合众支付资深技术专家
本书中涉及的内容深入浅出,值得初学者拿来分析和尝试。“纸上得来终觉浅,绝知此事要躬行”,希望这本书能给所有读者带来美好的收获。也希望老友冠宇分享更多的学习和工程经验!
——刘宇 唯品会自然语言高级算法工程师
目录
前 言
第一部分 准备工作
第1章 基础环境准备 2
1.1 软件环境准备 2
1.2 集群环境准备 4
1.2.1 Zookeeper集群部署 4
1.2.2 Hadoop部署 6
1.3 小结 15
第二部分 核心技术
第2章 Spark详解 18
2.1 Spark概述 18
2.1.1 Spark概述 18
2.1.2 Shuff?le详解 25
2.2 Spark SQL 29
2.2.1 SparkSession 29
2.2.2 DataFrame 30
2.2.3 DataSet 35
2.3 Structured Streaming 35
2.3.1 数据源 36
2.3.2 输出到外部存储 38
2.3.3 WordCount示例 40
2.4 Spark优化 42
2.4.1 数据优化 42
2.4.2 代码优化 44
2.4.3 参数优化 46
2.5 小结 48
第3章 Druid原理及部署 49
3.1 架构设计 49
3.1.1 节点类型 49
3.1.2 Segment介绍 57
3.1.3 容错处理 59
3.1.4 路由节点 60
3.2 集群部署 63
3.2.1 集群规划 63
3.2.2 配置安装 64
3.3 小结 72
第4章 Druid数据摄入 73
4.1 模式设计 73
4.1.1 设计概述 73
4.1.2 数据解析 75
4.1.3 Segment分区 79
4.1.4 模式更改 81
4.2 批量数据摄入 81
4.3 流数据摄入 87
4.3.1 Tranquility 88
4.3.2 StreamPush 91
4.3.3 从Kafka中摄取数据 92
4.4 数据更新 94
4.5 小结 95
第5章 Druid客户端 96
5.1 涉及组件 96
5.1.1 查询相关 96
5.1.2 过滤器 99
5.1.3 聚合粒度 101
5.1.4 聚合器 105
5.2 查询类型 109
5.2.1 时间序列查询 109
5.2.2 TopN查询 111
5.2.3 分组查询 113
5.2.4 元数据查询 117
5.2.5 搜索查询 121
5.3 查询API 125
5.3.1 RESTful介绍 125
5.3.2 Jersey客户端 126
5.4 小结 129
第6章 日志收集 130
6.1 Flume介绍 130
6.1.1 基本架构 131
6.2 Flume应用实践 144
6.2.1 拦截器、选择器实践 144
6.2.2 负载均衡、故障转移实践 149
6.2.3 设计与实践 150
6.3 小结 154
第7章 分布式消息队列 155
7.1 Kafka介绍 155
7.1.1 基本架构 155
7.1.2 高吞吐的实现 157
7.1.3 高可用的实现 160
7.2 安装部署 161
7.2.1 Broker配置参数 161
7.2.2 分布式部署 162
7.3 客户端API 163
7.3.1 Producer API 164
7.3.2 Consumer API 165
7.4 小结 169
第三部分 项目实践
第8章 数据平台 172
8.1 需求分析 172
8.2 功能实现 173
8.2.1 架构设计 173
8.2.2 关键功能实现 175
8.3 小结 184
第9章 监控系统 185
9.1 Inf?luxDB 185
9.1.1 Inf?luxDB简介 186
9.1.2 Inf?luxDB安装 186
9.1.3 Inf?luxDB操作 188
9.1.4 Inf?luxDB客户端 191
9.2 JMXTrans 192
9.2.1 JMXTrans介绍 192
9.2.2 JMXTrans安装 194
9.2.3 JMXTrans使用 195
9.3 Grafana 198
9.3.1 Grafana安装 198
9.3.2 Grafana使用 199
9.4 小结 208
前言/序言
我写本书的初衷是将自己在企业工作中应用的技术归纳总结,系统地将大数据处理相关技术融合在一起,给已经从事大数据相关技术研发工作的朋友,或是准备从其他行业转行进入大数据领域学习相关技术的朋友提供一份参考资料。希望本书能够帮助更多从事大数据相关工作的人,也希望通过本书结识更多热爱大数据的朋友。
目前,大数据已不只停留在概念阶段,而是在各领域成功落地,并取得了丰硕的成果。大数据已经渗透到生活中的各个方面,距离我们最近且与我们生活息息相关的大数据项目有交通大数据、医疗大数据、金融大数据、社交媒体大数据、互联网大数据等。如此多的大数据项目能够成功落地,关键原因在于数据来源的多样化,数据量的爆发式增长,新兴技术的快速发展,以及市场创新需求的不断增多,这为各种大数据项目提供了庞大的数据源,通过多种技术的综合应用,可不断挖掘出大数据背后的社会价值和商业价值。
随着开源社区的不断发展,越来越多的优秀项目被开源,以处理各种大数据场景下的问题和挑战。作为目前大数据生态系统内的早期开源项目,Hadoop在廉价机器上实现了分布式数据存储和高性能分布式计算,大大降低了数据存储和计算成本。Hadoop提供的分布式存储系统HDFS、大数据集并行计算编程模型MapReduce、资源调度框架YARN已经被广泛应用,为大数据生态系统的发展奠定了坚实的基础。如今,Hadoop大数据生态圈发展已经非常全面,涉及领域众多,在大数据处理系统中常用的技术框架包括数据采集、数据存储、数据分析、数据挖掘、批处理、实时流计算、数据可视化、监控预警、信息安全等。下图展示了大数据生态系统内比较流行并且已经在生产环境验证过的开源技术。
(1)SparkSpark是由加州大学伯克利分校AMP实验室开源的分布式大规模数据处理通用引擎,具有高吞吐、低延时、通用易扩展、高容错等特点。Spark内部提供了丰富的开发库,集成了数据分析引擎Spark SQL、图计算框架GraphX、机器学习库MLlib、流计算引擎Spark Streaming。Spark在函数式编程语言Scala中实现,提供了丰富的开发API,支持Scala、Java、Python、R等多种开发语言。同时,它提供了多种运行模式,既可以采用独立部署的方式运行,也可以依托Hadoop YARN、Apache Mesos等资源管理器调度任务运行。目前,Spark已经在金融、交通、医疗、气象等多种领域中广泛使用。
大数据生态系统中的开源技术(2)DruidDruid是由美国MetaMarkets公司创建并开源的分布式提供海量时序数据存储、支持实时多维数据分析的OLAP系统,主要应用于广告数据分析、网络系统监控等场景。Druid具有高吞吐、易扩展、高容错、低延迟、按时间序列存储等特点。
(3)FlumeFlume是由Cloudera公司开发的分布式、高可用的日志收集系统,是Hadoop生态圈内的关键组件之一,目前已开源给Apache。Flume的原始版本为Flume-OG,经过对整体架构的重新设计,现已改名为Flume-NG。Flume发展到现在已经不局限于日志收集,还可以通过简单的配置收集不同数据源的海量数据并将数据准确高效地传输到不同的中心存储。目前Flume可对接的主流大数据框架有Hadoop、Kafka、ElasticSearch、Hive、HBase等。在使用Flume的过程中,通过配置文件就可以实现整个数据收集过程的负载均衡和故障转移,而不需要修改Flume的任何代码。得益于优秀的框架设计,Flume通过可扩展、插件化、组合式、高可用、高容错的设计模式,为用户提供了简单、高效、准确的轻量化大数据采集工具。
(4)KafkaKafka是由LinkedIn开源的分布式消息队列,能够轻松实现高吞吐、可扩展、高可用,并且部署简单快速、开发接口丰富。目前,各大互联网公司已经在生产环境中广泛使用,而且已经有很多分布式处理系统支持使用Kafka,比如Spark、Strom、Druid、Flume等。
(5)InfluxDBInfluxDB是一款开源分布式时序数据库,非常适合存储监控系统收集的指标数据。时序数据库顾名思义就是按照时间顺序存储指标数据,即监控系统的场景大部分是按照时间顺序存储各项指标数据,过期时间太长的指标可能将不会再关注,所以为了提高数据库的存储率,提高查询性能,需要定期删除过期指标。InfluxDB的诸多特性非常适合监控系统的使用场景。
本书将详细介绍上述技术的原理,通过实践演示每种技术的实际应用场景。希望通过理论与实践相结合的方式使内容更通俗易懂,帮助读者根据实际的业务场景选择合适的技术方案,相信大数据在未来的发展中还会创造更多的价值。
内容概述本书分三部分展开介绍:
第一部分(第1章)主要介绍了企业大数据系统的前期准备工作,包括如何构建企业大数据处理系统的软件环境和集群环境。
第二部分(第2~7章)首先介绍了Spark的基本原理,Spark 2.0版本的Spark SQL、Structured Streaming原理和使用方法,以及Spark的多种优化方式;然后,介绍了Druid的基本原理、集群的搭建过程、数据摄入过程,以及在查询过程中如何实现Druid查询API;接着介绍了日志收集系统Flume的基本架构和关键组件,以及分层日志收集架构的设计与实践。
……
企业大数据处理:Spark、Druid、Flume与Kafka应用实践 下载 mobi epub pdf txt 电子书 格式