编辑推荐
    适读人群 :本书适合所有的对广告分析、大数据、高可用分布式系统感兴趣的所有爱好者                                   资深大数据工程师,立足于企业真实场景,系统梳理和详尽讲解全栈大数据核心技术;
 为企业大数据技术选型和大数据平台构建提供成熟的解决方案,包含大量实用案例
 
  
      内容简介
     这是一本立足于企业真实的商用项目来讲解如何高效从事大数据实践的著作。技术层面,从全栈的角度系统梳理和详尽讲解了大数据的核心技术,包括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的基本架构和关键组件,以及分层日志收集架构的设计与实践。 
  ……     
				
 
				
				
					智能时代的数据基石:构建高效、敏捷的企业数据处理平台  在信息爆炸的今天,数据已然成为企业最宝贵的资产,而如何高效、精准地捕捉、存储、分析并应用这些数据,则直接关系到企业的生存与发展。本书并非聚焦于某几项具体技术栈的应用组合,而是致力于为读者构建一个关于“智能时代企业数据处理”的宏观认知框架。我们将深入探讨企业在数据处理领域面临的普遍挑战,剖析当前主流的数据处理理念与技术演进方向,并提供一套可借鉴的、面向未来的数据处理平台设计思路。  一、 理解企业数据处理的宏观挑战与机遇  企业数据处理并非孤立的技术问题,而是与业务发展、组织架构、战略目标紧密相连的系统工程。在智能化浪潮的推动下,企业面临的数据挑战日益严峻:     数据量爆炸式增长: 随着物联网、移动互联网、社交媒体等多元化数据源的涌现,企业需要处理的数据体量呈指数级增长。传统的数据仓库和批处理技术已难以应对实时性、高并发、多模态数据的需求。    数据价值密度下降: 海量数据中蕴藏的价值信息如同大海捞针,如何从纷繁复杂的数据中快速提炼出有价值的洞察,成为企业亟待解决的难题。    数据实时性要求提升: 市场瞬息万变,企业需要基于最新的数据做出决策,从风险预警、客户行为分析到运营优化,实时数据处理能力已成为竞争优势的关键。    数据孤岛与集成难题: 不同业务系统、不同部门之间的数据分散存储,形成“数据孤岛”,数据共享与集成困难,阻碍了数据的全局分析和价值挖掘。    技术栈碎片化与复杂化: 为应对多样化的数据处理需求,企业往往引入了大量技术工具,导致技术栈碎片化,运维成本高昂,人才培养难度加大。    数据安全与合规性压力: 随着数据隐私法规的日趋严格,企业在数据处理过程中面临巨大的安全和合规性挑战,需要建立完善的数据治理体系。  然而,挑战与机遇并存。高效的数据处理能力能够赋能企业:     驱动业务创新: 深入洞察客户需求、市场趋势,发现新的商业机会,驱动产品和服务的创新。    优化运营效率: 实现流程自动化、资源优化配置、供应链协同,降低运营成本,提升管理效率。    提升决策科学性: 基于数据进行精准预测、风险评估,支持战略规划和日常运营的科学决策。    构建竞争壁垒: 形成独特的数据洞察和智能服务能力,构建难以模仿的竞争优势。    赋能个性化体验: 为客户提供千人千面的产品、服务和营销体验,提升客户满意度和忠诚度。  二、 构建企业数据处理的通用架构理念  面对上述挑战,构建一个灵活、可扩展、高性能的企业数据处理平台至关重要。本书将从宏观架构层面,引导读者理解一个现代数据处理平台应具备的关键能力和设计原则。  1.  分层解耦的设计思想:        数据采集层(Data Ingestion Layer): 负责从各类数据源(如业务系统、传感器、日志、第三方API等)采集原始数据。强调数据的实时性、可靠性、容错性以及对不同数据源的支持能力。        数据存储层(Data Storage Layer): 负责高效、经济地存储海量数据。根据数据特性(结构化、半结构化、非结构化)和访问需求(实时查询、离线分析),选择合适的存储技术,例如关系型数据库、NoSQL数据库、分布式文件系统、对象存储等。        数据处理层(Data Processing Layer): 负责对原始数据进行清洗、转换、聚合、计算等操作。根据处理的实时性要求,又可细分为批处理(Batch Processing)和流处理(Stream Processing)。        数据分析与服务层(Data Analysis & Serving Layer): 负责将处理后的数据提供给最终用户或应用,支持数据探索、可视化、机器学习模型训练、实时推荐、BI报表等。        数据治理与安全层(Data Governance & Security Layer): 贯穿于整个平台,负责数据的元数据管理、数据质量控制、数据血缘追踪、访问控制、加密、审计等,确保数据的可信度、安全性和合规性。  2.  端到端数据流动的优化:        批处理与流处理的融合(Lambda/Kappa Architecture): 理解在不同场景下,如何通过批处理和流处理的组合,或者采用更现代的统一流处理模式,来满足不同时效性的分析需求。        数据管道(Data Pipelines)的建设: 强调构建自动化、可监控、可恢复的数据管道,实现从数据采集到价值展现的全流程自动化。        数据集成与联邦查询: 探讨如何打破数据孤岛,实现跨数据源的数据集成,以及在不移动数据的情况下进行数据查询的策略。  3.  面向未来的技术选型原则:        分布式与可扩展性: 平台应能够随着数据量和计算需求的增长而线性扩展,避免单点瓶颈。        高性能与低延迟: 针对不同应用场景,提供满足实时性要求的处理能力。        高可靠性与容错性: 确保数据不丢失,系统在故障时能够快速恢复。        灵活性与敏捷性: 能够快速适应新的数据源、新的分析需求和新的技术趋势。        生态系统的完备性: 选择拥有成熟生态系统、丰富社区支持的技术,降低开发和运维难度。        成本效益: 在满足性能和可用性要求的前提下,兼顾存储和计算资源的成本。  三、 关键技术领域的探讨(广义视角)  在理解了宏观架构和设计理念之后,我们将从更广阔的技术视角,探讨构成现代数据处理平台的核心技术领域,而非局限于具体工具的应用。  1.  数据采集与传输:        数据收集的挑战: 面对海量、多源、异构的数据,如何设计高效、可靠的数据收集机制。        消息队列的作用: 理解消息队列作为数据缓冲、解耦和异步处理的关键中间件,在构建弹性数据管道中的核心地位。其功能包括消息的可靠投递、广播、顺序保证、削峰填谷等。        实时数据流的处理: 探讨数据从产生到消费过程中,如何保持其“流”的特性,并进行实时加工。  2.  数据存储与管理:        多样化的存储方案: 区分不同场景下关系型数据库、NoSQL数据库(键值、文档、列族、图)、数据仓库、数据湖、内存数据库等的适用性。        分布式存储的原理: 了解分布式文件系统、对象存储等如何实现海量数据的存储和高可用。        数据仓库与数据湖的演进: 理解它们在数据存储、管理和分析上的不同定位和互补性。  3.  数据处理与计算:        批处理计算: 探讨分布式批处理框架如何高效处理大规模静态数据集,完成ETL、报表生成等任务。        流处理计算: 深入理解流处理引擎如何实时地处理无界数据流,实现实时告警、实时推荐、实时监控等。        内存计算与加速: 了解内存计算技术如何大幅提升数据处理的速度。        SQL on Big Data: 探讨如何在分布式存储上进行SQL查询,降低数据分析的门槛。  4.  数据分析与挖掘:        OLAP(在线分析处理)与OLTP(在线事务处理)的区别: 理解不同类型的数据处理对存储和计算的要求。        数据可视化与BI: 探讨如何将复杂的数据转化为直观的图表和仪表盘,辅助业务人员理解数据。        机器学习与人工智能: 了解数据在模型训练、推理部署中的作用,以及如何将模型集成到数据处理流程中。  5.  数据治理与安全:        元数据管理: 数据的“数据”,即元数据的管理对于理解、查找和使用数据至关重要。        数据质量: 探讨数据清洗、校验、去重等技术,保证数据分析的准确性。        数据安全与隐私: 访问控制、数据加密、脱敏、合规性审计等是构建可信数据平台的基础。  四、 总结与展望  本书并非提供一套固定的技术组合解决方案,而是希望通过对企业数据处理宏观挑战的剖析、通用架构理念的阐述,以及关键技术领域的广泛探讨,为读者在构建或优化自身企业数据处理平台时,提供一个清晰的思路和坚实的基础。未来的企业数据处理将更加智能化、自动化、实时化,并与业务深度融合。掌握这些核心的理念和技术领域,才能在快速变化的数据时代保持领先。