Hadoop学习笔记(一)

105 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第24天,点击查看活动详情

前言

大数据技术已经应用在我们生活的方方面面,例如:猜你喜欢、个性化推荐、各种搜索引擎等。

通常大数据的单位至少都是以TB(1TB=1024GB)作为基本单位的,同时大数据还具有5种特点:

  1. Volume:巨量的数据量,例如:采集、存储、计算等
  2. Variety:非结构化的数据,例如:文本/图片/视频等
  3. Value:单条数据通常是价值比较低,即价值密度不高
  4. Velocity:数据增长速度和处理速度很快,时效比较高。
  5. Veracity:数据的真实性、准确性

介绍

Hadoop就是大数据的一种实现解决方案,主要解决海量数据的存储和计算的问题,它是一个基于Java编码的Apache开源框架。

借鉴于Google的三篇大数据论文,构建了三个核心部分,HDFSMapReduceHBase

这里需要注意的是Hadoop可以指本身框架,也可以表示一个Hadoop生态圈,即HIVE、Spark、HBASE等其他大数据项目。

优势

  • 高可靠性:Hadoop底层维护多个数据副本,保证数据不会轻易丢失,即使某个节点出现故障,其他节点也有备份。
  • 高扩展性:一个任务会在集群中进行分配,可以方便的进行扩展节点。
  • 高效性:基于MapReduce模块,多个节点可以并行同时工作,加快任务处理效率。
  • 高容错性:能够自动将失败的任务进行分配

结构

常见的Hadoop版本是1.X和2.X,这两个版本的结构略有不同。2.X的版本添加了Yarn来负责资源的调度。

  • 1.X版本中MapReduce同时负责业务处理和资源调度、偶尔性大。
  • 2.X版本中新增Yarn模块来负责资源调度、减轻了MapDeduce的职责。

Hadoop的架构

HDFS

HDFS模块负责数据的存储,它是高度容错的,将文件已冗余的形式存储到不同的节点。HDFS中有几个重要的概念,分别是:

  • Block:它是HDFS的基本读写单元,一个文件会被切割为多个Block进行存储(通常是64MB),同时这些块会被复制到多个DataNode中进行存储。
  • NameNode:Master主节点,负责管理文件系统的命名空间、集群配置信息、存储块的复制等。
  • DataNode:Slave从节点,负责存储文件,将Block存储到本地文件系统中,同时保存Block的元信息,并周期的将所保存的Block发送给NameNode

MapReduce

MapReduce是Hadoop的一个重要模块,它能够在利用多个节点进行并行处理,易于扩展计算节点,则是因为它将计算分为两个步骤:

  1. Map:将一组数据转换为另一组数据,将各个元素分解为键值对。
  2. Reduce:将Map计算的输出结果作为输入,并将这些键值对进行汇总操作。

由两个后台程序JobTracker和TaskTracker进行任务的调度和执行。

  • JobTracker:负责调度并管理TaskTracker,它可以运行与集群中的任意一个节点。
  • TaskTracker:负责执行任务,需要运行于DataNode节点上。

参考资料