本书以任务为导向,较为全面地介绍了Hadoop大数据技术的相关知识。全书共6章,具体内容包括Hadoop介绍、Hadoop集群的搭建及配置、Hadoop基础操作、MapReduce编程入门、MapReduce进阶编程、项目案例:电影网站用户性别预测。本书的2~5章包含了实训与课后练习,通过练习和操作实践,帮助读者巩固所学的内容。
本书可以作为高校大数据技术类专业的教材,也可作为大数据技术爱好者的自学用书。
大数据专家张良均领衔畅销书作者团队,教育部长江学者特聘教授、国家杰出青年基金获得者、IEEE Fellow、华南理工大学计算机与工程学院院长张军倾力推荐。
本书采用了以任务为导向的教学模式,按照解决实际任务的工作流程路线,逐步展开介绍相关的理论知识点,推导生成可行的解决方案,落实在任务实现环节。
全书大部分章节紧扣任务需求展开,不堆积知识点,着重于解决问题时思路的启发与方案的实施。通过从任务需求到实现这一完整工作流程的体验,帮助读者真正理解与消化Hadoop大数据技术。
书中案例全部源于企业真实项目,可操作性强,引导读者融会贯通,并提供源代码等相关学习资源,帮助读者快速掌握大数据相关技能。
张良均,信息系统项目管理师,泰迪杯全国大学生数据挖掘竞赛的发起人。华南师范大学、广东工业大学兼职教授,广东省工业与应用数学学会理事。兼有大型高科技企业和高校的工作经历,主要从事大数据挖掘及其应用的策划、研发及咨询培训。全国计算机技术与软件专业技术资格(水平)考试继续教育和CDA数据分析师培训讲师。发表数据挖掘相关论文数二十余篇,已取得国家发明专利12项,主编图书《神经网络实用教程》《数据挖掘:实用案例分析》《Python数据分析与挖掘》等多本畅销图书,主持并完成科技项目9项。获得SAS、SPSS数据挖掘认证及Hadoop开发工程师证书,具有电力、电信、银行、制造企业、电子商务和电子政务的项目经验和行业背景。
一章 Hadoop介绍 1
1.1 Hadoop概述 1
1.1.1 Hadoop简介 1
1.1.2 Hadoop的发展历史 2
1.1.3 Hadoop的特点 3
1.2 Hadoop核心 4
1.2.1 分布式文件系统——HDFS 4
1.2.2 分布式计算框架——MapReduce 7
1.2.3 集群资源管理器——YARN 9
1.3 Hadoop生态系统 12
1.4 Hadoop应用场景 14
小结 15
二章 Hadoop集群的搭建及配置 16
任务2.1 安装及配置虚拟机 17
2.1.1 创建Linux虚拟机 17
2.1.2 设置固定IP 25
2.1.3 远程连接虚拟机 27
2.1.4 虚拟机在线安装软件 29
2.1.5 任务实现 32
任务2.2 安装Java 32
2.2.1 在Windows下安装Java 33
2.2.2 在Linux下安装Java 35
2.2.3 任务实现 36
任务2.3 搭建Hadoop完全分布式集群 36
2.3.1 修改配置文件 36
2.3.2 克隆虚拟机 41
2.3.3 配置SSH免密码登录 43
2.3.4 配置时间同步服务 44
2.3.5 启动关闭集群 46
2.3.6 监控集群 47
小结 50
实训 50
实训1 为Hadoop集群增加一个节点 50
实训2 编写Shell脚本同步集群时间 51
课后练习 51
第3章 Hadoop基础操作 53
任务3.1 查看Hadoop集群的基本信息 54
3.1.1 查询集群的存储系统信息 55
3.1.2 查询集群的计算资源信息 58
任务3.2 上传文件到HDFS目录 59
3.2.1 了解HDFS文件系统 59
3.2.2 掌握HDFS的基本操作 62
3.2.3 任务实现 65
任务3.3 运行MapReduce任务 67
3.3.1 了解Hadoop官方的示例程序包 67
3.3.2 提交MapReduce任务给集群运行 68
任务3.4 管理多个MapReduce任务 71
3.4.1 查询MapReduce任务 72
3.4.2 中断MapReduce任务 74
小结 76
实训 77
实训1 统计文件中所有单词的平均长度 77
实训2 查询与中断MapReduce任务 77
课后练习 78
第4章 MapReduce编程入门 80
任务4.1 使用Eclipse创建MapReduce工程 81
4.1.1 下载与安装Eclipse 81
4.1.2 配置MapReduce环境 82
4.1.3 新建MapReduce工程 84
任务4.2 通过源码初识MapReduce编程 86
4.2.1 通俗理解MapReduce原理 86
4.2.2 了解MR实现词频统计的执行流程 88
4.2.3 读懂官方提供的WordCount源码 89
任务4.3 编程实现按日期统计访问次数 94
4.3.1 分析思路与处理逻辑 94
4.3.2 编写核心模块代码 95
4.3.3 任务实现 97
任务4.4 编程实现按访问次数排序 99
4.4.1 分析思路与处理逻辑 99
4.4.2 编写核心模块代码 100
4.4.3 任务实现 102
小结 104
实训 104
实训1 获取成绩表的高分记录 104
实训2 对两个文件中的数据进行合并与去重 105
课后练习 107
第5章 MapReduce进阶编程 110
任务5.1 筛选日志文件并生成序列化文件 111
5.1.1 MapReduce输入格式 111
5.1.2 MapReduce输出格式 113
5.1.3 任务实现 113
任务5.2 Hadoop Java API读取序列化日志文件 115
5.2.1 FileSystem API管理文件夹 115
5.2.2 FileSystem API操作文件 119
5.2.3 FileSystem API读写数据 121
5.2.4 任务实现 123
任务5.3 优化日志文件统计程序 124
5.3.1 自定义键值类型 124
5.3.2 初步探索Combiner 128
5.3.3 浅析Partitioner 130
5.3.4 自定义计数器 132
5.3.5 任务实现 134
任务5.4 Eclipse提交日志文件统计程序 137
5.4.1 传递参数 137
5.4.2 Hadoop辅助类ToolRunner 139
5.4.3 Eclipse自动打包并提交任务 140
小结 144
实训 144
实训1 统计全球每年的高气温和低气温 144
实训2 筛选气温在15~25℃之间的数据 145
课后练习 146
第6章 项目案例:电影网站用户性别预测 151
任务6.1 认识KNN算法 152
6.1.1 KNN算法简介 152
6.1.2 KNN算法原理及流程 152
任务6.2 数据预处理 154
6.2.1 获取数据 154
6.2.2 数据变换 155
6.2.3 数据清洗 160
6.2.4 划分数据集 163
任务6.3 实现用户性别分类 167
6.3.1 实现思路 167
6.3.2 代码实现 169
任务6.4 评价分类结果的准确性 179
6.4.1 评价思路 179
6.4.2 实现分类评价 180
6.4.3 寻找优K值 184
小结 188
参考文献 189