Linux企业实战(六十一)——Hadoop(三)

HDFS之完全分布式部署

完全分布式的部署

  • 实验环境:
主机角色
server2namenode
server3dadanode
server4dadanode
server5dadanode
  • 步骤一:首先关闭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功能。

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值