一文带你简单了解Hadoop

Hadoop是一个由Apache基金会开发与托管的分布式数据存储与计算的基础平台。用户可以在完全不了解分布式技术底层细节的情况下开发分布式程序,利用集群的能力来实现稳定存储快速运算

1.大数据背景以及特征

什么是大数据

著名数据学家Gartner认为,“大数据”是需要新处理模式才能具有更强的决策力,洞察力和流程优化能力的海量、高增长率及多样化的信息资产。因此,大数据一词代表了两层含义:一是海量的信息资产,也就是数据本身;二是新处理模式,也就是“大数据”处理技术。


大数据的特征

IBM提出了大数据的五个特征:Volume(大量)Velocity(高速)Variety(多样)Value(低价值密度)Veracity(真实性)

  • Volume(大量):数据采集规模、存储规模和计算规模都非常大。一般以TB获取,PB(1024TB)做计量单位。
  • Velocity(高速):数据产生的速度快,处理速度快,时效性高。
  • Variety(多样):种类与来源多样化。具体体现在结构化、半结构化与非结构化,如日志、音视频、图片、地理信息等。针对不同类型的数据,处理技术也不尽相同。
  • Value(低价值密度):信息的感知无处不在,但是在海量信息面前,真正具备价值的在少数,如何通过数据挖掘手段在垃圾中发现黄金,是大数据时代需要处理的问题。
  • Veracity(真实性):《大数据时代》中指出,大数据不用随机分析法(抽样调查)这样的捷径,而是对全量数据进行分析处理。全量数据反映了事物的客观性与真实性。

2.大数据处理常见问题

大数据处理面临的重要问题:算力存储

  1. 算力方面,传统软件部署在某一台计算机上,那么就由这台计算机为该软件提供计算资源,即便采取面向服务的架构甚至是微服务架构做分布式部署,都避免不了一个计算任务只能在一台计算机上运行的事实。同时,传统软件是将数据从网络上集中到当前程序巡行的计算机上进行处理,这里就涉及数据的网络传输时延,传统软件“数据向计算靠拢”的模式,限制了算力。
    .
  2. 存储方面,一般情况下,众多企业为了降低成本,都是将数据集中管理。随着事件的推移,软件系统产生的数据在单台计算机上无法存放时,就要开始做分布式存储。那么问题随之而来,要用数据的时候,软件如何寻址;大规模计算机集群,其中一台计算机出现故障,数据如何容错

3.Hadoop入门

Hadoop(2.x以上)主要提供HDFS来实现数据存储的功能,还提供了YARN来实现计算资源调度功能,采用MapReduce框架来做分布式运算
GFS是一个可扩展的分布式文件系统,用于大型的、分布式的、对大量数据进行访问的应用。它运行在廉价的普通硬件上,并提供容错能力。HDFS最早是参考GFFS实现的。HDFS被设计成适合运行在通用硬件上的分布式文件系统,这是一个高度容错的系统,能提供高吞吐量的数据访问,非常适用于大规模的数据集,主要用来解决数据存储与管理问题。MapReduce是面向大数据并行处理的分布式计算框架,集群资源的调度和计算任务的协调有YARN来完成。MapReduce运行在集群之上,从而解决算力的问题。


4.Hadoop主要模块

Hadoop Comment模块

Hadoop Comment模块是一个为其他模块提供常用工具的基础模块,比如提供网络通信,权限认证、文件系统抽象列、日志组件等工具。


Hadoop Distributed File System模块

Hadoop Distributed File System简称HDFS,其含义是Hadoop分布式文件系统。
HDFS适用于大数据场景中的数据存储,因为他提供了高可靠性高扩展性高吞吐率的数据存储与访问服务。高可靠性是通过自身的副本机制实现的。高扩展性是通过往集群中添加机器来实现线性扩展的。高吞吐率是指在读文件的时候,HDFS会将离提交任务结点最近位置的目标数据反馈给应用。
HDFS的基本原理是将数据文件按指定大小(Hadoop2.x以上默认为128MB)进行分块,并将数据以副本的方式存储到集群中的多台计算机上。及时某个节点发生故障,导致数据丢失,在其他节点也还有相应的副本。所以在读文件的时候,仍然能够获得完整的反馈。HDFS切割数据存储冗余副本的方式,开发者是感受不到的。在使用的时候,开发者仅知道自己上传了一个文件到HDFS。
HDFS由3个守护进程组成:Namenode、Secondary、Namenode和Datanode。Datanode负责存放数据文件的具体内容,Namenode负责记录这些文件的元数据信息。Datanode上的数据文件越多,Namenode存放的元数据信息就越多,这将导致Namenode加载速度变慢,因此HDFS不适合存放大量小文件,而适合存放少量的大文件。


Hadoop YARN模块

YARN的全称是Yet Another Resource Negotiator(另一种资源协调器)。YARN是有Hadoop 1.x版本中JobTracker的资源管理作业调度功能分离出来的,目的是解决在Hadoop 1.x中只能运行MapReduce程序的问题。
随着Hadoop的发展,YARN现在已经成为一个通用的资源调度框架,为Hadoop在集群资源的统一管理数据共享带来很大的优势。在YARN上还可以运行不同类型的作业,如目前非常流行的Spark和Tez等。
YARN由两个守护进程组成:ResourceManager和NodeManager。ResourceManager主要负责资源的调度监控任务运行状态集群健康状态。NodeManager主要负责任务的具体执行监控任务的资源使用情况,并定期向ResourceManager汇报当前状态


Hadoop MapReduce模块

MapReduce是一个并行计算框架,同时也是一个编程模型,主要用于大规模数据集的逻辑处理。MapReduce的名称也代表的它的两项操作:Map(映射)和Reduce(规约)。它的好处在于,即便没有开发分布式应用经验的程序员,也能通过MapReduce的相关接口快速开发分布式程序,不必关注并行计算中的底层细节。
一个MapReduce作业,默认情况下会把输入的数据切分成多个独立的数据块,每读取一个块就会产生一个Map任务,读取和执行Map任务是并行的。Map输出键值对(key/value)形式的数据,在输出过程会将键进行hash,然后进行排序,并按键值分区存放,同一个键值存放在一个分区内。一个分区一般和HDFS文件块大小一致,因此一个分区正常情况下不会跨越不同机器,这就避免了Map的输出结果在不同机器节点间移动。
在执行MapReduce任务的时候,系统会根据目标数据的位置,将MapReduce代码分发到对应的节点上,或者最近的节点上,从而避免或尽量减少数据在网络传输上的消耗。应为移动计算的成本往往比移动数据的成本低,这也就是“计算向数据靠拢”。
Map任务执行完毕后,通过设置Combiner提前对Map输出进行归并,从而减少Map中间结果输出量。Map或Combiner执行完毕后,Reduce会将不同的任务产生的中间结果进行统一处理,并进行最后的运算,最终输出用户想要的结果。
一般情况下,Map输出的中间结果会直接落在磁盘上,从而降低HDFS对文件的管理负担。Reduce任务执行完毕后会删除中间数据,然后将输出结果存放到HDFS上。

扫描二维码关注公众号,回复: 12334674 查看本文章

Hadoop Ozone模块

在Hadoop 3.x之前,用户只能使用HDFS存储,但HDFS的设计原则不适合存放小文件,而Ozone正好就解决了这个问题。Ozone依托HDDS插件,采用键值(key-object)的模式实现对小文件的存储高速读取

猜你喜欢

转载自blog.csdn.net/qq_43965708/article/details/112604531