这是一本适合教学和零基础自学的Hadoop与大数据挖掘的教程,即便你完全没有Hadoop编程基础和大数据挖掘基础,根据本书中的理论知识和上机实践,也能迅速掌握如何使用Hadoop进行大数据挖掘。全书主要分为两篇:基础篇(1-7章),首先从宏观上介绍了大数据相关概念和技术,然后逐一对Hadoop、Hive、HBase、Pig、Spark、Oozie等一系列大数据技术的概念、原理、架构,以及企业应用方法进行了详细介绍,同时配有大量的案例。掌握了这些内容,就具备了大数据技术的基础;挖掘实战篇(第8章),主要是一个企业级大数据应用项目——电子商务智能推荐系统。通过分析应用背景、构建系统,使读者了解针对系统的每一层应用使用什么大数据技术来解决问题。涉及的流程有数据采集、数据预处理、模型构建等,在每一个流程中会进行大数据相关技术实践,运用实际数据来进行分析,使读者切身感受到利用大数据技术解决问题的魅力。
为什么要写这本书最早提出“大数据”时代到来的是全球知名咨询公司麦肯锡,麦肯锡称:“数据,已经渗透到当今每一个行业和业务职能领域,成为重要的生产因素。人们对于海量数据的挖掘和运用,预示着新一波生产率增长和消费者盈余浪潮的到来。”
早在2012年,大数据(bigdata)一词已经被广泛提起,人们用它来描述和定义信息爆炸时代产生的海量数据,并命名与之相关的技术发展与创新。那时就有人预计,从2013年至2020年,全球数据规模将增长10倍,每年产生的数据量将由当时的4.4万亿GB,增长至44万亿GB,每两年翻一番。
既然“大数据”浪潮已经来临,那么与之对应的大数据人才呢?在国外,大数据技术发展正如火如荼,各种方便大家学习的资料、教程应有尽有。但是,在国内,这种资料却是有“门槛”的。其一,这类资料是英文的,对于部分人员来说,阅读是有难度的;其二,这些资料对于初学者或在校生来说,在理论理解上也有一些难度,没有充分的动手实践来协助理解大数据相关技术的原理、架构等;其三,在如何应用大数据技术来解决企业实实在在遇到的大数据相关问题方面,没有很好的资料;其四,对于企业用户来说,如何将大数据技术和数据挖掘技术相结合,对企业大量数据进行挖掘,以挖掘出有价值的信息,也是难点。
作为大数据相关技术,Hadoop无疑应用很广泛。Hadoop具有以下优势:高可靠性、高扩展性、高效性、高容错性、低成本、生态系统完善。
一般来说,使用Hadoop相关技术可以解决企业相关大数据应用,特别是结合诸如Mahout、SparkMLlib等技术,不仅可以对企业相关大数据进行基础分析,还能构建挖掘模型,挖掘企业大数据中有价值的信息。
对于学习大数据相关技术的高校师生来说,本书不仅提供了大数据相关技术的基础讲解及原理、架构分析,还针对这些原理,配备有对应的动手实践章节,帮助读者加深对原理、架构的认识。同时,在每个模块结束后,书中会有一个相对独立的企业应用案例,帮助读者巩固学到的大数据技术相关知识。
对于企业用户或大数据挖掘开发者来说,特别是对想要了解如何将大数据技术应用到企业大数据项目中的企业用户或者开发者来说,本书也是一份优秀的参考资料。
本书特色本书提供了大数据相关技术的简介、原理、实践、企业应用等,针对大数据相关技术,如Hadoop、HBase、Hive、Spark等,都有专业章节进行介绍,并且针对每一模块都有相应的动手实践,能有效加深读者对大数据相关技术原理、技术实践的理解。书中的挖掘实践篇涉及企业在大数据应用中的所有环节,如数据采集、数据预处理、数据挖掘等,通过案例对整个系统的架构进行了详细分析,对读者有一定实践指导作用。
读者可以从“泰迪杯”全国大学生数据挖掘挑战赛网站(http://www.tipdm.org/tj/865.jhtml)免费下载本书配套的全部数据文件及源程序。另外,为方便教师授课,本书还特意提供了建模阶段的过程数据文件、PPT课件,有需要的教师可通过热线电话(40068-40020)、企业QQ(40068-40020)或以下微信公众号咨询获取。
本书适用对象开设大数据、大数据挖掘相关课程的高校教师和学生目前国内不少高校将大数据、大数据挖掘引入本科教学中,在计算机、数学、自动化、电子信息、金融等专业开设了大数据技术相关的课程,但目前针对这一课程的相关教材没有统一,或者使用的教材不利于课堂教学。本书提供了大数据相关技术的简介、原理、实践、企业应用等,能有效帮助高校教师教学;帮助学生学习大数据相关技术原理,进行技术实践,为以后工作打下良好基础。
大数据开发人员书中针对大数据相关技术,如Hadoop、HBase、Hive、Spark等,都有专业章节进行介绍,并且针对每一模块有相应的动手实践,对初级开发人员有较强指导作用。
大数据架构师挖掘实践篇涉及企业在大数据应用中的所有环节,包括数据采集、数据预处理、数据挖掘等方面,通过案例对整个系统的架构进行了详细分析,对大数据架构师有一定的实践指导作用。
关注大数据挖掘技术的人员本书不仅包括大数据相关技术的简介及原理分析,还包括大数据相关技术和大数据挖掘相结合的案例分析。对于大数据挖掘技术人员来说,如何应用大数据技术来对大数据进行挖掘是重点和难点,通过学习本书中案例的分析方法,可以将其融入自己的实际工作中。
如何阅读本书本书主要分为两篇:基础篇和挖掘实战篇。基础篇介绍了大数据相关技术:Hadoop、Hive、HBase、Pig、Spark、Oozie等。针对每个技术都有相应模块与之对应,首先对该技术的概念、内部原理等进行介绍,使读者对该技术有一个由浅入深的理解;其次在对原理的介绍中会配合相应的动手实践,加深对原理的理解。在每个模块的最后,会有1~2个企业案例,主要讲解使用当前模块的技术来解决其中的1~2个问题,这样读者不仅对技术的原理、架构有了较深入的了解,同时,对于如何应用该技术也有了一定认识,从而为以后的工作、学习打下良好基础。挖掘实战篇通过对一个大型的企业应用案例的介绍,充分应用基础篇讲解的大数据技术来解决企业应用中遇到的各
Contents 目录
前言
第一篇 基础篇
第1章 浅谈大数据2
1.1 大数据概述3
1.2 大数据平台4
1.3 本章小结5
第2章 大数据存储与运算利器—Hadoop6
2.1 Hadoop概述6
2.1.1 Hadoop简介6
2.1.2 Hadoop存储—HDFS8
2.1.3 Hadoop计算—MapReduce11
2.1.4 Hadoop资源管理—YARN13
2.1.5 Hadoop生态系统14
2.2 Hadoop配置及IDE配置17
2.2.1 准备工作17
2.2.2 环境配置18
2.2.3 集群启动关闭与监控24
2.2.4 动手实践:一键式Hadoop集群启动关闭25
2.2.5 动手实践:Hadoop IDE配置26
2.3 Hadoop集群命令28
2.3.1 HDFS常用命令hdfs dfs30
2.3.2 动手实践:hdfs dfs命令实战31
2.3.3 MapReduce常用命令mapred job32
2.3.4 YARN常用命令yarn jar32
2.3.5 动手实践:运行MapReduce任务33
2.4 Hadoop编程开发33
2.4.1 HDFS Java API操作33
2.4.2 MapReduce原理35
2.4.3 动手实践:编写Word Count程序并打包运行44
2.4.4 MapReduce组件分析与编程实践46
2.5 K-Means算法原理及HadoopMapReduce实现53
2.5.1 K-Means算法原理53
2.5.2 动手实践:K-Means算法实现55
2.5.3 Hadoop K-Means算法实现思路55
2.5.4 Hadoop K-Means编程实现57
2.6 TF-IDF算法原理及HadoopMapReduce实现67
2.6.1 TF-IDF算法原理67
2.6.2 Hadoop TF-IDF编程思路67
2.6.3 Hadoop TF-IDF编程实现68
2.7 本章小结79
第3章 大数据查询—Hive81
3.1 Hive概述81
3.1.1 Hive体系架构82
3.1.2 Hive数据类型86
3.1.3 Hive安装87
3.1.4 动手实践:Hive安装配置91
3.1.5 动手实践:HiveQL基础—SQL91
3.2 HiveQL语句93
3.2.1 数据库操作94
3.2.2 Hive表定义94
3.2.3 数据导入100
3.2.4 数据导出103
3.2.5 HiveQL查询104
3.3 动手实践:基于Hive的学生信息查询108
3.4 基于Hive的航空公司客户价值数据预处理及分析109
3.4.1 背景与挖掘目标109
3.4.2 分析方法与过程111
3.5 本章小结115
第4章 大数据快速读写—HBase116
4.1 HBase概述116
4.2 配置HBase集群118
4.2.1 Zookeeper简介及配置118
4.2.2 配置HBase121
4.2.3 动手实践:HBase安装及运行122
4.2.4 动手实践:ZooKeeper获取HBase状态122
4.3 HBase原理与架构组件123
4.3.1 HBase架构与组件123
4.3.2 HBase数据模型127
4.3.3 读取/写入HBase数据128
4.3.4 RowKey设计原则129
4.3.5 动手实践:HBase数据模型验证131
4.4 HBase Shell操作132
4.4.1 HBase常用Shell命令132
4.4.2 动手实践:HBase Shell操作136
4.5 Java API &MapReduce与HBase交互137
4.5.1 搭建HBase开发环境137
4.5.2 使用Java API操作HBase表144
4.5.3 动手实践:HBase Java API使用147
4.5.4 MapReduce与HBase交互147
4.5.5 动手实践:HBase表导入导出150
4.6 基于HBase的冠字号查询系统151
4.6.1 案例背景151
4.6.2 功能指标151
4.6.3 系统设计152
4.6.4 动手实践:构建基于HBase的冠字号查询系统162
4.7 本章小结175
第5章 大数据处理—Pig176
5.1 Pig概述176
5.1.1 Pig Latin简介177
5.1.2 Pig数据类型179
5.1.3 Pig与Hive比较179
5.2 配置运行Pig180
5.2.1 Pig配置181
5.2.2 Pig运行模式181
5.3 常用Pig Latin操作182
5.3.1 数据加载182
5.3.2 数据存储184
5.3.3 Pig参数替换185
5.3.4 数据转换186
5.4 综合实践194
5.4.1 动手实践:访问统计信息数据处理194
5.4.2 动手实践:股票交易数据处理195
5.5 本章小结196
第6章 大数据快速运算与挖掘—Spark197
6.1 Spark概述197
6.2 Spark安装集群199
6.2.1 3种运行模式199
6.2.2 动手实践:配置Spark独立集群199
6.2.3 3种运行模式实例201
6.2.4 动手实践:Spark Streaming实时日志统计205
6.2.5 动手实践:Spark开发环境—Intellij IDEA配置207
6.3 Spark架构与核心原理212
6.3.1 Spark架构212
6.3.2 RDD原理213
6.3.3 深入理解Spark核心原理215
6.4 Spark编程技巧218
6.4.1 Scala基础218
6.4.2 Spark基础编程218
6.5 如何学习Spark MLlib225
6.5.1 确定应用227
6.5.2 ALS算法直观描述228
6.5.3 编程实现229
6.5.4 问题解决及模型调优233
6.6 动手实践:基于Spark ALS电影推荐系统234
6.6.1 动手实践:生成算法包235
6.6.2 动手实践:完善推荐系统239
6.7 本章小结250
第7章 大数据工作流—Oozie252
7.1 Oozie简介252
7.2 编译配置并运行Oozie253
7.2.1 动手实践:编译Oozie253
7.2.2 动手实践:Oozie Server/client配置254
7.3 Oozie WorkFlow实践257
7.3.1 定义及提交工作流257
7.3.2 动手实践:MapReduce Work-Flow定义及调度260
7.3.3 动手实践:Pig WorkFlow定义及调度263
7.3.4 动手实践:Hive WorkFlow定义及调度265
7.3.5 动手实践:Spark WorkFlow定义及调度267
7.3.6 动手实践:Spark On Yarn定义及调度268
7.4 Oozie Coordinator实践270
7.4.1 动手实践:基于时间调度270
7.4