猜你喜欢
自己动手做大数据系统(第2版)

自己动手做大数据系统(第2版)

书籍作者:刘未昕 张粤磊 张魁 吴茂贵 著 ISBN:9787121382024
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:6790
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书在第1版的基础上,介绍大数据的时代背景及应用方案、常用的离线大数据和流式大数据组件,以及基于云平台的容器级数据平台搭建。书中以离线大数据和流式大数据两个具体示例,贯穿本书的第二、三部分内容,对组件之间的协同工作关系进行剖析。书中的代码部分基本上使用Python编写,用户可以下载参考。

如果你是一位在校学生、Python编程爱好者或是想转行从事大数据工作的在职IT人员,阅读本书必有所收获!



作者简介

·刘未昕·

从事IT研发和项目管理工作十余年。使用多种主流程序设计语言,深耕于大数据应用及人工智能技术,多年从事金融、数据仓库、智慧医疗等领域的研发工作。5年以上IT行业授课、培训经验,并在多所高校担任外聘讲师。

·张粤磊·

平安壹钱包前大数据架构师。业内知名大数据专家,多本大数据畅销书的作者。2016年以来,其每年都以高级专家和咨询顾问的身份深入参与大数据、人工智能技术在行业的落地应用工作。至今已完成企业培训数百场,培训学员数万名,在数据人才实战型、场景型培训培养方面具有丰富的实践经验。

·张 魁·

虚拟化工程师,OpenStack架构师,苏州某高校云平台架构师,十余年Linux系统运维实践及虚拟化开发经验,4年Linux系统补丁开发经验。先后在美企担任虚拟化应用运维、服务器集群开发运维工程师或系统开发架构师,高校信息中心云平台架构师,主要关注OpenStack、Docker及分布式存储等。

·吴茂贵·

运筹学与控制论专业研究生学历。毕业后主要参与数据仓库、商务智能等方面的项目,期间做过数据处理、数据分析、数据挖掘等工作,行业涉及金融、物流、制造业等。近期主要做复杂数据存储、清理、转换等工作,同时在大数据方面也很有兴趣并投入大量时间和精力,且将持续为之。


编辑推荐
适读人群 :1、Python编程爱好者 2、在校学生 3、想转行从事大数据工作的在职IT人员

?? 在本书第1版的基础上,按照离线大数据和流式大数据两个场景进行划分

?? 在代码实现上以Python为主,紧贴主流编程语言

?? 代码的可用性增强


前言
前  言写作背景

在第1版的基础上,本书对近几年大数据领域最新出现的各种流行组件,逐个进行介绍,并以离线大数据和流式大数据两个具体示例贯穿本书的第二、三部分内容,对组件之间的协同工作关系进行剖析。这里新增了大数据平台的架构选型及最佳实践案例、大数据治理、流计算开发、基于Docker的大数据运维部署等部分。书中所使用的示例程序,是基于笔者在进行企业培训时,企业提出的业务需求而展开的,从而使得示例程序更有代表性。

本书特色

?? 在本书第1版的基础上,按照离线大数据和流式大数据两个场景进行划分,这样更有针对性。

?? 在代码实现上由本书第1版的以Java为主变为现在第2版的以Python为主,紧贴主流编程语言。

?? 代码的可用性增强。对于本书第1版的爬虫部分代码,随着目标网站的样式变更,书中的那些代码无法继续运行。现在第2版的爬虫目标网站为作者制作的模拟站点,这样就保证了读者运行书中爬虫代码时的持续可用。

?? 提供和本书配套的示例程序运行地址。读者可以登录http://www.broadview.com.cn/38202,运行书中所提供的示例程序,并下载书中有关章节的源码。

?? 提供和本书配套的大数据组件Docker的文件下载,以便读者可以在本机运行书中所讲解的示例程序。

?? 提供QQ读者群(群号:50926571)在线答疑。

读者人群

?? Python编程爱好者

?? 在校学生

?? 想转行从事大数据工作的在职IT人员

