HDFS之完全分布式部署
完全分布式的部署
- 实验环境:
主机 | 角色 |
---|---|
server2 | namenode |
server3 | dadanode |
server4 | dadanode |
server5 | dadanode |
- 步骤一:首先关闭server2上之前的伪分布式
- 步骤二:各节点安装nfs,并且在server2上进行设置
注意:这里我们需要考虑如何让新加的结点,同步之前结点的数据?这里我们采用nfs来完成
#在所有节点上安装nfs
yum install -y nfs-utils
- 步骤三:在server3和server4上创建用户bdkl,并且所有节点开启rpc-bind
注意:为了保持全平台一致,server2、server3、server4上的bdkl用户的uid,gid应该一致
systemctl start rpcbind
- 步骤四:在server3和server4上挂载server2的用户主目录,并检查免密登录
- 步骤五:对master(server2)节点进行相应的设置
- 步骤六:在server2上重启namenode,在server3和server4上启动datanode
- 步骤七:测试
因为之前进行了清理,所以现在需要重新创建用户主目录,上传时不指定文件路径,会直接上传至用户主目录
在web页面上进行查看
可以看到每一份拷贝被分为两个block,因为这里一份最大存128M
- 步骤八:在集群的状态为running的情况下,手动添加server5加入集群,做datanode
yum install -y nfs-utils.x86_64
启动server5,让其只做datanode
在server2上修改副本数为3
HDFS读写过程
- (1)写文件的过程
1.客户端向我们的namenode发送信息(这里的信息会携带将文件且分为多少个block,以及block存储的副本数),告诉其将要写文件;
2.namenode会向客户端发送datanode列表;
注意:这里namenode向客户端发送datanode时是根据datanode与客户端的距离来进行选择的,因为hadoop具有机架感应技术。
分为两种情况:
第一种:当datanode和客户端在一台主机上时,第一份数据应该保存在当前客户端所在机架的datanode上的,第二份数据应该存储在第二个机架上,第三份数据存储在第二个机架上的不同datanode上,这样做是为了减少数据传输的损耗。同一个机架上,同一副本数只能存在两份。这样做也是为了防止同一个机架上的所有datanode宕机后,数据丢失的风险。
第二种:当客户端为外部客户端时,第一份数据是随机选择datanode的(但是会根据客户端与datanode的距离,选择最近的datanode),后面的第二份和第三份是在同一个机架上的(但是和第一份数据不在一个机架上),都是满足同一个机架上,同一副本数只能存在两份的原则来进行存储的。
3.客户端根据从namenode处获得的信息,选择好相应的datanode列表,将数据发送到第一个block中的datanode上,在发送时是以64k的包来进行发送的,并且当datanode列表中的第一个datanode接收到数据并存盘后,然后会同步将数据推送到datanode列表中的其他datanode节点;(其他block也会像这一步中所讲的一样依次将数据发送过来)
4.当客户端将所有的block发送完毕后,对应的datanode也将数据保存完毕后,datanode会向namedata发送一个信息,告诉namenode数据接收完毕并已经保存;
5.客户端将所有的block发送完毕后,会向namenode发送消息,告诉其发送数据已经完毕,请求关闭文件;
6.namenode会将文件的元数据(即block信息)进行保存。
- (2)读文件的过程
1.客户端向namenode发送读取文件的请求;
2.namenode向客户端送该文件的元数据(即block列表);namenode中存储了两张表格,一张是block列表,另外一张是datanode列表;
3.客户端根据返回的block列表,从对应的datanode上开始读取文件。
hadoop(HDFS)如何保证数据安全
- (1)HDFS采用的是分布式架构,datanode数据存储采用block的形式,把文件存入分布式文件系统;
- (2)每个block默认有3个副本,第一个副本本地机器,第二个副本放在同机架的不同服务器,第三个副本放置在不同机架的其他服务器;
- (3)hdfs集群设计了safemode安全模式,当集群坏块太多,触发了阀值整个集群会进入安全模式,只能读,不能写;启动过程中也会进入安全模式,等待datanode向namenode发送块报告和心跳;
- (4)HDFS里面的文件也有类似linux系统的权限;
- (5)针对HDFS和YARN的高可用,设计HA功能。