Hadoop入门
Hadoop四高
1)高可靠性
Hadoop底层维护多个数据副本,所有即使hadoop某个计算元素或存储故障,也不会造成数据丢失
2)高扩展性
在集群间分配任务数据,可方便的扩展数以千计的节点
3)高效性
在mapreduce的思想下,Hadoop是可以并行工作的,以加快任务处理的速度。
4)高容错性
能够自动将失败的任务重新分配
HDFS缺点:
1)不适合低延迟数据访问,比如毫秒级的存储数据,它做不到
2)无法高效对大量小文件进行存储
存储大量小文件,他会占用大量的NameNode大量的内存来存储文件目录和快信息。这样是不可取的,因为NameNode内存是有限的
小文件的寻址时间会超过读取时间,违反了HDFS的设计目标
3)不支持并发写入、文件随机修改
一个文件只能有一个写,不允许多个线程同时写
仅支持数据追加(append),不支持文件的随机修改
Hadoop组成
Hadoop1.x阶段
HDFS(数据存储)、MapReduce(计算+资源调度)、Common(辅助工具)
1.x时期,mr需要同时处理业务逻辑运算又要资源调度,压力大,耦合度大。
Hadoop2.x阶段
HDFS(数据存储)、MapReduce(计算)、YARN(资源调度)、Common(辅助工具)
Hadoop3.x阶段无变化
- Hadoop集群包括两个:HDFS集群、YARN集群
- 两个集群逻辑上分离、通常物理上是在一起的
- 两个集群都是标准的主从架构的集群
Hadoop架构
HDFS 集群:
主角色:NameNode(NN)是Master,它是管理者
- 存储文件元数据,如文件名、文件目录结构、文件属性,以及每个文件块列表、块所在DataNode等
- 管理HDFS的名称空间
- 配置副本策略
- 处理客户端读写请求
从角色:DataNode(DN) 是Slave,DataNode执行实际的操作
- 在本地文件系统存储文件块数据 和读写数据块,以及数据的校验和
主角色辅助角色:SecondaryNameNode(SNN) 相当于主角色的秘书
该节点并非NameNode的热备节点。当NameNode挂掉时,它并不能马上替换NameNode并提供服务
它只辅助NameNode,分担NameNode工作量,比如定期合并Fsimage和Edits,并推送给NameNode
- 每个一段时间对NameNode元数据做备份
- 紧急情况下,可辅助恢复NameNode
Client客户端
1)文件切片。文件上传HDFS时,Client将文件分成一个个block,然后进行上传;
2)与NameNode交互,获取文件的位置信息;
3)与DataNode交互,读取或写入信息;
4)Client提供了一些命名来管理HDFS,比如NameNode格式化;
5)Client可以通过一些命名来访问HDFS,比如对HDFS增删改查等操作
YARN集群:
主角色:ResourceManager(RM)
- 整个集群资源(cpu、内存等)的老大
从角色:NodeManager(NM)
- 单个节点服务器资源的老大
ApplicationMaster(AM)
- 单个任务运行的老大
Container
- 容器,相当于一台独立的服务器,里面封装了任务运行时所需资源,内存、cpu、磁盘、网络等
注:集群上可以有很多ApplicationMaster,每个NodeManager上可以有多个Container
Hadoop特征优点
扩容能力(Scalable):Hadoop是在可用的计算机集群间分配数据并完成计算任务的,这些集群可用方便的扩展到数以千计的节点中。
成本低(Economical):Hadoop通过普通廉价的机器组成服务器集群来分发以及处理数据,以至于成本很低。
高效率(Efficient):通过并发数据,Hadoop可以在节点之间动态并行的移动数据,使得速度非常快。
可靠性(Rellable):能自动维护数据的多份复制,并且在任务失败后能自动地重新部署(redeploy)计算任务。所以Hadoop的按位存储和处理数据的能力值得人们信赖。