新書推薦:
《
塔西佗(全二册)(二十世纪人文译丛)
》
售價:NT$
1800.0
《
宋初三先生集(中国思想史资料丛刊)
》
售價:NT$
990.0
《
简帛时代与早期中国思想世界(上下册)(王中江著作系列)
》
售價:NT$
1400.0
《
天生坏种:罪犯与犯罪心理分析
》
售價:NT$
445.0
《
新能源材料
》
售價:NT$
290.0
《
传统文化有意思:古代发明了不起
》
售價:NT$
199.0
《
亚述:世界历史上第一个帝国的兴衰
》
售價:NT$
490.0
《
人工智能与大数据:采煤机智能制造
》
售價:NT$
440.0
|
編輯推薦: |
国内某一线大厂资深大数据架构师多年项目实战经验的总结,理论结合实践,深入剖析Hadoop海量数据处理的核心技术。
内容全面:全面涵盖Hadoop基础知识和Hadoop分布式文件系统(HDFS),以及MapReduce分布式编程框架和YARN资源调度器等内容,帮助读者全面掌握Hadoop海量数据处理的核心技术。
讲解深入:不仅系统地剖析Hadoop海量数据处理技术原理,还从代码层面深入地分析Hadoop系统的实现过程,并分析HDFS和MapReduce的每一步操作,帮助读者洞悉其工作机制与运行原理。
实用性强:讲解理论知识时穿插100多个典型示例,帮助读者深入理解Hadoop海量数据处理技术的精髓。另外,通过Hadoop高可用集群搭建和经典的统计TopN案例构建两个实战项目,帮助读者上手实践,从而提高实际项目开发水平。
适用面广:无论是Hadoop初学者,还是开发人员、数据分析人员、大数据工程师和数据科学家等相关从业人员,都可以从本书中获得需要的知识和技能。
前瞻性强:基于Hadoop 3.x版写作,内容新颖,技术前瞻,不但介绍纠删码和NameNode Federation联邦
|
內容簡介: |
《Hadoop海量数据处理》从Hadoop的基础知识讲起,逐步深入Hadoop分布式文件系统(HDFS)和MapReduce分布式编程框架的核心技术,帮助读者全面、系统、深入地理解Hadoop海量数据处理技术的精髓。本书在讲解技术原理时穿插大量的典型示例,并详解两个典型项目实战案例,帮助读者提高实际项目开发水平。
《Hadoop海量数据处理》共15章,分为4篇。第1篇Hadoop基础知识,包括大数据概述、Hadoop概述、Hadoop环境搭建与配置;第2篇Hadoop分布式存储技术,包括HDFS概述、HDFS基础操作、HDFS的读写原理和工作机制、Hadoop 3.x的新特性;第3篇MapReduce分布式编程框架,包括MapReduce概述、MapReduce开发基础、MapReduce框架的原理、MapReduce数据压缩、YARN资源调度器、Hadoop企业级优化;第4篇项目实战,包括Hadoop高可用集群搭建实战和统计TopN经典项目案例实战。
《Hadoop海量数据处理》通俗易懂、案例丰富、实用性强,适合Hadoop初学者和进阶人员阅读,也适合大数据工程师、数据分析工程师和数据科学家等大数据技术从业人员和爱好者阅读,还适合作为高等院校和相关培训机构的大数据教材。
|
關於作者: |
许政 毕业于哈尔滨工业大学,获硕士学位。现居深圳,任某一线大厂大数据架构师。参加工作以来,带领团队完成了多个百亿级大数据平台的建设。在实时计算方面有深厚的实践经验。熟悉多种大数据技术框架,如Hadoop、Spark、Flink、Elasticsearch、Kafka、HBase、ZooKeeper等。被CSDN评为优秀博主,撰写了大数据技术相关博文100余篇,博客访问量高达240多万。运维自己的独立博客网站。在大数据实时处理技术和人工智能算法方面有深入的研究,申请发明专利10余项。
|
目錄:
|
第1篇 Hadoop基础知识
第1章 大数据概述 2
1.1 大数据简介 2
1.2 大数据的特点 2
1.3 大数据的发展前景 3
1.4 大数据技术生态体系 4
1.4.1 数据采集与传输类 4
1.4.2 数据存储与管理类 5
1.4.3 资源管理类 5
1.4.4 数据计算类 5
1.4.5 任务调度类 6
1.5 大数据部门的组织架构 6
1.6 小结 7
第2章 Hadoop概述 8
2.1 Hadoop简介 8
2.2 Hadoop的发展历史 8
2.3 Hadoop的三大发行版本 9
2.4 Hadoop的优势 10
2.5 Hadoop各版本之间的区别 10
2.6 Hadoop的组成 11
2.6.1 HDFS架构简介 11
2.6.2 YARN架构简介 12
2.6.3 MapReduce架构简介 13
2.7 小结 14
第3章 Hadoop环境搭建与配置 15
3.1 搭建开发环境 15
3.1.1 对操作系统的要求 15
3.1.2 对软件环境的要求 17
3.1.3 下载和安装JDK 18
3.1.4 配置JDK环境变量 19
3.1.5 下载和安装Hadoop 19
3.1.6 配置Hadoop的环境变量 19
3.1.7 配置Hadoop的系统参数 20
3.1.8 解读Hadoop的目录结构 21
3.2 配置本地运行模式 22
3.2.1 在Linux环境下运行Hadoop官方的Grep案例 22
3.2.2 在Linux环境下运行Hadoop官方的WordCount案例 23
3.2.3 在Windows环境下搭建Hadoop 23
3.2.4 在Windows环境下运行WordCount案例 25
3.3 配置伪分布式模式 26
3.3.1 启动HDFS并运行MapReduce程序 26
3.3.2 启动YARN并运行MapReduce程序 31
3.3.3 配置历史服务器 35
3.3.4 配置日志的聚集功能 36
3.4 配置完全分布式模式 38
3.4.1 分布式集群环境准备 39
3.4.2 配置完全分布式集群 42
3.4.3 配置Hadoop集群单点启动 46
3.4.4 测试完全分布式集群 47
3.4.5 配置Hadoop集群整体启动 48
3.4.6 配置Hadoop集群时间同步 50
3.5 小结 52
第2篇 Hadoop分布式存储技术
第4章 HDFS概述 54
4.1 HDFS的背景和定义 54
4.1.1 HDFS产生的背景 54
4.1.2 HDFS的定义 54
4.2 HDFS的优缺点 55
4.2.1 HDFS的优点 55
4.2.2 HDFS的缺点 56
4.3 HDFS的组成架构 56
4.4 设置HDFS文件块的大小 58
4.5 小结 59
第5章 HDFS基础操作 60
5.1 HDFS的Shell命令操作 60
5.1.1 HDFS的帮助命令 60
5.1.2 显示HDFS的目录信息 62
5.1.3 创建HDFS目录 62
5.1.4 将本地文件复制到HDFS中 62
5.1.5 将HDFS中的文件复制到本地文件系统中 63
5.1.6 输出HDFS文件内容 63
5.1.7 追加HDFS文件内容 64
5.1.8 修改HDFS文件操作权限 65
5.1.9 将本地文件移动至HDFS中 65
5.1.10 复制HDFS文件 66
5.1.11 移动HDFS文件 66
5.1.12 上传HDFS文件 67
5.1.13 下载HDFS文件 67
5.1.14 删除文件或目录 67
5.1.15 批量下载HDFS文件 68
5.1.16 显示文件的末尾 68
5.1.17 统计目录的大小 69
5.1.18 设置HDFS中的文件副本数量 69
5.2 HDFS的API调用操作 69
5.2.1 准备开发环境 69
5.2.2 通过API创建目录 72
5.2.3 通过API上传文件 73
5.2.4 通过API下载文件 73
5.2.5 通过API删除目录 74
5.2.6 通过API修改文件名称 74
5.2.7 通过API查看文件详情 75
5.2.8 通过API判断文件和目录 76
5.2.9 通过I/O流上传文件 77
5.2.10 通过I/O流下载文件 77
5.2.11 通过I/O流定位文件读取位置 78
5.3 小结 79
第6章 HDFS的读写原理和工作机制 80
6.1 剖析HDFS的写数据流程 80
6.1.1 剖析文件写入流程 80
6.1.2 计算网络拓扑节点的距离 82
6.1.3 机架感知 83
6.2 剖析HDFS的读数据流程 83
6.3 剖析NameNode和SecondaryNameNode 的工作机制 85
6.3.1 解析NN和2NN的工作机制 85
6.3.2 解析FsImage和Edits文件 88
6.3.3 CheckPoint时间设置 94
6.3.4 NameNode故障处理 95
6.3.5 集群安全模式 97
6.3.6 NameNode多目录配置 99
6.4 剖析DataNode 100
6.4.1 解析DataNode的工作机制 100
6.4.2 保证数据的完整性 101
6.4.3 设置掉线时限参数 102
6.4.4 服役新的数据节点 102
6.4.5 退役旧的数据节点 109
6.4.6 DataNode多目录配置 111
6.5 小结 112
第7章 Hadoop 3.x的新特性 113
7.1 纠删码技术 113
7.1.1 探究纠删码技术原理 113
7.1.2 简述纠删码模式布局方案 113
7.1.3 解读纠删码策略 114
7.1.4 查看纠删码 115
7.1.5 设置纠删码 115
7.2 复制HDFS集群间的数据 116
7.2.1 采用scp实现HDFS集群间的数据复制 116
7.2.2 采用distcp实现HDFS集群间的数据复制 116
7.3 解决海量小文件的存储问题 116
7.3.1 HDFS存储小文件的弊端 117
7.3.2 将海量小文件存储为HAR文件 117
7.4 配置HDFS回收站 118
7.4.1 回收站的功能参数说明 118
7.4.2 解析回收站的工作机制 119
7.4.3 开启回收站的功能 119
7.4.4 修改访问回收站的用户名称 119
7.4.5 测试回收站的功能 120
7.4.6 恢复回收站中的数据 120
7.4.7 清空回收站 121
7.5 HDFS快照管理 121
7.6 小结 122
第3篇 MapReduce分布式编程框架
第8章 MapReduce概述 124
8.1 MapReduce的定义 124
8.2 MapReduce的优缺点 124
8.2.1 MapReduce的优点 124
8.2.2 MapReduce的缺点 125
8.3 MapReduce的核心编程思想 126
8.3.1 深入理解核心思想 126
8.3.2 MapReduce进程解析 128
8.4 官方的WordCount源码解析 128
8.5 小结 131
第9章 MapReduce开发基础 132
9.1 Hadoop的序列化概述 132
9.1.1 序列化与反序列化的定义 132
9.1.2 进行序列化的原因 132
9.1.3 Hadoop序列化的特点 132
9.2 数据序列化的类型 132
9.2.1 基本类型 133
9.2.2 集合类型 133
9.2.3 用户自定义类型 133
9.2.4 序列化类型案例实战 134
9.3 如何开发MapReduce程序 143
9.3.1 MapReduce编程规范 143
9.3.2 WordCount案例实战 144
9.4 小结 152
第10章 MapReduce框架的原理 153
10.1 InputFormat数据输入解析 153
10.1.1 切片与MapTask的并行度决定机制 153
10.1.2 FileInputFormat的切片机制解析 154
10.1.3 CombineTextInputFormat的切片机制 155
10.1.4 CombineTextInputFormat案例实战 157
10.1.5 归纳FileInputFormat的其他子类 165
10.1.6 KeyValueTextInputFormat案例实战 167
10.1.7 NLineInputFormat案例实战 175
10.1.8 自定义InputFormat案例实战 184
10.2 解析MapReduce的工作流程 194
10.3 剖析Shuffle的工作机制 198
10.3.1 Shuffle机制简介 198
10.3.2 Partition分区简介 199
10.3.3 Partition分区案例实战 199
10.3.4 WritableComparable排序简介 210
10.3.5 WritableComparable全排序案例实战 211
10.3.6 WritableComparable区内排序案例实战 221
10.3.7 Combiner合并简介 230
10.3.8 Combiner合并案例实战 231
10.3.9 GroupingComparator分组简介 238
10.3.10 GroupingComparator分组案例实战 238
10.4 剖析MapTask的工作机制 247
10.5 剖析ReduceTask的工作机制 248
10.6 OutputFormat数据输出类详解 249
10.6.1 OutputFormat接口实现类简介 250
10.6.2 自定义OutputFormat接口实现类案例实战 250
10.7 Join的多种应用 258
10.7.1 Reduce Join案例实战 258
10.7.2 Map Join案例实战 267
10.8 小结 277
第11章 MapReduce数据压缩 278
11.1 数据压缩概述 278
11.2 MapReduce支持的压缩编码器 278
11.3 选择压缩方式 279
11.3.1 Gzip压缩 280
11.3.2 Bzip2压缩 280
11.3.3 LZO压缩 280
11.3.4 Snappy压缩 280
11.4 配置压缩参数 281
11.5 压缩实战案例 281
11.5.1 实现数据流的压缩和解压缩 281
11.5.2 实现Map输出端压缩 285
11.5.3 实现Reduce输出端压缩 287
11.6 小结 290
第12章 YARN资源调度器 291
12.1 解析YARN的基本架构 291
12.2 剖析YARN的工作机制 292
12.3 作业提交全过程 295
12.4 资源调度器的分类 296
12.5 任务的推测执行 298
12.6 小结 299
第13章 Hadoop企业级优化 300
13.1 HDFS优化 300
13.2 MapReduce优化 301
13.2.1 剖析MapReduce程序运行慢的原因 301
13.2.2 MapReduce的优化方法 302
13.3 小结 304
第4篇 项目实战
第14章 Hadoop高可用集群搭建实战 306
14.1 HA高可用简介 306
14.2 HDFS-HA的工作机制 307
14.2.1 HDFS-HA的工作要点 307
14.2.2 HDFS-HA的自动故障转移工作机制 308
14.3 搭建HDFS-HA集群 310
14.3.1 准备集群环境 310
14.3.2 规划集群节点 312
14.3.3 下载和安装JDK 313
14.3.4 配置JDK环境变量 313
14.3.5 安装ZooKeeper集群 314
14.3.6 配置ZooKeeper集群 314
14.3.7 启动ZooKeeper集群 315
14.3.8 配置HDFS-HA集群 316
14.3.9 配置HDFS-HA自动故障转移 319
14.4 搭建YARN-HA集群 320
14.4.1 YARN-HA集群的工作机制 320
14.4.2 配置YARN-HA集群 321
14.5 小结 323
第15章 统计TopN经典项目案例实战 324
15.1 项目案例构建流程 324
15.1.1 创建输入文件 324
15.1.2 搭建一个Maven工程 325
15.1.3 定义序列化对象 329
15.1.4 编写Mapper文件 330
15.1.5 编写Reducer文件 332
15.1.6 编写Driver文件 333
15.1.7 打包Maven工程 334
15.1.8 启动Hadoop集群 334
15.1.9 运行TopN程序 335
15.2 小结 336
Hadoop海量数据处理:技术原理与项目实践
目录
·VI·
·XI·
|
內容試閱:
|
随着企业业务数据的日益增多,如何存储和分析海量数据成为每个企业急需解决的问题。Hadoop的出现使得企业仅用多台计算机便可组成分布式集群,对海量数据资源进行分布式存储和并行计算。这样不仅能够满足企业存储海量数据的需求,而且能够极大地提升并行处理数据的速度。
在过去的10多年中,Hadoop经历了多个版本的更新迭代,逐渐变得成熟和稳定,其在大数据处理方面的性能也更加卓越。尤其随着Hadoop 3.x版的发布,其整个生态系统也愈加完善,很多企业基于Hadoop 3.x开发自己的大数据处理平台。
Hadoop 3.x版对MapReduce进行了拆分,独立出一个资源调度模块YARN。拆分后,MapReduce只负责任务的计算,而YARN只负责资源的调度。这种机制大大降低了系统间的耦合性。另外,Hadoop 3.x版还增加了许多新特性:解决了海量小文件存储的问题;通过纠删码技术提高了磁盘的有效使用率;HDFS的快照管理功能解决了数据备份文件;Hadoop-HA的高可用机制保证了Hadoop集群的高可靠性和高容错性;NameNode Federation联邦机制解决了NameNode的横向扩展问题。
为了帮助广大想要进入大数据领域的读者全面、系统地学习Hadoop,笔者结合自己多年的大数据项目开发经验编写了本书。本书基于Hadoop 3.2.2版写作,详解Hadoop海量数据处理技术的基本理论知识,并结合多个典型示例和两个项目实战案例带领读者实践,帮助读者更加全面、深入地理解Hadoop的运行原理和工作机制,从而能够在较短的时间里掌握Hadoop。
本书特色
* 内容全面:全面涵盖Hadoop的基础知识及其分布式文件系统(HDFS),以及MapReduce分布式编程框架和YARN资源调度器等内容,帮助读者全面掌握Hadoop海量数据处理的核心技术。
* 讲解深入:不仅系统地剖析Hadoop海量数据处理技术原理,还从代码层面深入地分析Hadoop系统的实现过程,并分析HDFS和MapReduce的每一步操作,帮助读者洞悉其工作机制与运行原理。
* 实用性强:讲解理论知识时穿插100多个典型示例,帮助读者深入理解Hadoop海量数据处理技术的精髓。另外,通过Hadoop高可用集群搭建和统计TopN经典项目案例两个项目,帮助读者上手实践,从而提高实际项目开发水平。
* 适用面广:无论是Hadoop初学者,还是开发人员、数据分析人员、大数据工程师和数据科学家等相关从业人员,都可以从本书中获得需要的知识和技能。
* 前瞻性强:基于Hadoop 3.2.2版写作,内容新颖,技术前瞻,不但介绍纠删码和NameNode Federation联邦机制等Hadoop 3.x的新特性,而且对比Hadoop不同版本之间的差异。
本书内容
第1篇 Hadoop基础知识
第1章主要介绍大数据的基本概念、特点、应用场景和生态体系等。
第2章简要介绍Hadoop的基本概念、发展历史和主流发行版本,同时分析Hadoop的优势及其不同版本之间的区别。
第3章从零开始搭建Hadoop开发环境,并介绍如何配置Hadoop分布式系统的3种运行模式。
第2篇 Hadoop分布式存储技术
第4章主要介绍Hadoop分布式文件系统(HDFS)的定义、产生背景、优缺点及其组成架构。
第5章主要从Shell命令操作和API调用操作两个方面讲解HDFS的基本使用方法。
第6章深入剖析HDFS的数据读写原理和工作机制,包括HDFS的写数据流程、HDFS的读数据流程、NameNode与Secondary NameNode的工作机制、DataNode的工作机制等。
第7章主要介绍Hadoop 3.x的新特性,如纠删码技术、HDFS集群间的数据复制、海量小文件的存储、HDFS的配置、HDFS快照管理等。
第3篇 MapReduce分布式编程框架
第8章主要介绍MapReduce的定义、优缺点及其核心编程思想,并对官方的WordCount源码进行简单的解析。
第9章主要介绍MapReduce开发的基础知识,包括Hadoop序列化、数据序列化类型和MapReduce的编码规范等。
第10章深度剖析MapReduce的运行原理,涵盖InputFormat数据输入、MapReduce工作流程、Shuffle的工作机制、MapTask的工作机制、ReduceTask的工作机制、OutputFormat数据输出类详解和Join的多种应用等。
第11章主要介绍MapReduce的数据压缩工作机制、几种数据压缩方式和压缩参数的配置,并详解3个数据压缩实战案例。
第12章主要介绍YARN资源调度器的基本架构和工作机制、MapReduce作业提交全过程、资源调度器的分类和任务的推测执行等相关内容。
第13章主要介绍Hadoop企业级优化的相关知识,包括HDFS优化和MapReduce优化。
第4篇 项目实战
第14章详细介绍如何搭建一个Hadoop高可用集群,并保证该集群能够7×24小时持续工作。
第15章详细介绍如何构建经典的统计TopN案例,并通过MapReduce编程框架实现。
读者对象
* 大数据初学者;
* Hadoop入门与进阶人员;
* 想要提升海量数据处理性能的大数据从业人员;
* 大数据工程师、数据分析工程师和数据科学家;
* 需要作为大数据技术手册的人员;
* 对大数据感兴趣的技术人员;
* 高等院校相关专业的学生;
* 大数据培训班的学员。
配套资源获取
本书提供的源代码和配套教学PPT有两种获取方式:一是关注微信公众号“方大卓越”,回复数字“27”获取下载链接;二是在清华大学出版社网站(www.tup.com.cn)上搜索本书,然后在本书页面上找到“资源下载”栏目,单击“网络资源”或“课件下载”按钮进行下载。
售后支持
由于笔者水平所限,书中存在疏漏与不足在所难免,恳请广大读者批评与指正。读者在阅读本书的过程中若有疑问,可发送电子邮件到bookservice2008@163.com获取帮助。
致谢
在过去的10多年中,Hadoop得到了人们广泛的关注,并取得了快速的发展,同时也经历了多个版本的更新迭代,诞生了三大发行版本,包括Apache、Cloudera和Hortonworks。这都得益于广大厂商和独立开发者的努力付出。在此首先感谢为Hadoop系统贡献源码的软件工作者!
Hadoop的大规模应用促进了整个大数据生态圈的构建。该生态圈为很多中小企业和初创团队提供了一整套大数据解决方案。在此感谢为大数据生态圈构建而付出辛勤劳动的工作者!
还要感谢清华大学出版社的相关工作人员!没有他们的努力,本书不会顺利出版。
最后感谢我的家人、朋友和同事们!本书在编写的过程中得到了他们的大力支持。
许政
2024年4月
Hadoop海量数据处理:技术原理与项目实践
前言
·II·
·III·
第1章 大数据概述
自21世纪以来,随着计算机技术的快速发展和不断创新,整个世界每时每刻都会产生海量的数据,并且越来越多。特别是移动终端和物联网设备的日益增多和普及,机器数据、传感器数据、用户行为数据和日志数据充斥在整个通信链条中。
最初,人们并没有特别重视这些数据资源,甚至还有人认为这些数据没有太大价值并且浪费存储资源,因此没有对这些数据资源进行存储。随着各种数据挖掘算法的产生和大量实践案例证明,一些企业对数据资产的潜在价值越来越重视。然而,单台服务器已经无法满足数据存储的需求,并且计算能力也是一块短板。
Hadoop的诞生标志着企业可以利用多台廉价的计算机组成集群,对这些海量的数据资源进行分布式存储和并行计算,不仅能够满足企业存储海量数据的需求,并且能够极大地提升并行处理数据的速度。
1.1 大数据简介
大数据是指无法在一定时间内用常规软件工具进行汇聚、治理和分析的数据集合,需要通过新的处理模式,使数据赋能,成为具有更强的决策力和更大潜在价值的海量、多源、异构的数据资产。数据就是资源,如何高效、准确、快速地存储和利用这些资源成为当今热烈讨论的话题。大数据的到来,标志着人类将进入以数据为核心的时代,从海量的数据资源中发现并挖掘有价值的数据。
同时,大数据也完全颠覆了传统的思维方式。传统的科学研究无法存储海量的数据,一般采用抽样的方式进行分析,而大数据可以帮助人们借助分布式存储和计算手段进行全样分析,使研究结果更加准确。大数据时代不但强调分析结果的准确,而且要求数据分析效率高,因为数据往往在它产生的1s内就具有了商业价值。
1.2 大数据的特点
人们对于大数据的第一印象就是数据量大,其实这仅仅是大数据的一个特点。业界普遍认为大数据有4个特点,可以用4个以V开头的英文单词概括,那就是Volume、Velocity、Variety和Value,如图1.1所示。
大数据的第一个特点是大量化(Volume)。根据国际数据公司IDC的2017年调查报告显示,人类近10年产生的数据量远超于之前产生的全部数据量,并且以每年一倍的速度增长。到2025年,人类产生的数据量将超过160ZB,人们的世界将会被海量的数据所淹没。在海量的数据面前,存储数据的容量决定了数据资产的多少。大数据的第一个大量化的特点也是经常被人们谈论的。
图1.1 大数据的“4V”特点
大数据的第二个特点是快速化(Velocity)。大数据时代有一个非常著名的“1s定律”,也就是数据在它产生的1s内就已具有商业价值。这就要求企业必须在这1s内对数据进行快速处理和分析,从中提取出对企业有价值的数据。
例如淘宝和京东等商业网站,用户从登录、浏览到支付的过程都在不停地产生点击流数据,网站的推荐系统可以根据用户行为数据为用户推荐他可能会购买的商品,从而增加销售量。如果数据处理速度慢,不能及时为用户推荐相关的商品,那么就无法带来商业价值。这就是大数据的第二个特点——快速化。
大数据的第三个特点是多样化(Variety)。在大数据时代,人们要处理的数据来源多样、种类繁多并且结构不同。例如,存储在MySQL和Oracle等关系型数据库中的结构化数据,以文本、视频、音频和图片为载体的非结构化数据,以及实时产生的网页点击流数据和物联网传感器数据等,都表现出了大数据的多样化特点。
大数据的第四个特点是价值密度低(Value)。价值密度的高低与数据总量的大小成反比,数据的体量大必然会导致数据价值的密度低。如何利用数据挖掘算法,快速对海量数据进行处理,提取出有价值的数据是目前大数据时代亟待解决的难题。
1.3 大数据的发展前景
2010年前后,大数据作为人类第三次信息化浪潮中一项非常核心的技术,得到了广泛的关注,同时也迎来了它的飞速发展。大数据依托云计算提供的存储资源、计算资源和网络资源,打造出具有分布式存储和并行计算能力的大数据集群,可以汇聚、存储和处理物联网设备实时产生的机器数据,助力智慧城市。
2012年,党的“十八大”提出“实施国家大数据战略”。2015年,国务院印发了《促进大数据发展行动纲要》,大数据技术和应用处于创新突破期,国内市场需求处于爆发期,我国大数据产业面临重要的发展机遇。
2017年,党的“十九大”提出大力发展互联网、大数据和人工智能,并实现与实体经济的深度融合。
2019年,中国信息通信研究院发表了《大数据白皮书》并提出大数据正在向着全球化方向蓬勃发展,大数据相关应用不断创新,大数据技术产业实现了新的突破。
目前,我国在大数据领域的人才仅有50万,难以满足市场需求,未来5年,在大数据领域的人才缺口将会高达150~200万。
由此可以看出,大数据发展已经成为国家战略。这表明大数据拥有一个良好的发展前景,大数据也会为人类社会的发展起到重要的作用。
1.4 大数据技术生态体系
目前,大数据时代已经进入一个飞速发展的阶段,许多大数据相关实践案例也证明了大数据的作用和影响力。人类在大数据领域取得的这些成就都要依托于健全的大数据技术生态体系。纵观整个大数据技术生态体系,绝大多数的大数据组件分为5个类别:数据采集与传输类、数据存储与管理类、资源管理类、数据计算类和任务调度类,如图1.2所示。
图1.2 大数据技术生态体系
1.4.1 数据采集与传输类
数据采集与传输类的大数据组件主要位于数据传输层,用于引接海量、多源和异构数据,并将数据传输给数据存储层的HDFS(Hadoop Distributed File System,分布式文件系统)或者MPP数据库,主要包括Sqoop、Flume和Kafka等组件。
Sqoop是一款开源的工具,主要用于在Hive与传统的数据库MySQL、Oracle等之间进行数据的传递。可以将一个关系数据库中的数据引接到Hadoop的HDFS中,也可以将HDFS的数据传输到关系数据库中。
Flume是Cloudera公司开发的一款进行日志采集、汇聚和传输的大数据组件。Flume具有高可用性、高可靠性和分布式等特性。Flume基于流式架构,灵活简单,能够实时读取服务器的本地磁盘数据和网络端口数据,并写入HDFS。
Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域,具有高吞吐量、高可靠性、高容错性、高扩展性、高并发和低延迟的特点。Kafka主要适用于日志采集、消息系统和流式处理等应用场景。
1.4.2 数据存储与管理类
数据存储与管理类的大数据组件主要位于数据存储层,用于存储海量、多源和异构数据,为数据计算层提供数据支撑。数据存储与管理类组件主要包括HDFS、HBase和Kafka等。
HDFS是一个分布式文件系统,主要用于存储海量、多源和异构文件,具有高容错性、大规模和分布式的特点。HDFS适用于一次写入、多次读出的场景,并且不支持文件的修改,非常适合进行海量数据的分析。
HBase是一种分布式、可扩展,支持海量数据存储的NoSQL数据库,具有海量列式存储、高扩展性、高并发性和稀疏性特点。逻辑上,HBase的数据模型同关系数据库类似,数据存储在一张表中,有行有列。但是HBase的底层物理存储结构是K-V键值对形式,更像是一个多维的map。HBase底层利用HDFS作为高可靠的存储支持。
Kafka是一个分布式的基于发布/订阅模式的消息队列,它不仅可以用于传输海量消息,同时还可以用于缓存这些消息。
1.4.3 资源管理类
资源管理类的大数据组件主要位于资源管理层,用于管理、分配和调度计算资源,为数据计算层提供各种计算资源,主要包括YARN等组件。在Hadoop 2.x版本中,Hadoop框架将MapReduce进行了拆分,独立出了一个资源调度模块YARN,大大降低了系统间的耦合性。Hadoop 3.x版本继续沿用了Hadoop 2.x版本的架构体系,但是新增了纠删码等一些新特性。YARN是一个资源调度器,辅助MapReduce分布式程序,并为其提供计算资源。
1.4.4 数据计算类
数据计算类的大数据组件主要位于数据计算层,用于并行执行离线批处理任务和实时计算任务,为整个大数据平台提供分布式计算能力。数据计算类的大数据组件主要包括MapReduce和Spark两大计算框架。Hive、Mahout等组件是基于MapReduce计算框架的,Spark Mllib、Spark R、Spark SQL和Spark Streaming等组件是基于Spark计算框架的。
Hive是由Facebook开源的用于解决海量结构化日志的数据统计工具,其操作接口采用类SQL语法,提高了开发的速度,并且避免了烦琐的MapReduce程序,降低了开发人员的学习成本。Hive是基于Hadoop开发的一款构建数据仓库的大数据组件,可以将存储在HDFS中的结构化文件转换成一个数据表,并提供一些操作命令,使用户能够方便、灵活地操纵数据仓库。
Mahout是Apache的一个开源项目,提供了大量的人工智能领域的算法库,能够帮助算法工程师更加快速地构建人工智能算法程序。Mahout实现了常见的机器学习算法和多种深度学习算法,包括聚类算法、回归算法、分类算法、关联分析和神经网络等。Mahout提供了非常简单的API接口并实现了并行化,可以帮助开发人员降低学习成本,提高运算效率。
Spark Mllib是Spark提供的可扩展的机器学习库,集成了大量机器学习算法,如聚类、分类、回归、协调过滤、降维和神经网络等。
1.4.5 任务调度类
任务调度类的大数据组件主要位于任务调度层,用于定时执行离线批处理任务和实时计算任务,为整个大数据平台提供定时执行任务的功能。任务调度类大数据组件主要包括Oozie和Azkaban两大任务调度器。
Oozie是一个基于工作流引擎的开源框架,由Cloudera公司贡献给Apache,提供对Hadoop MapReduce和Pig Jobs的任务调度与协调。Oozie需要部署到Java Servlet容器中运行,可以帮助用户定时调度作业,多个作业可以遵循业务逻辑串行化调度执行。
Azkaban也是一个批量处理工作流的任务调度器,可以指定一个工作流内所有作业的运行顺序。Azkaban通过K-V键值对存储处理工作流之间的关系,并为用户开发了作业调度管理界面,帮助用户更加便捷地管理工作流。
1.5 大数据部门的组织架构
大中型企业的大数据部门的组织架构如图1.3所示,主要包括大数据平台组,数据治理组、数据分析组和可视化组。
图1.3 大数据部门的组织架构
大数据平台组主要完成三项工作:其一,负责Hadoop、Spark、Flume、Kafka和HBase等框架的环境搭建;其二,负责整个大数据集群的状态和性能监控;其三,负责整个大数据集群的性能调优。
数据治理组的工作主要包括两部分:一部分是由ETL工程师对数据进行抽取、转换和清洗;另一部分是由Hive工程师对数据进行分析,构建数据仓库和数据集市等。
数据分析组的工作主要包括两部分:一部分是由算法工程师对数据进行分析,设计大数据算法,并进行算法评估和优化;另一部分是由推荐系统工程师对收集到的用户行为数据进行分析,构建用户画像,并利用推荐算法为用户推荐相关产品。
可视化组主要负责报表开发和数据可视化展示等工作。
1.6 小 结
本章介绍了大数据的基本概念,大数据的“4V”特点,大数据的发展前景,以及大数据技术的生态体系。最后介绍了目前大中型公司的大数据部门的组织结构,以及不同成员的分工,让读者对自己的职业方向和工作内容有一个更加清晰的认识。
|
|