Hadoop学习

来源:互联网 发布:决策树算法优点 编辑:程序博客网 时间:2024/04/29 22:29

初识Hadoop

Hadoop主要由两个部分构成:

  1. HDFS分布式文件系统
  2. MapReduce分布式数据分析处理系统

HDFS

解决大数据时代单磁盘存储数据过大,读取缓慢问题。

适用场景

  1. 一次写入,多次读取(查询)。不支持并发写入、修改。
  2. 运行在普通硬件上
  3. 适用于高吞吐量应用,不适用于低时间延迟(几十毫秒内)应用
  4. 不适用于大量小文件,文件系统所能存储的文件总数受限于namenode的内存容量。小文件也占用一个块,小文件越多(1000个1k文件)数据块越多,nameNode压力越大。(HDFS中小于一个块大小的文件不会占据整个块的空间)??

数据块


block分布(黄色方块为数据节点)


数据块是存储的最小单位,HDFS的块(block)默认为64MB。文件被划分为块大小的多个块分别存储在多个任意节点磁盘上。

namenode 和 datanode


交互过程


HDFS集群有两类节点 以 namenode(管理者:一个)-datanode(工作者:多个) 模式运行,上图反映了NameNode和DataNode的交互过程。

namenode
用于管理所有文件和目录树(文件系统命名空间)与块的映射,并通过命名空间镜像文件和编辑日志文件在磁盘保存。同时通过记录每个文件的块与应节点映射信息保存在内存中,每次集群启动时由数据结点重新创建。

datanode
为工作结点,负责存储、检索数据块,受namenode调度并定期向namenode发送存储块的列表(a Heartbeat(心跳) and a Blockreport )。

namenode节点容错机制 (两种)
第一种机制,配置namenode在多个系统节点保存元数据持久状态。各节点实时同步(原子操作)
第二种机制,备用namenode,有滞后性会丢失数据。

联邦HDFS
2.X版本以后支持联邦HDFS解决内存横向扩展限制,允许添加多个namenode,分别管理各自的目录、文件、数据块的数据块池。每个namenode相互独立互不影响。

高可用性(HA)支持 活动-备用(active-standby)namenode
用于实现一个namenode失效快速恢复,当一个活动namenode失效,备用namenode会接替它的工作。

  • 故障切换与规避

权限模式
Hadoop权限模式分为三种:只读权限(r)、写入权限(w)、可执行权限(x)
每个文件和目录都有所属用户(owner)、所属组别(group)、模式(mode)。
权限检查
超级用户不需要权限检查

命令行操作接口

Hadoop文件系统

JAVA API

I/O操作

数据完整性

MapReduce


图1:MapReduce工作流程图

MapReduce工作原理

  1. 从HDFS存储中获取输入数据,输入数据会被划分为n份(n由用户定义),如[图1],被划分为0~4个split(分片)
0 0
原创粉丝点击