目前,社会对大数据工程技术人才的需求大大增加,因此向计算机和电子信息类相关专业学生传授大数据知识和技术方法,提高他们在各领域应用大数据的能力具有重大意义。本书共9章,围绕大数据的基本概念和大数据处理的主要环节编写。第1章主要介绍大数据的概念、特点和构成;第2章主要介绍在Windows系统中安装Linux虚拟机及构建Hadoop分布式集群的方法;第3章主要介绍大数据采集工具的使用及数据预处理的常用方法;第4章首先介绍Hadoop的发展历史、软件生态、核心组件和命令结构,然后以HDFS为重点,介绍其体系结构和特点,并详细介绍HDFS的交互式命令;第5章介绍大数据环境下存储工具HBase的数据模型;第6章介绍Hive的存储模型,第7章介绍在Hadoop平台上利用Python设计MapReduce程序的基本思路;第8章介绍大数据分析与挖掘过程中的常用算法;第9章介绍数据可视化的常用方法及常用工具。本书的内容与实际应用紧密结合,目的是让读者能了解大数据的基本概念、理解大数据技术的基本原理、初步掌握大数据处理和分析的基本方法,为未来应用大数据思维和大数据分析方法解决工作中的实际问题打下良好的基础。本书适合作为高等学校计算机类和电子信息类相关专业大数据技术相关课程的教材,可供本科生、研究生使用,同时也适合对大数据技术感兴趣的广大读者进行自学和实践时使用。
严宣辉,男,福建师范大学数学与信息学院副教授、理学博士,硕士生导师,数字福建环境监测物联网实验室副主任、福建省人工智能学会理事。先后担任过学院实验室主任、公共计算机教研室主任和计算机科学系主任等工作。福建省精品在线开放课程"大数据导论”负责人,该课程已在中国大学MOOC、优课联盟等慕课平台上开课三个学期以上,吸引了大量学生参加学习,得到了学习者的广泛好评。
目录
第1章 绪论 1
1.1 大数据的基本概念 1
1.2 大数据的价值和作用 4
1.3 大数据带来的思维方式变革 7
1.4 大数据处理技术基础 9
1.4.1 大数据处理的主要环节 9
1.4.2 大数据的技术支撑 11
1.4.3 流行的大数据技术 13
1.5 大数据面临的技术挑战 15
1.6 本章小结 16
1.7 习题 16
第2章 大数据实验环境构建 18
2.1 在Windows中安装Linux虚拟机 18
2.1.1 创建虚拟机 19
2.1.2 虚拟机启动初始化 21
2.1.3 克隆虚拟机 22
2.2 Linux操作基础 23
2.2.1 软件包管理工具 23
2.2.2 目录和文件操作 24
2.2.3 用户和权限管理命令 25
2.2.4 修改文件的访问权限 25
2.2.5 压缩和解压缩 27
2.2.6 网络配置命令 27
2.2.7 系统服务命令 28
2.2.8 查找命令 29
2.3 建立Linux集群 29
2.3.1 VMware Workstation的网络模式简介 30
2.3.2 集群规划和网络设置 31
2.3.3 配置虚拟机的网络参数 33
2.3.4 关闭防火墙和SELinux 36
2.3.5 SSH免密登录 37
2.4 Hadoop系统简介 41
2.4.1 Hadoop的生态系统 41
2.4.2 Hadoop集群的类型 42
2.5 构建Hadoop“伪分布式”集群 42
2.5.1 安装JDK 42
2.5.2 安装Hadoop软件 44
2.5.3 配置SSH免密登录 45
2.5.4 配置Hadoop 45
2.5.5 启动Hadoop 48
2.6 构建“完全分布式”Hadoop集群 49
2.6.1 配置Hadoop集群的主节点 49
2.6.2 将配置文件发送到从节点 52
2.7 测试Hadoop集群 52
2.7.1 测试HDFS 52
2.7.2 测试WordCount程序 56
2.8 安装Zookeeper 57
2.8.1 在“伪分布”模式下安装Zookeeper 57
2.8.2 在“完全分布”模式下安装Zookeeper 58
2.9 用Ambari构建和管理Hadoop集群 60
2.9.1 安装Ambari 61
2.9.2 用Ambari管理和配置Hadoop集群 61
2.10 本章小结 63
2.11 习题与实验 63
第3章 大数据采集与预处理 66
3.1 大数据采集概述 66
3.1.1 大数据的来源 66
3.1.2 数据容量的单位 67
3.1.3 大数据采集的基本方法 67
3.2 常用的大数据采集工具简介 68
3.2.1 基于Python的网页采集框架Scrapy 69
3.2.2 日志收集工具Flume 74
3.3 数据属性的类型 79
3.3.1 “属性”的类型 79
3.3.2 属性类型的转换 80
3.4 数据预处理 80
3.4.1 数据变换 81
3.4.2 数据清洗 84
3.4.3 使用OpenRefine清洗数据 86
3.4.4 数据集成 89
3.5 本章小结 91
3.6 习题 91
第4章 Hadoop分布式文件系统 94
4.1 Hadoop 94
4.1.1 Hadoop的发展历史 95
4.1.2 Hadoop的优势 96
4.1.3 Hadoop生态 96
4.1.4 Hadoop的核心组件 97
4.1.5 Hadoop集群与资源管理 99
4.1.6 Hadoop命令结构 102
4.2 HDFS体系结构 104
4.2.1 HDFS的设计目标 104
4.2.2 HDFS中的NameNode和DataNodes 105
4.2.3 文件系统命名空间(The File System Namespace) 108
4.2.4 数据容错 108
4.2.5 副本的管理与使用 109
4.3 HDFS初探 110
4.3.1 开始HDFS旅程 110
4.3.2 添加数据文件 111
4.3.3 从HDFS中下载文件 111
4.3.4 关闭HDFS 111
4.3.5 利用Web Console访问HDFS 111
4.4 HDFS常用CLI命令 113
4.4.1 HDFS CLI总览 113
4.4.2 常用HDFS文件操作命令 115
4.5 利用pyhdfs实现HDFS的文件访问 119
4.5.1 pyhdfs的安装与应用案例 120
4.5.2 pyhdfs的HdfsClient类 120
4.6 pyhdfs应用实战 133
4.7 本章小结 135
4.8 习题与实验 135
第5章 HBase基础与应用 137
5.1 HBase简介 137
5.2 HBase安装 138
5.3 HBase初探 139
5.4 HBase的数据模型 143
5.4.1 HBase数据模型相关术语 143
5.4.2 概念模式/视图(Conceptual View) 145
5.4.3 物理模式/视图(Physical View) 146
5.4.4 命名空间(Namespace) 147
5.5 HBase Shell 147
5.5.1 HBase Shell概述 147
5.5.2 创建表(create) 149
5.5.3 修改表/列族(alter table / column family) 153
5.5.4 添加数据(put) 155
5.5.5 获取行或单元(get) 156
5.5.6 扫描并输出数据(scan) 157
5.5.7 统计表的行数(count) 158
5.5.8 删除指定值(delete) 159
5.5.9 其他常用shell命令 160
5.5.10 HBase Shell中的对象引用 162
5.6 利用Jython实现HBase的访问 162
5.6.1 Jython环境设置 162
5.6.2 Jython访问HBase 163
5.6.3 利用scan变量HBase中的数据 164
5.7 本章小结 165
5.8 习题与实验 165
第6章 Hive基础与应用 167
6.1 Hive简介 167
6.1.1 数据库与数据仓库 168
6.1.2 Hive体系结构与接口 168
6.2 Hive的存储模型 169
6.3 Hive初探 171
6.4 Hive的数据定义—DDL 175
6.4.1 数据库的相关操作 175
6.4.2 数据表的创建 177
6.4.3 数据表和分区的修改 182
6.4.4 数据表的其他操作 189
6.5 Hive的数据操纵——DML 194
6.6 Hive的数据检索——Hive-QL 201
6.7 本章小结 206
6.8 习题与实验 207
第7章 分布式计算框架MapReduce 209
7.1 MapReduce概述 209
7.1.1 第一个MapReduce的Python程序 210
7.1.2 MapReduce工作原理 212
7.1.3 MapReduce作业的工作流程 212
7.1.4 MapReduce的输入/输出 214
7.2 WordCount实例详解 214
7.2.1 WordCount程序源码 214
7.2.2 WordCount程序执行 215
7.2.3 WordCount程序原理 216
7.3 Hadoop Streaming 217
7.3.1 Hadoop Streaming的工作原理 218
7.3.2 打包提交作业 218
7.3.3 Streaming工具的用法 219
7.3.4 常见问题应用技巧 222
7.4 MapReduce作业管理 223
7.5 MapReduce Python代码的测试 225
7.6 利用Python的迭代器和生成器优化wordCount程序 227
7.6.1 Python中的迭代器 227
7.6.2 Python中的生成器 228
7.6.3 itertools模块 229
7.6.4 优化wordCount程序 232
7.7 MapReduce程序设计模式 233
7.7.1 数据集介绍 233
7.7.2 聚合查询模式(Summarization Patterns) 235
7.7.3 过滤模式(Filtering Patterns) 241
7.7.4 数据连接模式(Join Patterns) 245
7.8 用MRJob库编写MapReduce程序 250
7.8.1 第一个MRJob程序 250
7.8.2 MRJob应用详解 253
7.8.3 MRJob的协议 256
7.8.4 MRJob的其余设置 259
7.9 本章小结 260
7.10 习题与实验 261
第8章 大数据分析与挖掘 262
8.1 数据的描述性分析 262
8.1.1 数据的集中趋势度量 262
8.1.2 数据的离散趋势度量 263
8.1.3 数据的偏态特性度量 266
8.1.4 数据相关性计算 267
8.2 回归分析 271
8.2.1 一元线性回归(Linear Regression) 271
8.2.2 其他类型的回归模型 274
8.3 分类算法简介 275
8.3.1 逻辑回归 275
8.3.2 近邻分类算法 277
8.3.3 决策树算法 279
8.4 聚类算法简介 285
8.4.1 主要的聚类算法类型 285
8.4.2 聚类质量度量指标 286
8.4.3 k-Means算法 288
8.5 分布式大数据挖掘算法典型案例 290
8.6 本章小结 295
8.7 习题与实验 296
第9章 大数据可视化 298
9.1 引言 298
9.2 大数据可视化的常用方法 300
9.2.1 趋势型大数据可视化方法 300
9.2.2 对比型大数据可视化方法 302
9.2.3 比例型大数据可视化方法 304
9.2.4 分布型大数据可视化 305
9.2.5 文本大数据可视化 306
9.2.6 关系网络大数据可视化 307
9.2.7 时空大数据可视化 308
9.2.8 层次结构大数据可视化 309
9.2.9 高维大数据可视化 310
9.3 大数据可视化常用工具简介 311
9.3.1 Tableau大数据可视化工具简介 312
9.3.2 Python的Matplotlib库简介 314
9.4 基于ECharts的可视化示例 318
9.4.1 ECharts使用准备 319
9.4.2 ECharts 基础概念概览 320
9.4.3 ECharts示例 320
9.5 本章小结 326
9.6 习题与实验 326
附录A HDFS交互命令 328
附录B pyhdfs其他类说明 339
参考文献 344