序  言

从2016年10月本书第1版和读者见面,至今已经过去3年多了。在这3年多里,区块链、人工智能、物联网等领域的风头早已盖过了大数据。虽然我们的写作团队在这些方面也出了几本书,但却一直关注着大数据领域的新技术和新趋势。企业都在用哪些大数据组件?这些组件分别适用于何种场景?虚拟化技术目前最流行的又是什么?本书围绕以上3个问题展开讨论,希望能向读者呈现一个相对完整的大数据架构图。

“自己动手做”——不仅体现在书名中,更是学习、实践大数据技术的主要方法。大数据领域包含了架构、应用、开发和运维等多个环节的工作,初学者往往会感觉门槛太高。本书选取了最常用的几种大数据组件,用一个并不复杂的例子把这些组件串起来使用,目的是想降低学习门槛,让读者学有所得。

非习劳无以进业,IT领域的知识积累就是一个不断“踩坑”的过程。除了要有正确的途径,更要有个人不懈的努力。别人看似轻描淡写的几句指点,可能是其背后多次尝试的总结;而自己觉得爬过的几个“坑”,在别人看来可能根本不算什么事。我们期待着读者能和我们积极互动,共同学习、共同提高!

写书是一件费时费力的事情,写作团队的每一点进步,都是和家人的理解、支持分不开的。在此,我代表其他3位作者,向我们的家人表示感谢!特别感谢我的妻子吴芳,她的无私奉献,使我在困逆之境仍能蹒跚前行。

最后,感谢博文视点符隆美女士及其他编辑人员的辛勤劳动。

刘未昕

2020年3月


目录

