CrudboyIsMe
- 狭义上讲,Hadoop是一个Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架。
- 广义上说,Hadoop是指整个Hadoop家族,包括Hadoop, Hive, Pig, HBase, Sqoop, Mahout, Zookeeper, Avro, Ambari, Chukwa,YARN, Hcatalog, Oozie, Cassandra, Hama, Whirr, Flume, Bigtop, Crunch, Hue等等。这些家族成员基本都是基于Hadoop的分布式而衍生出的成员。
介绍Hadoop之前,我建议你们安装一个…
Hadoop简介
Hadoop可运行于一般的商用服务器上,具有高容错、高可靠性、高扩展性等特点。特别适合写一次,读多次的场景
适合:
- 大规模数据(分布式)
- 写一次,读多次
- 一般硬件(用数量代替质量)
不适合:
- 大量小文件
- 频繁修改文件(写多次)
Hadoop架构

其中:
- HDFS:Hadoop Distributed FileSystem Hadoop分布式文件系统
- YARN: 分布式资源管理(MapReduce2待定)
- MapReduce: 分布式计算
- Others:利用YARN的资源管理功能实现其他数据处理方式
Hadoop的内部各节点采用Master-Worker架构
HDFS

BLOCK
- Block是基本的存储单元,一般大小为64M。配置这么大的block因为一般的硬盘传输速率比寻道时间快;减少数据管理的开销;减少网络连接成本;
- 一个大文件会被拆分为一个个BLOCK,如果文件大小小于BLOCK,则实际的大小问所占空间
- BLOCK是基本的读写单位,类似于磁盘的块
- 每个BLOCK都默认复制3份到多台机器
NameNode
- 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小
- 一个Block在NameNode中对应一条记录(一般一个block的NameNode占用150字节),如果是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件
- 数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护(NameNode中与DataNode相关的信息并不保存到NameNode的文件系统中,而是NameNode每次重启后,动态重建)
- NameNode失效则整个HDFS都失效了,所以要保证NameNode的可用性
Secondary NameNode
- 定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机
DataNode
- 保存具体的block数据
- 负责数据的读写操作和复制操作
- DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息
- DataNode之间会进行通信,复制数据块,保证数据的冗余性
Hadoop 读写文件
写:

- 当客户端写入的临时文件大小达到一个BLCOK时,客户端会通知NameNode,申请把文件写入硬盘
- 接到请求后,NameNode在文件系统中创建一个BLOCK,并把该BlockId和要写入的DataNode返回给客户端
- 客户端收到信息后,将临时文件写入DataNodes,DataNode再把数据写入硬件的BLOCK中
- 当写入成功之后,NameNode会把该BLOCK提交上去,此时文件才可见
读:

- 客户端向NameNode发送读请求
- NameNode返回BLOCK和block所在的DataNode
- 客户端从DataNode中读取,如果读取失败,则从复制节点读取
可靠性
- DataNode会定时发送心跳给NameNode,当一段时间之后没有发送的时候,会认为其失效。NameNode会把该DataNode的数据复制到另外的DataNode
- 当DataNode中的数据损坏(通过校验码来检测)后,NameNode同样会复制数据到另外的DataNode中
本文深入介绍了Hadoop的架构和工作原理,包括Hadoop分布式文件系统(HDFS)、资源管理器YARN、分布式计算框架MapReduce等核心组件。探讨了Hadoop在大规模数据处理中的优势,如高容错性和扩展性,同时也分析了其在处理小文件和频繁写入场景的局限。
149

被折叠的 条评论
为什么被折叠?



