HADOOP之HDFS使用
前言
hdfs分为3个客户端:web,shell,java这三类客户端,下面会一,一介绍。
还没搭建HDFS的,链接: 看这里。
一. web客户端
仅仅提供文件浏览和删除,地址:http://linux01:9870,然后点击browse file system。
如果不清楚是不是9870,查看端口使用ntestat -ntlp,java程序带0.0.0.0IP地址对应的端口,挨个尝试。
二. 命令行客户端
先启动HDFS集群服务:
start-dfs.sh
hdfs目录地址在:http://linux01:8020/下,也就是hdfs-site.xml里面dfs.namenode.rpc-addres对应的value值。
命令格式:
hdfs dfs -<选项...> 本地/hdfs路径 本地/hdfs路径
查看hdfs命令大全:
hdfs dfs
本机文件上传到hdfs:
hdfs dfs -put 本地文件路径 hdfs://linux01:8020/ #将本机文件上传到了hdfs的虚拟目录的根目录下了
从hdfs里下载文件到本机上:
hdfs dfs -get hdfs://linux01:8020/路径 /root/
当把文件上传到hdfs,hdfs会把其复制成3个副本分布存储在集群的随机3个datanode上,默认3个副本。当文件大于128M,hdfs则会分成几块存储。因为文件太大,容易造成传输困难和降低程序处理效率。
hdfs的datanode块存储路径:
/opt/hdpdata/data/current/BP-714099719-192.168.81.34-1619279212859/current/finalized/subdir0/subdir0
这里将一个500多M的文件上传给HDFS。
在看linxu01机器上datanode存储的块:
可以看见hdfs把这个文件分成了3块,每个块还有对应的附属meta文件(包含对块的一些描述信息,比如校验和,防止块被私自修改)。
这里面134217728是文件字节大小,除以2次1024就得到128M。
你还能在集群的其他2台机器上看见相同的块文件副本,如果你把其他一台或者2台的副本给删除,下次datanode汇报自己块信息给namedata时,就会发现某些机器的副本不在了,就会命令存在这些副本的datanode复制自己的副本给他们,一