【博学谷学习记录】超强总结,用心分享|狂野大数据课程【HDFS框架(二)】的总结分析

HDFS的文件拷贝
1、将本地的文件远程拷贝对对方主机
scp  -r  /root/test/       root@192.168.88.161:/root/       #拷贝目录
scp      /root/test/a.txt  root@192.168.88.161:/root/       #拷贝文件

scp      /root/test/a.txt   192.168.88.161:/root/           #简化写法

2、将远程主机的文件拉取到本主机
scp   -r  root@192.168.88.161:/root/       /root/test/            #拉取目录
scp       root@192.168.88.161:/root/       /root/test/a.txt       #拉取文件

scp       192.168.88.161:/root/       /root/test/a.txt            #简化写法

3、集群的hdfs之间进行文件拷贝
hadoop distcp hdfs://node1:8020/a.txt      hdfs://node8:8020/dir
(重点)Arichive机制
  • 概念

    1、Arichive文件是一个打包文件,但是不会对文件进行压缩
    2、Arichive文件归档之后,我们还可以透明的访问其中的每一个小文件
    3、Archive主要解决HDFS不擅长存储小文件问题
    4、Archive过程是一个MapReduce任务
    5、Archive之后,原来的文件依然保留
    
  • 操作

    0、数据准备 
    hadoop fs -mkdir /config
    cd /export/server/hadoop-3.3.0/etc/hadoop
    hadoop fs -put *.xml /config
    
    1、创建一个归档文件
    #将/config目录的所有文件进行归档(打包),打包后的文件命名为test.har,并且把打包后的test.har存放在/outputdir目录
    hadoop archive -archiveName test.har -p /config  /outputdir
    
    2、查看打包后的归档文件
    hadoop fs -cat /outputdir/test.har/part-0
    
    3、查看规定文件中所有小文件的名字
    hadoop fs -ls har://hdfs-node1:8020/outputdir/test.har
    hadoop fs -ls har:///outputdir/test.har     #如果客户端也是集群的某台主机,可以使用该简写方案
    
    4、查看归档文件中某个小文件的内容
    hadoop fs -cat har:///outputdir/test.har/core-site.xml
    
HDFS的权限
1、HDFS的权限有一个总开关,在hdfs-site.xml中,该开关开启,权限就会起作用
  <property>
         <name>dfs.permissions.enabled</name>
         <value>true</value>
  </property>
2、修改HDFS的权限
hadoop  fs -chmod 777 /a.txt

(重点)HDFS的动态扩容和缩容
  • 概念

    1、在不影响当前集群正常运行的情况下,对集群的主机的数量进行增加或者减少
    
  • 操作步骤1-动态上线

    1、准备一台机器:node4,该机器要满足以下条件:
      1)设置ip: 192.168.88.164
      2)设置主机名: node4
      3)安装已经安装JDK
      4)设置时钟同步
      5)关闭防火墙
    2、在三台机器上设置域名映射
      192.168.88.161 node1 node1.itcast.cn
      192.168.88.162 node2 node2.itcast.cn
      192.168.88.163 node3 node3.itcast.cn
      192.168.88.164 node4 node4.itcast.cn
      
    3、构建node4和其他主机的免密登录
      3.1 在node4上生成公钥和私钥:ssh-keygen -t rsa
      3.2 在node4上将公钥发送给node1:ssh-copy-id node1
      3.3 在node1上将新的公钥发送给所有主机
         scp /root/.ssh/authorized_keys node2:/root/.ssh
         scp /root/.ssh/authorized_keys node3:/root/.ssh
         scp /root/.ssh/authorized_keys node4:/root/.ssh
         
    4、在node1中,编辑文件/export/server/hadoop-3.3.0/etc/hadoop/workers 
        node1
    	node2
    	node3
    	node4
    	
    5、在node1上,将配置好的hadoop分发给node4
      scp -r /export/server/hadoop-3.3.0/ node4:/export/server/
      
    6、在node4上配置/etc/profile环境变量,然后记着source
    	export HADOOP_HOME=/export/server/hadoop-3.3.0
        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
        
    7、在node4,启动datanode
     hdfs --daemon start datanode
     
    8、访问http://node1:9870页面的Datanodes菜单查看
    
    9、在node1上设置DataNode负载均衡服务
      hdfs dfsadmin -setBalancerBandwidth 104857600  #设置带宽
      #设置负载均衡的意义:如果不同主机之间的存储比率超过%5,HDFS会自动的进行BLock块的再平衡
      hdfs balancer -threshold 5  #设置负载均衡
    
  • 操作步骤2-动态下线

    1、编辑node1上配置文件,将node4添加到该文件,从此node4就上了集群的黑名单
    vim /export/server/hadoop-3.3.0/etc/hadoop/excludes
    
    2、在node1上,执行刷新命DataNode命令
    hdfs dfsadmin -refreshNodes
    
    3、访问http://node1:9870页面的Datanodes菜单查看状态
    #在此刻如果你还想让node4上线,则需要去/export/server/hadoop-3.3.0/etc/hadoop/excludes文件删除node4,让它离开黑名单,然后刷新HDFS:hdfs dfsadmin -refreshNodes 即可
    
    4、在node4上,关闭datanode
    hdfs --daemon stop datanode
    
    5、在node1上,实现负载均衡
    hdfs balancer -threshold 5
    
(重点)HDFS的高可用
HDFS3.0的纠删码机制
  • 概述

    1、传统的HDFS需要使用文件本身3倍的空间来存储数据,保证数据的可靠性
    2、能不能有一种方法,既能不占用太多的冗余空间,又能保证可靠性,该方法就是纠删码机制
    3、纠删码机制是Hadoop3.0以后加入的
    
  • 纠删码操作

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JXSn0xeX-1663574182206)(HDFS框架.assets/image-20220917163637510.png)]

    1、策略解释
    RS-10-4-1024k:使用RS编码,每10个数据单元(cell),生成4个校验单元,共14个单元,也就是说:这14个单元中,只要有任意的10个单元存在(不管是数据单元还是校验单元,只要总数=10),就可以得到原始数据。每个单元的大小是1M。
    
    2、操作
    2.1 查看当前系统支持的纠删码策略
    hdfs ec -listPolicies   #默认所有的纠删码策略都是关闭的
    
    2.2 设置纠删码
    #HDFS的纠删码是对目录进行设置的,通俗的讲,你需要对某一个目录设置纠删码
     hdfs dfs -mkdir /rs-6-3              #在HDFS上创建测试目录
     hdfs ec -getPolicy -path /rs-6-3    #查看该目录是否设置了纠删码
     
     hdfs ec -enablePolicy  -policy  RS-6-3-1024k #启用纠删码
     
     hdfs ec -setPolicy -path /rs-6-3 -policy RS-6-3-1024k   #设置纠删码策略 9丢3
     
     hdfs ec -getPolicy -path /rs-6-3    #查看是否设置成功
     
    
     #执行该命令之后,发现不能成功,是因为当前的系统和Hadoop不支持ISA-L加速器
     #需要做两件事:1、给三台虚拟机安装ISA-L加锁器 2、对Hadoop
     #源码重新编译,让其支持ISA-L加速器
     #可以参考安装和编译文档
     hadoop fs -put 1.txt /rs-6-3  
    
    
    
    
    解释:
    [root@node1 ~]# hdfs ec -listPolicies                        
    RS-10-4-1024k:必须保证有14台主机
    RS-3-2-1024k: 必须保证有5台主机
    RS-6-3-1024k: 必须保证有9台机器
    XOR-2-1-1024k:必须保证有3个机架
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值