本篇文章主要涉及的知识点有:
- Hadoop及其生态系统:了解Hadoop的由来以及Hadoop生态系统。
- Spark的核心概念:掌握Spark的基本概念和架构。
- Spark基本操作:了解Spark的几种常见操作。
- SQL in Spark概述:了解Spark相关数据统计可以用SQL来操作。
- Spark与机器学习:了解Spark MLlib库种的几种机器学习算法。
Part 1 Hadoop与生态系统
Hadoop不是一个简单的工具,它有自己的生态体系。
Part 1.1 Hadoop概述
Hadoop是一个开源的大数据软件框架,主要用于分布式数据存储和大数据集处理。Hadoop在大数据领域使用广泛,其中一个重要的原因是开源,这就意味着使用Hadoop的成本很低,软件本身是免费的。另一方面,还可以研究其内部的实现原理,并根据自身的业务需求,进行代码层面的定制。
Hadoop可以在具有数千个节点的分布式系统上稳定运行。它的分布式文件系统不但提供了节点间进行数据快速传输的能力,还允许系统在个别节点出现故障时,保证整个系统可以继续运行。
注意:一般来说,在非高可用架构下,如果Hadoop集群种的NameNode节点出现故障,那么整个Hadoop系统将无法提供服务。
一般来说,Hadoop的定义有侠义和广义之分。从狭义上来说,Hadoop就是单独指代Hadoop这个软件。而从广义上来说,Hadoop指代大数据的一个生态圈,包括很多其他的大数据软件,比如HBase、Hive、Spark、Sqoop和Flumn等。
我们一般所说的Hadoop,指的是Hadoop这个软件,即狭义的概念。当提到Hadoop生态系统或者生态圈的时候,往往指的是广义的Hadoop概念。
注意:目前而言,Hadoop主要有三个发行版本:Apache Hadoop、Cloudera版本(简称CDH)和Hortonworks版本(简称HDP)。

Hadoop1.x主要由HDFS(Hadoop Distributed File System)和MapReduce两个组件组成,其中MapReduce组件除了负责数据处理外,还负责集群的资源管理。而Hadoop2.x由HDFS、MapReduce和YARN三个组件组成,MapReduce只负责数据处理,且运行在YARN之上,YARN负责集群资源调度。这样单独分离出来的YARN组件还可以作为其他数据处理框架的集群资源管理。
Hadoop2.x的主要组件说明如下:
- HDFS:分布式文件系统,提供对应用程序数据的高吞吐量、高伸缩性、高容错性的访问。它是Hadoop体系中数据存储管理的基础,也是一个高度容错的系统,能检测和应对硬件故障,可在低配置的硬件上运行。
- YARN:用于任务调度和集群资源管理
- MapReduce:基于YARN的大型数据集并行处理系统,是一种分布式计算模型,用于进行大数据量的分布式计算。
相对于之前的主要发布版本Hadoop2.x,Apache Hadoop3.x整合许多重要的增强功能。Hadoop3.x是一个可用版本,提供了稳定性和高质量的API,可以用于实际的产品开发。
- 最低Java版本变为JDK1.8:所有Hadoop的jar都是基于JDK1.8进行编译的。
- HDFS支持纠删码(erasure coding)是一种比副本存储更节省存储空间的数据持久化存储方法。
- YARN时间线服务增强:提高时间线服务的可扩展性、可靠性。
- 重写Shell脚本:修补了许多长期存在的bug,并增加了一些新的特性。
- 覆盖客户端的jar:将Hadoop的依赖隔离在单一jar包中,从而达到避免依赖渗透到应用程序的类路径中的问题,避免包冲突。
- MapReduce任务级本地优化:添加了映射输出收集器的本地化实现的支持、可以带来30%的性能提升。
- 支持2个以上的NameNode:通过多个NameNode来提供更高的容错性。
- 数据节点内置平衡器。
- YARN增强:YARN资源模型已经被一般化,可以支持用户自定义的可计算资源类型而不仅仅是CPU和内存。
前面对Hadoop进行了简要的介绍,再介绍学习Hadoop解决了大数据什么问题。
Part 1.1.1 大数据存储
首先,大数据要解决的问题是如何方便地存取海量的数据,而Hadoop的HDFS组件可以解决这个问题。HDFS以分布式方式存储数据,并将每个文件存储为块(block)。块是文件系统中最小的数据单元。
假设有一个512MB大小的文件需要存储,由于HDFS默认创建数据块大小是128MB,因此HDFS将文件数据分为4个块(512/128=4),并将其存储在不同的数据节点上。同时为了保证可靠性,还会复制块数据到不同数据节点上

本文深入探讨了Hadoop及其生态系统,包括HDFS、MapReduce和YARN,强调了其在大数据存储、可扩展性和数据处理方面的优势。此外,文章介绍了Spark作为快速通用的大数据处理引擎,其内存计算特性显著提升了处理速度。Spark与Hadoop的对比展示了它们在实现语言、数据计算方式、使用场景和实现原理上的差异。最后,概述了Spark的核心组件,如SparkCore、SparkSQL、SparkStreaming和SparkMLlib,以及它们在大数据分析中的作用。
最低0.47元/天 解锁文章
1460

被折叠的 条评论
为什么被折叠?



