简单理解Hadoop(Hadoop是什么、如何工作)
简单理解Hadoop(Hadoop是什么、如何工作)
Hadoop是一个开源的分布式计算框架,主要用于存储和处理大规模数据集。它由Apache基金会开发,是大数据处理领域的重要工具之一。本文将从Hadoop的基本架构、核心组件以及工作原理等方面,帮助读者快速了解这一技术。
Hadoop的基本架构
Hadoop的主要任务部署分为三个部分:Client机器、主节点和从节点。主节点主要负责Hadoop两个关键功能模块HDFS(分布式文件系统)和MapReduce(分布式计算框架)的监督。当Job Tracker使用MapReduce进行监控和调度数据的并行处理时,名称节点则负责HDFS的监视和调度。从节点负责了机器运行的绝大部分,担当所有数据储存和指令计算的苦差。每个从节点既扮演者数据节点的角色又冲当与他们主节点通信的守护进程。守护进程隶属于Job Tracker,数据节点在归属于名称节点。
Hadoop的核心组件
Hadoop的核心就是HDFS和MapReduce,而两者只是理论基础,不是具体可使用的高级应用。
HDFS的设计特点
- 大数据文件:非常适合上T级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了。
- 文件分块存储:HDFS会将一个完整的大文件平均分块存储到不同计算器上,它的意义在于读取文件时可以同时从多个主机取不同区块的文件,多主机读取比单主机读取效率要高得多得都。
- 流式数据访问:一次写入多次读写,这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件末添加内容。
- 廉价硬件:HDFS可以应用在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
- 硬件故障:HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以迅速找另一块副本取文件。
HDFS的关键元素
- Block:将一个文件进行分块,通常是64M。
- NameNode:保存整个文件系统的目录信息、文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果出错,NameNode就失效了。在 Hadoop2.* 开始支持 activity-standy 模式----如果主 NameNode 失效,启动备用主机运行 NameNode。
- DataNode:分布在廉价的计算机上,用于存储Block块文件。
MapReduce的工作原理
MapReduce是一套从海量源数据提取分析元素最后返回结果集的编程模型。其基本原理是将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。
以数图书馆中的所有书为例:你数1号书架,我数2号书架。这就是“Map”。我们人越多,数书就更快。现在我们到一起,把所有人的统计数加在一起。这就是“Reduce”。
MapReduce的具体工作流程包括以下几个步骤:
- Map阶段:将输入数据分割成多个小块,每个小块由一个Map任务处理。Map任务将数据转换成键值对的形式。
- Shuffle阶段:将Map任务产生的中间结果按照key进行分区和排序,然后发送给Reduce任务。
- Reduce阶段:对Shuffle阶段产生的中间结果进行汇总和计算,最终生成最终的输出结果。
Hadoop的集群架构
Hadoop的集群主要由以下组件组成:
- NameNode:记录了文件是如何被拆分成block以及这些block都存储到了那些DateNode节点。
- Secondary NameNode:帮助 NameNode 收集文件系统运行的状态信息。
- DataNode:存储被拆分的blocks。
- JobTracker:当有任务提交到 Hadoop 集群的时候负责 Job 的运行,负责调度多个 TaskTracker。
- TaskTracker:负责某一个 map 或者 reduce 任务。
Hadoop的应用场景
Hadoop典型应用有:搜索、日志处理、推荐系统、数据分析、视频图像分析、数据保存等。
通过本文的介绍,相信读者对Hadoop的基本概念和工作原理有了初步的了解。Hadoop作为大数据处理的重要工具,其分布式存储和计算的能力,使得它在处理大规模数据集时具有独特的优势。