Python PySpark 大数据的瑞士军刀

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

本篇文章主要涉及的知识点有:

  • 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),并将其存储在不同的数据节点上。同时为了保证可靠性,还会复制块数据到不同数据节点上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值