文章目录

  • hadoop基础知识
  • 初始hadoop
  • 关于MapReduce
  • Hadoop分布式文件系统
  • hdfs的设计
  • HDFS的数据块
  • namenode和datanode
  • 联邦HDFS
  • 关于YARN
  • Hadoop的IO操作
  • 关于MapReduce
  • Hadoop操作
  • Hadoop相关开源项目


hadoop基础知识

初始hadoop

Hadoop是用于数据存储和分析的分布式系统

MapReduce与关系型数据库的比较

MapReduce:一次写入,多次读取
关系型数据库:多次读/写

数据分为

  • 结构化数据
  • 具有既定格式的实体化数据,XML文件等
  • 半结构化数据
  • 电子表格,但是表格的数据格式不一定一样
  • 非结构化数据
  • 文本,图像

Hadoop适合处理半结构化数据和非结构化数据,因为Hadoop的核心假设之一就是可以进行高速的流读写操作

关于MapReduce

MapReduce是一种可用于数据处理的编程模型,MapReduce程序本质上是并行的,因此可以将大规模的数据分析任务分发给任何一个数据中心

我们可以使用Hadoop来分析数据,为了充分利用Hadoop提供的并行数据处理优势,我们需要将查询表示为MapReduce作业,完成某种本地端的小规模测试之后,就可以把MapReduce作业部署到集群上运行

MapReduce任务过程分为两个处理阶段:map阶段和reduce阶段

每阶段都以键-值对作为输出和输出

程序猿需要写两个函数:map函数和reduce函数

map函数的输出经由MapReduce框架处理后,最后发送到reduce函数

Java MapReduce 编程

Hadoop分布式文件系统

hdfs的设计

  • 流式数据访问
  • 大量的小文件
  • 由于namenode将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总数受限于namenode的内存总量
  • HDFS中的文件写入只支持单个写入,而且写操作总是以“只添加”方式在文件末尾写数据

HDFS的数据块

好处

  • 文件的所有块不需要存储在同一磁盘上,文件可以比磁盘大
  • 以块为存储单位,大大简化了存储子系统的设计

namenode和datanode

namenode为管理节点,datanode为工作节点,namenode管理文件系统的命名空间

客户端client代表用户通过与namenode和datanode交互来访问整个文件系统

没有namenode,文件系统将无法使用,我们有两种机制来处理这种问题

  • 备份那些组成文件系统元数据持久状态的文件
  • 运行一个辅助namenode

联邦HDFS

联邦HDFS允许系统通过添加namenode实现拓展,使得拥有大量文件的超大集群可以存在

在联邦环境下,每个namenode维护一个命名空间卷(命名空间的元数据+数据块池),数据块池包含该命名空间下文件的所有数据块

命名空间卷之间相互独立,所以集群中的datanode需要在所有namenode上登记

关于YARN

Hadoop的IO操作

关于MapReduce

Hadoop操作

Hadoop相关开源项目

摆烂了,有亿点不想更新了