hadoop的两大核心之一node
海量数据的存储(HDFS)linux
什么是HDFS?安全
hadoop distributed file system(hadoop分布式文件系统)服务器
是一种容许文件经过网络在多台主机上分享的文件系统,网络
可以让多机器上的多用户分享文件和存储空间.架构
特色:并发
1.通透性.让其实是经过网络来访问文件的动做,由程序与用户看来,分布式
就像是访问本地的磁盘通常.oop
2.容错性.即便系统中有某些节点脱机,总体来讲系统仍然能够持续运做spa
而不会有数据损失.
适用场景:
适用于一次写入屡次查询的状况,不支持并发写状况,小文件不合适.
HDFS的架构
主从结构
主节点,只有一个: namenode
从节点,有不少个: datanodes
namenode负责:
接收用户操做请求
维护文件系统的目录结构
管理文件与block之间关系,block与datanode之间关系
datanode负责:
存储文件
文件被分红block存储在磁盘上
为保证数据安全,文件会有多个副本
NameNode(能够理解为老大)
是整个文件系统的管理节点.它维护着整个文件系统的文件目录树,
文件/目录的元信息和每一个文件对应的数据块列表.接收用户的操做请求.
文件包括(这三个都保存在linux的文件系统中):
fsimage:元数据镜像文件,存储某一时段NameNode内存元数据信息.
edits:操做日志文件.
fstime:保存最近一次checkpoint的时间
工做特色:
1.Namenode始终在内存中保存metedata,用于处理"读请求".
2.到有"写请求"到来时,namenode会首先写editlog到磁盘,
即向edits文件中写日志,成功返回后,才会修改内存,而且向客户端返回.
3.Hadoop会维护一个fsimage文件,也就是namenode中metedata的镜像,
可是fsimage不会随时与namenode内存中的metedata保持一致,
而是每隔一段时间经过合并edits文件来更新内容.Secondary namenode
就是用来合并fsimage和edits文件来更新NameNode的metedata的.
DataNode(能够理解为小弟)
提供真实文件数据的存储服务.
最基本的存储单位:block(文件块),默认大小为64M
Secondary NameNode(能够理解为老大的助理)
HA(High Available)的一个解决方案.但不支持热备.配置便可
默认在安装在NameNode节点上,但这样...不安全!
(生产环境中,建议分开安装)
执行过程:
从NameNode上下载元数据信息(fsimage,edits),而后把两者合并,生成
新的fsimage,在本地保存,并将其推送到NameNode,替换旧的fsimage.
工做流程:
1.secondarynamenode通知namenode切换edits文件
2.secondarynamenode从namenode得到fsimage和edits(经过http)
3.secondarynamenode将fsimage载入内存,而后开始合并edits
4.secondarynamenode将新的fsimage发回给namenode
5.namenodenamenode用新的fsimage替换旧的fsimage
hadoop的整个体系结构就是构建在RPC之上的
RPC(Remote Procedure Call),(RPC采用客户机/服务器模式)
远程过程调用协议,它是一种经过网络从远程计算机程序上请求服务,
而不须要了解底层网络技术的协议.
具体实现过程:
首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,
而后等待应答信息.在服务器端,进程保持睡眠状态直到调用信息的到达为止.
当一个调用信息到达,服务器得到进程参数,计算结果,发送答复信息,
而后等待下一个调用信息,
最后,客户端调用进程接收答复信息,得到进程结果,而后调用执行继续进行.
服务端提供的对象必须是一个接口,接口extends VersioinedProtocal
客户端可以的对象中的方法必须位于对象的接口中.