内容简介
大数据让我们以一种****的方式,通过对海量数据进行分析,获得有巨大价值的产品和服务,最终形成变革之力。
《大数据开发工程师系列:Hadoop & Spark大数据开发实战》围绕Hadoop和Spark这两个主流技术进行讲解,主要内容包括Hadoop环境配置、分布式文件系统HDFS、分布式计算框架MapReduce、资源调度框架YARN与Hadoop新特性、大数据数据仓库Hive、离线处理辅助系统、SparkCore、Spark SQL、Spark Streaming等知识。
为保证学习效果,《大数据开发工程师系列:Hadoop & Spark大数据开发实战》紧密结合实际应用,利用大量案例说明和实践,提炼含金量十足的开发经验。
《大数据开发工程师系列:Hadoop & Spark大数据开发实战》使用Hadoop和Spark进行大数据开发,并配以完善的学习资源和支持服务,包括视频教程、案例素材下载、学习交流社区、讨论组等终身学习内容,为开发者带来全方位的学习体。
内页插图
目录
前言
关于引用作品版权说明
第1章 初识Hadoop
本章任务
任务1 大数据概述
1.1.1 大数据基本概念
1.1.2 大数据对于企业带来的挑战
任务2 Hadoop概述
1.2.1 Hadoop简介
1.2.2 HadooD生态系统
1.2.3 大数据应用案例
任务3 Hadoop环境措建
1.3.1 虚拟机安装
1.3.2 Linux系统安装
1.3.3 Hadoop伪分布式环境搭建
本章总结
本章作业
第2章 分布式文件系统HDFS
本章任务
任务1 初识HDFS
2.1.1 HDFS概述
2.1.2 HDFS基本概念
2.1.3 HDFS体系结构
任务2 HDFS操作
2.2.1 HDFS shell访问
2.2.2 Java API访问
任务3 HDFS运行机制
2.3.1 HDFS文件读写流程
2.3.2 HDFS副本机制
2.3.3 数据负载均衡
2.3.4 机架感知
任务4 HDFS进阶
2.4.1 Hadoop序列化
2.4.2 基于文件的数据结构SequenceFile
2.4.3 基于文件的数据结构MapFile
本章总结
本章作业
第3章 分布式计算框架MapReduce
本章任务
任务1 MapReduce编程模型
3.1.1 MapReduce概述
3.1.2 MapReduce编程模型
3.1.3 MapReduce Woracount编程实例
任务2 MapReduce进阶
3.2.1 MapReduce类型
3.2.2 MapReduce输入格式
3.2.3 MapReduce输出格式
3.2.4 Combiner
3.2.5 Partitioner
3.2.6 RecordReader
任务3 MapReduce高级编程
3.3.1 Join的MapReduce实现
3.3.2 排序的MapReduce实现
3.3.3 二次排序的MapReduce实现
3.3.4 合并小文件的MapReduce实现
本章总结
本章作业
第4章 YARN与Hadoop新特性
本章任务
任务1 初识资源调度框架YARN
4.1.1 YARN产生背景
4.1.2 初识YARN
4.1.3 YARN运行机制
任务2 HDFS新特性
4.2.1 HDFS NameNOde HA
4.2.2 HDFS NameN0de Federation
4.2.3 HDFSSnaoshots
4.2.4 WebHOFS RESTAPI
4.2.5 DistCp
任务3 YARN新特性
4.3.1 ResourceManager Restart
4.3.2 ResourceManager HA
本章总结
本章作业
第5章 大数据数据仓库Hive
本章任务
任务1 初识Hive
5.1.1 Hiye简介
5.1.2 Hiye架构
5.1.3 Hiye与Hadoop的关系
5.1.4 Hive与传统关系型数据库对比
5.1.5 Hive数据存储
5.1.6 Hive环境部署
任务2 Hive基本操作
5.2.1 DDL操作
5.2.2 DML操作
5.2.3 Hive shell操作
任务3 Hive进阶
5.3.1 Hive函数
5.3.2 Hive常用调优策略
本章总结
本章作业
第6章 离线处理辅助系统
本章任务
任务1 使用Sqoop完成数据迁移
6.1.1 Sqoop简介
6.1.2 导入MysQL数据到HDFS
6.1.3 导出HOFS数据到MySQL
6.1.4 导入MySQL数据到Hive
6.1.5 Sqoop中Job的使用
任务2 工作流调度框架Azkaban
6.2.1 Azkaban简介
6.2.2 Azkaban部署
6.2.3 Azkaban实战
本章总结
本章作业
第7章 Spark入门
本章任务
任务1 初识Spark
7.1.1 Spark概述
7.1.2 Spark优点
7.1.3 Spark生态系统BDAs
任务2 Scala入门
7.2.1 Scala介绍
7.2.2 Scala函数
7.2.3 Scala面向对象
7.2.4 Scala集合
7.2.5 Scala进阶
任务3 获取Spark源码并进行编译
7.3.1 获取Spark源码
7.3.2 Spark源码编译
任务4 第次与Spark亲密接触
7.4.1 Spark环境部署
7.4.2 Spark完成词频统计分析
本章总结
本章作业
第8章 SparkCore
本章任务
任务1 SparK的基石RDD
8.1.1 RDD概述
8.1.2 RDD常用创建方式
8.1.3 RDD的转换
8.1.4 ROD的动作
8.1.5 RDD的依赖
任务2 RDD进阶
8.2.1 RDD缓存
8.2.2 共享变量(Shared Variables)
8.2.3 Spark核心概念
8.2.4 Spark运行架构
任务3 基于RDD的Spark编程
8.3.1 开发前置准备
8.3.2 使用SparkCore开发词频计数WordCount
8.3.3 使用SparkCore进行年龄统计
本章总结
本章作业
第9章 Spark SQL
本章任务
任务1 SparkSQL前世今生
9.1.1 为什么需要SQL
9.1.2 常用的SQL on Hadoop框架
9.1.3 Spark SQL概述
任务2 Spark SQL编程
9.2.1 SparkSQL编程入口
9.2.2 DataFrame是什么
9.2.3 DataFrame编程
任务3 SparkSQL进阶
9.3.1 Spark SQL外部数据源操作
9.3.2 SparkSQL函数的使用
9.3.3 Spark SQL常用调优
本章总结
本章作业
第10章 Spark Streaming
本章任务
任务1 初始流处理框架及Spark Streaming
10.1.1 流处理框架概述
10.1.2 Spark Streaming概述
任务2 Spark Streaming编程
10.2.1 Spark Streaming核心概念
10.2.2 使用Spark Streaming编程
任务3 Spark Streaming进阶
10.3.1 Spark Streaming整合Flume
10.3.2 Spark Streaming整合Kafka
10.3.3 Spark Streaming常用优化策略
本章总结
本章作业
前言/序言
丛书设计:
准备好了吗?进入大数据时代!大数据已经并将继续影响人类的方方面面。2015年8月31日,经李克强总理批准,国务院正式下发《关于印发促进大数据发展行动纲要的通知》,这是从国家层面正式宣告大数据时代的到来!企业资本则以BAT互联网公司为首,不断进行大数据创新,从而实现大数据的商业价值。本丛书根据企业人才实际需求,参考历史学习难度曲线,选取“Java+大数据”技术集作为学习路径,旨在为读者提供一站式实战型大数据开发学习指导,帮助读者踏上由开发入门到大数据实战的互联网+大数据开发之旅!
丛书特点:
1.以企业需求为设计导向
满足企业对人才的技能需求是本丛书的核心设计原则,为此课工场大数据开发教研团队,通过对数百位BAT-线技术专家进行访谈、对上千家企业人力资源情况进行调研、对上万个企业招聘岗位进行需求分析,从而实现技术的准确定位,达到课程与企业需求的高契合度。
2.以任务驱动为讲解方式
丛书中的技能点和知识点都由任务驱动,读者在学习知识时不仅可以知其然,而且可以知其所以然,帮助读者融会贯通、举一反三。
3.以实战项目来提升技术
本丛书均设置项目实战环节,该环节综合运用书中的知识点,帮助读者提升项目开发能力。每个实战项目都设有相应的项目思路指导、重难点讲解、实现步骤总结和知识点梳理。
4.以互联网+实现终身学习
本丛书可通过使用课工场APP进行二维码扫描来观看配套视频的理论讲解和案例操作,同时课工场(www.kgc.cn)开辟教材配套版块,提供案例代码及案例素材下载。此外,课工场还为读者提供了体系化的学习路径、丰富的在线学习资源和活跃的学习社区,方便读者随时学习。
读者对象:
1.大中专院校的老师和学生
2.编程爱好者
3.初中级程序开发人员
4.相关培训机构的老师和学员
读者服务:
为解决本丛书中存在的疑难问题,读者可以访问课工场官方网站(www.kgc.cn),也可以发送邮件到ke@kgc.cn,我们的客服专员将竭诚为您服务。
致谢:
本丛书是由课工场大数据开发教研团队研发编写的,课工场(kgc.cn)是北京大学旗下专注于互联网人才培养的高端教育品牌。作为国内互联网人才教育生态系统的构建者,课工场依托北京大学优质的教育资源,重构职业教育生态体系,以学员为本、以企业为基,构建教学大咖、技术大咖、行业大咖三咖一体的教学矩阵,为学员提供高端、靠谱、炫酷的学习内容!
感谢您购买本丛书,希望本丛书能成为您大数据开发之旅的好伙伴!
深入理解现代数据处理的基石:从数据仓库到实时分析的演进之路 在这个数据爆炸的时代,如何高效、智能地处理和分析海量数据,已经成为衡量企业竞争力的关键。本书将带您踏上一段深入理解现代数据处理技术演进的旅程,从传统的数据仓库概念出发,逐步探索分布式计算的崛起,直至当前备受瞩目的实时流式处理和机器学习集成。我们旨在为您构建一个清晰、系统的认知框架,帮助您掌握驱动当今数据驱动决策的核心技术和理念。 第一章:回溯与展望——数据处理的演进史 在开始探索前沿技术之前,回顾历史是理解现状的基石。本章将追溯数据处理技术的发展脉络。我们将从早期的数据管理方式聊起,例如文件系统和简单的数据库,探讨它们在处理结构化数据时的局限性。接着,我们会重点介绍关系型数据库的出现及其对数据组织和查询方式带来的革命。 随着数据量的指数级增长,单机处理能力迅速触及瓶颈。这催生了对分布式处理的需求,而“数据仓库”(Data Warehouse)的概念也应运而生。我们将详细阐释数据仓库的核心理念,包括ETL(Extract, Transform, Load)流程、OLAP(Online Analytical Processing)技术以及其在商业智能(BI)领域的应用。您将了解到数据仓库如何帮助企业整合分散的数据,进行统一的分析和报告,从而支持业务决策。 然而,传统数据仓库在处理半结构化和非结构化数据,以及应对海量、高吞吐量数据流时,依然面临挑战。大数据时代的到来,对数据存储、计算能力以及处理速度提出了全新的要求。本章的最后,我们将为接下来的分布式计算和更现代的数据处理范式奠定基础,展望未来的技术发展趋势。 第二章:分布式计算的曙光——Hadoop生态圈详解 当单机不再满足需求,分布式计算便成为必然。本章将深入剖析Hadoop生态圈,这是大数据处理的基石之一。我们将从Hadoop的核心组件——HDFS(Hadoop Distributed File System)和MapReduce——讲起。 HDFS的分布式存储机制将打破单机存储的容量限制。您将了解其主从架构(Master/Slave),包括NameNode(名称节点)和DataNode(数据节点)的角色和职责,以及文件块(Block)的分布、复制策略和容错机制。我们将探讨HDFS如何实现高可用性和数据冗余,确保数据安全可靠。 MapReduce作为Hadoop的计算引擎,将开启并行处理的新篇章。我们将详细讲解MapReduce的编程模型,包括Map(映射)阶段和Reduce(归约)阶段的工作流程。通过实际的例子,您将理解如何将复杂的计算任务分解为一系列可并行的Map和Reduce操作,并学会如何编写简单的MapReduce程序。此外,我们还会讨论MapReduce的局限性,例如其批处理特性带来的延迟问题,为后续介绍更快的处理引擎做铺垫。 除了HDFS和MapReduce,Hadoop生态圈还包含了一系列协同工作的工具。本章将对其中一些关键组件进行介绍,例如: YARN(Yet Another Resource Negotiator):作为Hadoop 2.x的核心,YARN负责集群资源的统一管理和调度,使得Hadoop能够运行MapReduce以外的计算框架。我们将探讨其ResourceManager、NodeManager、ApplicationMaster等核心概念。 Hive:一个构建在Hadoop之上的数据仓库工具,它提供了类SQL的查询语言(HiveQL),方便用户在Hadoop上进行数据分析。我们将讨论Hive的架构,包括Metastore、Driver、Compiler等,以及其如何将HiveQL转换为MapReduce或Spark作业。 HBase:一个分布式、非关系型(NoSQL)的列式数据库,它运行在HDFS之上,为Hadoop提供了实时读写海量数据的能力。我们将了解HBase的数据模型、Region、Tablet等概念,以及其适用场景。 ZooKeeper:一个分布式协调服务,在Hadoop生态系统中扮演着至关重要的角色,用于实现分布式应用的统一命名、状态同步、集群管理等。 通过本章的学习,您将全面掌握Hadoop生态圈的基本原理、核心组件及其相互关系,为后续更高级的数据处理技术打下坚实基础。 第三章:实时计算的引擎——Spark性能飞跃的奥秘 当Hadoop的批处理模式已不能满足日益增长的实时数据处理需求时,Spark应运而生,以其卓越的性能和易用性,迅速成为大数据处理领域的新宠。本章将深入剖析Apache Spark,揭示其性能飞跃的奥秘。 Spark的核心优势在于其内存计算能力。我们将详细讲解Spark的RDD(Resilient Distributed Dataset)抽象,理解RDD的不可变性、惰性求值以及分布式数据集的表示。您将学习如何通过各种转换(Transformations)和行动(Actions)操作来构建和操作RDD,实现数据处理的逻辑。 RDD的革命性在于其引入了弹性分布式数据集的概念,可以在内存中缓存中间结果,从而避免了MapReduce中频繁的磁盘I/O操作。本章将重点介绍Spark的DAG(Directed Acyclic Graph)调度器,它能够有效地构建和优化计算任务的执行计划,最大限度地利用内存资源,实现比MapReduce更快的执行速度。 Spark不仅仅局限于批处理,它更是一个统一的数据处理引擎,能够支持多种工作负载。我们将重点介绍Spark的以下核心组件: Spark SQL:用于处理结构化数据,它允许用户通过SQL或DataFrame API对数据进行查询和分析。我们将深入理解DataFrame和Dataset的抽象,以及Spark SQL的Catalyst优化器如何进行查询优化。 Spark Streaming:用于处理实时数据流。我们将讲解Spark Streaming如何将数据流分割成小的RDD批次进行处理,实现近乎实时的流式计算。您将学习如何构建Spark Streaming应用程序,处理来自Kafka、Flume等数据源的实时数据。 MLlib(Machine Learning Library):Spark的机器学习库,提供了丰富的算法和工具,用于构建和部署机器学习模型。我们将介绍MLlib支持的分类、回归、聚类、降维等算法,以及如何将其集成到Spark数据处理流程中。 GraphX:Spark的图计算框架,用于处理图结构数据。我们将简要介绍GraphX的基本概念和API,展示其在社交网络分析、推荐系统等领域的应用潜力。 本章将通过实例,演示如何利用Spark的强大功能,实现高效的数据分析、实时流处理和机器学习任务。您将深刻理解Spark如何通过内存计算、DAG调度和统一的API,革新大数据处理的模式。 第四章:数据集成与治理——构建可靠的数据管道 即使拥有强大的计算引擎,如果数据本身质量不高、集成困难,其价值也将大打折扣。本章将聚焦于数据集成与治理,探讨如何构建可靠、高效的数据管道,确保数据的可用性和可信度。 我们将从数据源的多样性出发,分析不同类型的数据源(如关系型数据库、NoSQL数据库、日志文件、API接口、消息队列等)的特点,以及如何有效地将它们的数据抽取、转换和加载到统一的数据存储中。 ETL/ELT流程的优化:我们将回顾传统的ETL流程,并介绍在Hadoop和Spark环境下,如何使用Sqoop、Flume、Kafka Connect等工具实现高效的数据导入,以及如何利用Spark的强大处理能力进行数据转换和清洗。同时,我们也会探讨ELT(Extract, Load, Transform)模式在数据仓库和数据湖中的应用。 数据质量管理:数据质量是数据价值的生命线。本章将讨论数据校验、数据清洗、去重、异常值检测等关键的数据质量控制技术。您将了解到如何利用自动化工具和规则来保障数据的准确性和完整性。 数据治理与元数据管理:随着数据量的增长,对数据的管理变得越来越重要。我们将介绍数据治理的基本概念,包括数据目录、数据谱系(Data Lineage)、数据安全和合规性。您将了解到如何使用Apache Atlas等工具来管理元数据,实现数据的可追溯和可理解。 数据管道的构建与监控:一个健壮的数据管道需要可靠的调度和监控机制。我们将探讨Airflow、Oozie等工作流调度工具在自动化数据处理任务中的应用,以及如何通过Prometheus、Grafana等工具对数据管道的运行状态进行实时监控和告警。 通过本章的学习,您将掌握构建健壮、可靠数据管道的关键技术和最佳实践,为上层的数据分析和应用提供高质量的数据支撑。 第五章:走向智能——数据挖掘与机器学习在实际应用中的落地 大数据处理的最终目标往往是为了从中挖掘出有价值的洞察,并将其应用于智能化的业务场景。本章将重点关注数据挖掘和机器学习的实际应用。 我们将从机器学习的基本概念入手,包括监督学习、无监督学习、半监督学习以及强化学习。您将了解常见的机器学习算法,如线性回归、逻辑回归、决策树、随机森林、支持向量机(SVM)、K-Means聚类等。 模型训练与评估:本章将详细介绍如何使用MLlib或其他框架(如Scikit-learn)来训练机器学习模型。您将学习到如何进行特征工程,如何选择合适的模型,以及如何使用交叉验证、准确率、召回率、F1分数等指标来评估模型的性能。 模型部署与集成:训练好的模型需要能够被实际应用所调用。我们将探讨模型部署的不同策略,包括模型服务化(如使用RESTful API)、批量预测等。您将了解如何将机器学习模型集成到现有的数据处理流程或业务系统中。 实际应用场景解析:本章将通过多个实际案例,展示大数据技术在各个领域的应用: 推荐系统:如何利用用户行为数据和协同过滤、矩阵分解等算法,构建个性化的商品或内容推荐系统。 欺诈检测:如何通过异常检测、分类模型来识别金融交易中的欺诈行为。 客户流失预测:如何分析客户行为数据,预测客户流失的可能性,并采取相应的挽留措施。 自然语言处理(NLP):如何利用Spark NLP或第三方库,进行文本情感分析、主题建模、实体识别等。 图像识别与计算机视觉:虽然Spark本身不是一个纯粹的深度学习框架,但它可以与TensorFlow、PyTorch等深度学习框架集成,用于大规模数据的预处理和模型训练的分布式管理。 通过本章的学习,您将能够将之前掌握的大数据处理技术与机器学习算法相结合,解决实际的业务问题,驱动智能化决策,从而在数据时代获得竞争优势。 总结 本书的目标是为您提供一个全面而深入的现代数据处理技术图谱。从数据仓库的起源,到Hadoop的分布式存储和计算,再到Spark带来的内存计算和实时处理的飞跃,最后落脚于数据集成、治理和智能应用的实践。我们希望通过清晰的阐述、严谨的逻辑和贴合实际的案例,帮助您构建扎实的大数据技术基础,并为未来的学习和职业发展打下坚实的基础。掌握这些核心技术,您将能够在这个数据驱动的世界中游刃有余,释放数据的无限潜能。