大数据框架-Hadoop
1.什么是大数据
大数据是指由传统数据处理工具难以处理的规模极大、结构复杂或速度极快的数据集合。这些数据集合通常需要使用先进的计算和分析技术才能够处理和分析,因此大数据技术包括了大数据存储、大数据处理和大数据分析等方面的技术和工具。
大数据的特点包括以下几个方面:
- 规模大:数据集合通常包含数千亿、数万亿甚至更多的数据,远远超过传统数据处理工具的处理能力。
- 结构复杂:数据集合通常包含多种类型的数据,包括结构化、半结构化和非结构化数据,这些数据通常需要经过清洗和转换才能进行处理。
- 速度快:数据集合通常包含实时或准实时产生的数据,需要使用实时处理技术进行处理和分析。
- 价值高:数据集合通常包含有价值的信息,可以用于支持业务决策、优化运营和发现新的商业机会等。
大数据技术包括了分布式存储系统(如Hadoop、Spark等)、分布式计算框架、数据挖掘和机器学习算法、实时数据流处理技术等多个方面,是数据科学、人工智能等领域的重要支撑。
2.Hadoop基本概念
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统( Distributed File System),其中一个组件是HDFS(Hadoop Distributed File System)。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。
Hadoop 是一个开源的分布式计算框架,用于存储和处理大规模的结构化和非结构化数据。Hadoop 由两个主要组件组成:分布式文件系统 HDFS 和分布式计算框架 MapReduce。
HDFS 是一个分布式文件系统,可以将大规模数据集合分布式地存储在多个节点上。每个节点都可以存储数据的一部分,并提供数据备份和恢复机制,以保证数据的可靠性和可用性。HDFS 的主要优势在于可以容纳超大规模的数据,同时也具有高可靠性和高可扩展性。
MapReduce 是一种分布式计算框架,可以将大规模数据集合分布式地处理和分析。MapReduce 模型的核心思想是将大规模数据集合拆分成多个小的数据块,然后将这些小数据块分发到不同的计算节点上进行计算。这些计算节点将计算结果合并起来,形成最终的结果。MapReduce 模型的优势在于可以高效地处理大规模数据集合,并且具有高可靠性和高可扩展性。
除了 HDFS 和 MapReduce,Hadoop 还提供了一些其他的组件,如 YARN(资源调度和管理系统)、HBase(NoSQL 数据库)、Spark(分布式计算框架)等。这些组件共同构成了 Hadoop 生态系统,可以支持更加复杂和多样化的数据处理需求。
简单理解:
- HDFS-使用分布式文件系统存储数据
- MapReduce-类似于JAVA中Stream流处理
Hadoop是一个开源的分布式计算框架,用于处理大数据集。它的设计目标是能够在大量的计算机集群上运行,以处理海量数据。以下是一个类比来解释Hadoop的工作原理:
假设你需要清理你的房子,但你只有一把扫帚和一个垃圾桶,而你的房子很大,你一个人清理可能需要很长时间。但是如果你有很多朋友来帮忙,每个人都可以拿一把扫帚和垃圾桶,分别清理不同的区域,然后将垃圾桶中的垃圾倒入一个大垃圾桶中,那么清理的速度就会快很多。
你就是Hadoop的用户,你需要处理的是大量的数据。而你的朋友们就是Hadoop的集群,每个节点都可以处理数据的一部分。Hadoop会将数据分成若干份,然后分配给不同的节点处理。处理完成后,每个节点都会将它们的处理结果传回一个中心节点,中心节点将这些结果组合起来,形成最终的结果。
Hadoop的工作原理就像是你和你的朋友们清理房子一样,每个节点都可以独立地处理一部分数据,然后将结果合并起来形成最终结果。这种分布式处理方式使得Hadoop可以处理大量的数据,并且具有高可靠性和可扩展性。
3.Hadoop基本核心组件
简述
Hadoop 集群包含一个 NameNode(NameNode作为主服务器,管理文件系统的命名空间和客户端对文件的访问]操作) 和大量 DataNode(DataNode 通常以机架的形式组织,机架通过一个交换机将所有系统连接起来,使用DataNode集群管理、存储的数据)。
NameNode
单独机器上运行的软件,它负责管理文件系统名称空间和控制外部客户机的访问。
NameNode 在一个称为 FsImage 的文件中存储所有关于文件系统名称空间的信息。这个文件和一个包含所有事务的记录文件(这里是 EditLog)将存储在 NameNode 的本地文件系统上。FsImage 和 EditLog 文件也需要复制副本,以防文件损坏或 NameNode 系统丢失
在Hadoop分布式文件系统(HDFS)中,NameNode可以被看作是一个“大管家”,它管理整个HDFS的文件和数据块,负责分配和协调各个数据节点的存储任务。当客户端需要读写数据时,需要向NameNode查询相应数据块的位置信息,然后才能与对应的数据节点进行通信。因此,NameNode可以理解为一个控制中心,负责管理整个HDFS系统,确保数据的可靠性和高效性。可以将HDFS比作一个“大数据仓库”,存储着各种类型的数据,如日志、文本、图片、视频等等。这些数据被分成多个数据块并存储在不同的数据节点上,而NameNode则维护了每个数据块的位置信息以及对应的数据节点,它是HDFS的“头脑”和“心脏”。当客户端需要读写数据时,需要先向NameNode查询相应数据块的位置信息,然后才能与对应的数据节点进行通信。因此,NameNode的性能和可靠性对整个HDFS的运行效率和稳定性有着至关重要的作用。同时,为了保证数据的可靠性,NameNode还会自动触发数据块的复制过程,以保证数据不会因为数据节点的故障而丢失。
Secondary NameNode
Secondary NameNode是Hadoop中的一个辅助节点,它并不是NameNode的备用节点,而是用来帮助NameNode进行检查点的生成和管理。在Hadoop中,NameNode负责管理文件系统的元数据,包括文件名、目录结构、权限等信息,而这些信息存储在内存中,一旦NameNode发生故障,数据就会丢失。为了避免这种情况,Hadoop引入了Secondary NameNode,它定期从NameNode中获取元数据信息,并生成一个检查点,将元数据信息存储到磁盘上。当NameNode发生故障时,可以从这个检查点中恢复数据,避免数据的永久性丢失。需要注意的是,Secondary NameNode并不是NameNode的备用节点,它只是用来生成检查点的辅助节点。当NameNode发生故障时,需要使用其他的方式来恢复数据,例如使用NameNode的备份节点或者使用数据复制等技术来保证数据的可靠性。
可以将Secondary NameNode比喻成一个“数据备份助手”,它可以帮助Hadoop的NameNode定期备份元数据信息,防止NameNode故障导致数据的永久性丢失。就像我们平时使用电脑一样,我们会将重要的文件备份到其他存储介质中,以备不时之需。Secondary NameNode在Hadoop中的作用就类似于这个备份过程。
DataNode
在Hadoop分布式文件系统(HDFS)中,DataNode是指存储实际数据块的节点,也可以被称为数据节点。它们是HDFS中的工作节点,负责存储和管理文件系统中的实际数据。DataNode节点通常被安装在普通服务器上,它们通过网络与NameNode节点通信,并按照NameNode节点的指令进行数据的读写操作。DataNode节点上的存储空间被划分成多个数据块,每个数据块大小通常为64MB或128MB。当客户端向HDFS写入数据时,数据会被切分成多个数据块,并且每个数据块会存储在不同的DataNode节点上。同样地,当客户端需要读取数据时,需要向NameNode查询相应数据块的位置信息,然后才能与对应的DataNode节点进行通信获取数据。DataNode节点不仅负责数据的存储,还负责数据的复制和数据块的恢复。当DataNode节点失效时,NameNode会自动将该节点上的数据块进行复制,以保证数据的可靠性和可用性。同时,当DataNode节点上的某个数据块损坏或丢失时,HDFS还可以通过其它DataNode节点上的备份数据块进行恢复。
DataNode 就像是一家公司的库房,存储着公司的货物,而这些货物又被复制到了多个仓库中,以实现货物的备份和冗余。同时,每个库房都会定期向公司的总部汇报自己的存货情况和库存状态,当总部检测到某个库房出现问题时,会将该库房的货物转移到其他仓库中,确保货物不会丢失。就像 Hadoop 中的 DataNode 一样,它们都是存储数据的节点,负责数据的存储和备份,同时也定期向主节点汇报自己的状态信息,以确保数据的完整性和可用性。
YARN
Hadoop YARN(Yet Another Resource Negotiator)是Hadoop生态系统中的一种资源管理框架,用于管理Hadoop集群中的资源和作业调度。
- 资源管理:就像调度中心要负责分配工人和机器一样,YARN要负责分配Hadoop集群中的计算资源,包括内存、CPU等等,以保证每个任务都能够获得足够的资源来运行。
- 作业调度:就像调度中心要安排任务的执行顺序一样,YARN也要根据任务的优先级和依赖关系来安排任务的执行顺序,以确保整个工厂的生产效率和质量。
- 多计算框架支持:就像调度中心可以调度不同类型的任务一样,YARN也可以支持不同的计算框架,例如MapReduce、Spark、Flink等等,以满足不同的业务需求。
- 高可靠性:就像调度中心要处理机器故障和工人离职一样,YARN也要处理Hadoop集群中的节点故障和资源泄漏等问题,以确保整个工厂的生产效率和质量。
可以将Hadoop集群看作一个大型的工厂,这个工厂有很多的工人和机器,同时也有很多的任务需要完成。YARN就像是这个工厂的调度中心,它负责分配工人和机器,并安排任务的执行顺序,以保证整个工厂的生产效率和质量
MapReduce
Hadoop MapReduce是Hadoop框架中用于分布式处理大数据的一种编程模型和计算引擎。MapReduce的核心思想是将大数据集分成若干个小数据块,并分配给多个计算节点进行处理。每个节点都可以独立地处理数据块,然后将结果返回给中心节点,中心节点将这些结果组合起来形成最终结果。MapReduce的处理过程可以分为两个阶段:Map阶段和Reduce阶段。在Map阶段中,Hadoop会将输入数据集分割成若干个小数据块,然后分配给多个Map任务并行处理。每个Map任务会对自己分配到的数据块进行处理,生成若干个键值对,这些键值对会被传递给Reduce任务。在Reduce阶段中,Hadoop会将Map任务生成的键值对按照键进行排序,并将具有相同键的值聚合在一起。然后将这些聚合后的键值对分配给多个Reduce任务并行处理。每个Reduce任务会对自己分配到的键值对进行处理,并生成最终的输出结果。MapReduce模型的优点在于可以充分利用集群中的计算资源,将大数据集分割成若干个小数据块进行并行处理,提高处理速度。同时,MapReduce模型可以自动处理节点故障和数据丢失等问题,具有高可靠性和可扩展性。
MapReduce就像是一个工厂生产线,它可以处理非常大的数据集。这个生产线有两个工作阶段:Map阶段和Reduce阶段。
在Map阶段,生产线接收原材料(大数据集),然后将其分割成许多小块,每个小块被交给一个工人进行加工。这些工人会对每个小块进行处理,将原始数据转化成键值对,然后将这些键值对传递给下一个阶段(Reduce阶段)。
在Reduce阶段,生产线接收许多键值对,并将它们按照键进行分组和排序。然后,这些分组的键值对被交给一些工人进行最终的加工,生成最终的输出结果。
就像工厂生产线一样,MapReduce可以同时处理多个数据块,这样可以加快处理速度。而且,如果有工人出现故障,生产线可以自动重新分配任务,保证处理的顺利进行。
个人感觉类似于JAVA中Stream流处理,Map映射数据,Reduce处理逻辑业务数据。
Hive
Hive是一个基于Hadoop的数据仓库系统,它提供了一种类似于SQL的查询语言,称为HiveQL,可以使开发人员和数据分析师使用SQL语言来查询和分析存储在Hadoop分布式文件系统(HDFS)中的大数据。Hive将SQL语句转换为MapReduce作业,并通过Hadoop执行这些作业来处理和分析数据。
Hive还提供了数据规范化、数据集成和数据访问控制等高级功能,使得开发人员可以更轻松地在大数据平台上进行数据分析和数据挖掘。Hive还支持外部表和分区表,可以让用户更灵活地处理和管理数据。同时,Hive还可以与其他Hadoop生态系统组件,如HBase和Spark等进行集成。
更多大数据岗位实际使用Hive写SQL而不是MapReduce?
4.总结
大数据通过分布式文件系统来存储大量数据,同时利用分布式计算来高效地处理数据,并提供数据采集、预处理、分析和可视化等服务,