第一部分 大数据概述
第1章 大数据的时代背景及应用落地 2
1.1 大数据与“云大物区智”的关联 2
1.2 大数据平台的应用优势 4
1.3 大数据平台的技术架构选型和产品对比 4
第2章 大数据系统的安装及配置 7
2.1 服务器及操作系统的准备 7
2.2 JDK、PYTHON和SCALA 8
2.3 HADOOP 12
2.3.1 安装环境的确认及文件准备 16
2.3.2 配置环境变量及无密码传输 16
2.3.3 配置Hadoop的对应参数 18
2.3.4 启动并验证Hadoop 20
2.4 SQOOP 20
2.4.1 Sqoop安装文件的准备 22
2.4.2 Sqoop的安装及配置 23
2.4.3 Sqoop运行验证 24
2.5 HIVE 25
2.5.1 安装文件的准备 26
2.5.2 配置环境变量和安装MySQL 26
2.5.3 配置Hive参数 26
2.5.4 验证Hive的相关服务 29
2.6 ZOOKEEPER和HBASE 29
2.6.1 ZooKeeper安装文件的准备 30
2.6.2 ZooKeeper的安装及配置 30
2.6.3 ZooKeeper运行验证 31
2.6.4 HBase安装文件的准备 31
2.6.5 HBase的安装及配置 31
2.6.6 HBase运行验证 32
2.7 FLUME 33
2.8 KAFKA 35
2.9 SPARK 37
2.9.1 Spark安装文件的准备 38
2.9.2 Spark的安装及配置 38
2.9.3 Spark运行验证 39
2.10 FLINK 39
2.11 开源大数据系统各组件的组合 40
2.12 CDH 41
2.13 FUSIONINSIGHT 42
2.14 小结 44
第二部分 离线大数据处理
第3章 使用PYTHON爬虫获取数据 47
3.1 PYTHON爬虫模块的安装 47
3.1.1 requests模块的安装及验证 47
3.1.2 Beautiful Soup模块的安装及验证 47
3.2 抓取并解析JSON数据 49
3.2.1 利用Fiddler找出所抓取的网址 49
3.2.2 解析JSON对象 51
3.3 抓取并解析HTML中的数据 52
3.3.1 使用Beautiful Soup提取网页内容 52
3.3.2 保存抓取内容 53
3.3.3 不同爬虫模块所适用的场景 55
3.4 使用PYTHON提取文章的关键字 55
3.4.1 中文分词和关键字的提取 55
3.4.2 Python的中文分词模块jieba 56
3.4.3 使用自定义词典和停用词 57
3.4.4 提取文章的关键字 58
3.5 小结 60
第4章 HIVE在大数据中的角色 61
4.1 HIVE的核心概念及配置使用 61
4.1.1 Hive在大数据生态系统中的作用 61
4.1.2 Hive的几种使用方法 62
4.1.3 使用Tez引擎替代MapReduce 65
4.2 概要设计和物理模型的创建 68
4.2.1 使用Hive要解决哪些问题 68
4.2.2 数据库的概要设计 68
4.2.3 物理模型的定义及创建表 73
4.3 加载爬虫数据 79
4.4 数据的合并、去重和转换 80
4.4.1 数据的合并 80
4.4.2 利用临时表去掉重复的数据 81
4.4.3 使用Hive内置函数转换数据 83
4.5 使用UDF实现数据的转换 84
4.5.1 用户自定义函数的实现原理 84
4.5.2 利用Python实现UDF 84
4.5.3 数据进入rpt表 87
4.6 使用PYTHON操作HIVE 89
4.6.1 安装impyla模块 89
4.6.2 使用Python读取数据示例 89
4.7 ETL数据调度和数据治理 90
4.7.1 数据处理的自动化 90
4.7.2 数据治理 95
4.8 小结 96
第5章 使用HBASE实现大数据存储 97
5.1 非关系型数据库及HBASE 97
5.2 HBASE的几个核心概念 98
5.3 HBASE数据操作命令 99
5.3.1 HBase客户端 99
5.3.2 创建表及插入数据 100
5.3.3 按照行键值检索 102
5.3.4 扫描检索 102
5.3.5 删除表和数据 104
5.4 使用PYTHON操作HBASE 107
5.4.1 启动HBase Thrift Server 107
5.4.2 安装happybase模块 107
5.4.3 插入数据及删除数据 107
5.4.4 组合查询代码示例 109
5.5 把HIVE数据导入HBASE 110
5.6 用HIVE外部表读取HBASE数据 111
5.7 小结 112
第6章 SPARK数据分析引擎 113
6.1 SPARK简介 113
6.2 SPARK集群的配置及启动 114
6.2.1 Spark集群的安装与配置 115
6.2.2 作业提交方式 116
6.2.3 操作界面的启动类型 117
6.2.4 三类Web监控界面 119
6.3 调用HIVE数据 121
6.3.1 使用beeline客户端 121
6.3.2 使用HiveContext对象 122
6.3.3 使用Spark SQL 123
6.3.4 使用JDBC 123
6.4 调用HBASE数据 123
6.4.1 设定环境变量 123
6.4.2 读数据示例 124
6.5 使用PYSPARK进行数据分析 126
6.5.1 将RDD转换为DataFrame 127
6.5.2 Spark SQL等值连接 129
6.5.3 使用matplotlib绘制直方图 129
6.6 小结 130
第7章 使用FLASK实现数据展示 131
7.1 FLASK框架简介及站点搭建流程 131
7.2 FLASK微框架的特性 132
7.3 使用MVC模式搭建项目框架 133
7.3.1 访问地址 133
7.3.2 MVC模式简介 133
7.3.3 项目目录结构 134
7.4 检索及加载新闻数据 135
7.4.1 模型层的开发 135
7.4.2 模型层的单元测试 136
7.4.3 控制器层的开发 138
7.4.4 控制器层的单元测试 139
7.4.5 视图层的开发 140
7.5 小结 141
第二部分技术点总结 141
第三部分 流式大数据处理
第8章 使用FLUME获取网站访问日志 145
8.1 FLUME的安装及数据流模型 145
8.1.1 Flume简介及安装 145
8.1.2 Flume的数据流模型 146
8.2 核心组件的配合使用 146
8.2.1 6种核心组件 146
8.2.2 配置文件 147
8.2.3 flume-ng命令 148
8.3 各种数据组合的流动方式 150
8.3.1 将日志收集至文件 150
8.3.2 Sink的多路复用 152
8.3.3 使用Avro作为数据源 154
8.3.4 Channel的多路复用 155
8.4 APACHE服务器的日志格式 158
8.5 合并两个网站的日志 160
8.6 小结 162
第9章 KAFKA的安装、配置及其与FLUME的整合 163
9.1 KAFKA的特性及安装、配置 163
9.1.1 Kafka的特性和适用场合 163
9.1.2 安装、配置Kafka 164
9.2 几种术语 166
9.3 BROKER的使用方法 167
9.3.1 单节点单Broker 168
9.3.2 单节点多Broker 169
9.3.3 分布式Broker 172
9.3.4 分区及偏移量 174
9.3.5 分区选择策略 176
9.4 分布式生产者/消费者 176
9.4.1 两个生产者 176
9.4.2 消费者组 177
9.5 KAFKA CONNECTOR 180
9.5.1 File Source 181
9.5.2 File Sink 182
9.6 KAFKA和FLUME的整合 183
9.6.1 给Flume提供数据 183
9.6.2 从Flume中获取数据 184
9.7 使用PYTHON连接KAFKA 186
9.8 小结 187
第10章 REDIS数据库简介 188
10.1 REDIS的特点及适用场景 188
10.2 REDIS的安装及命令行使用方法 188
10.2.1 Redis的安装及启动 188
10.2.2 命令行客户端 189
10.2.3 5种数据类型 190
10.2.4 字符串命令 191
10.3 使用PYTHON操作REDIS 193
10.4 使用JAVA操作REDIS 194
10.5 小结 195
第11章 FLINK简介及其与KAFKA的整合 196
11.1 FLINK概述及其与SPARK的区别 196
11.2 FLINK的架构、特性及工作流程 196
11.3 FLINK的安装 199
11.3.1 单节点的安装 199
11.3.2 集群的安装 201
11.3.3 利用ZooKeeper实现Flink的高可用性 203
11.4 FLINK的作业提交方式 205
11.4.1 以Standalone方式运行 205
11.4.2 利用YARN Session运行 207
11.4.3 利用Python调用Flink服务 212
11.4.4 使用REST API查看状态 213
11.5 FLINK-KAFKA CONNECTOR 214
11.5.1 Flink为Kafka提供数据 215
11.5.2 Flink从Kafka接收数据 219
11.6 使用FLINK统计PAGEVIEW 221
11.6.1 Flink开发的一般步骤 221
11.6.2 Flink DataStream API 221
11.6.3 将数据落地至Redis和HBase 227
11.7 小结 235
第12章 网站页面访问量的动态展示 236
12.1 百度的ECHARTS图表功能简介 236
12.2 页面访问量的动态统计 238
12.2.1 模型层的开发 239
12.2.2 控制器层的开发 242
12.2.3 视图层的开发 242
12.3 生成词云图和占比饼图 245
12.3.1 词云图模型层的开发 245
12.3.2 词云图控制器层的开发 248
12.3.3 词云图视图层的开发 249
12.3.4 关键字饼图的模型层开发 249
12.3.5 关键字饼图的控制器层开发 250
12.3.6 关键字饼图的视图层开发 251
12.4 访问日志检索 252
12.5 小结 253
第三部分技术点总结 253
第四部分 云平台搭建
第13章 搭建基于云平台的容器级数据系统 256
13.1 云平台 256
13.1.1 云平台架构 256
13.1.2 云平台的搭建及部署 259
13.1.3 云平台的高级配置 303
13.2 基于云平台的容器集群 309
13.2.1 Magnum 309
13.2.2 Docker Swarm 311
13.2.3 Mesos和Marathon的结合 316
13.2.4 Kubernetes 323
13.3 基于容器的大数据系统 331
13.4 小结 339