hdfs是通过分布式集群来存储文件,为客户端提供了一个便捷的访问方式,一个虚拟的目录树
文件存储到hdfs集群中去的时候是被切分成block的
文件的block存放在若干台datanode节点上
hdfs文件系统的文件与真实的block之间有映射关系,由namenode管理
每一个block在集群中会存储多个副本,可以提高数据的可靠性,可以提高访问的吞吐量
hdfs fs 指令帮助
常用指令:
hadoop fs -ls dest 通linux ls
hadoop fs -put src dest 往hdfs中添加一个文件,会自动创建文件夹
hadoop fs -get src 下载
hadoop fs -cat src 展示
hadoop fs 回车 查看hdfs的指令集
hadoop fs -appendToFile localsrc dest 往目标文件中追加本地文件,hdfs中的文件无法修改,但可以追加
hadoop fs -checksum src 校验文件校验和
hadoop fs -chgrp group path 修改文件组
hadoop fs -chmod 修改文件权限
hadoop fs -chown owner path 修改文件所属用户
ps:文件权限
1、文件权限以文件格式+三元组表示,
以drwx------ 1 hadoop supergroup 2015-01-09 23:19 /jdk....tar为例:
d rwx --- --- 1 hadoop supergroup
文件格式为文件夹 所属用户r(可读)w(可写)x(可执行) 用户所在组 其他用户 副本数量 所属用户 所属组
hadoop fs -df [-h] path hdfs中的磁盘使用率(-h人可阅读以gb或mb显示)
hadoop fs -du [-s -h] path 查看hdfs中path下每个文件有多大
hdfs分布式集群秘钥配置
在一台linux主机上可以通过ssh口令登录到另外一台
ssh hostName/ip
还可以通过配置公私钥来使集群免登录
具体步骤:
在集群任意节点生成一对公私钥
自己保留私钥,并将公钥复制到节点二
节点二保留公钥,并将公钥放入授权列表(即authorized_keys)
从而实现无秘登录
实现思路:
底层验证机制:
节点一向节点二请求登录
节点二查看授权列表authorized_keys
节点二使用公钥加密随机字符串给节点一
节点一用私钥解密该随机字符串,并发送给节点二
节点二验证该随机字符串是否正确
ssh协议已实现了该方法
秘钥配置:
ssh-keygen -t rsa 全部使用默认
scp id_rsa.pub hadoop02:/home/hadoop
ssh hadoop02
touch ~/hadoop/.ssh/authorized_keys
//修改authorized_keys的权限改为所有者可读写
sudo chmod 600 authorized_keys
//追加hadoop02:/home/hadoop/id_rsa.pub到hadoop02:/home/hadoop/.ssh/authorized_keys后
cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
------------------------------------------------------------------------------------------此时完成从hadoop01登录到hadoop02无需密码
//让hadoop01自己登录自己免密
touch /home/hadoop/.ssh/authorized_keys
chmod 600 authorized_keys
cat /home/hadoop/.ssh/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
------------------------------------------------------------------------------------------此时完成hadoop01自己登录自己无需密码
//让hadoop02登录到hadoop01免密
//第一步生成rsa公私钥对
sudo ssh-keygen -t rsa
//第二步跳转到.ssh目录下
cd /home/hadoop/.ssh
//第三步将hadoop02的公钥复制到hadoop01:/home/hadoop下
scp id_rsa.pub hadoop01:/home/hadoop/id_rsa_hadoop02.pub
//第四步登录到hadoop01
ssh hadoop01
//第五步将hadoop01:/home/hadoop/id_rsa_hadoop02.pub追加到hadoop01:/home/hadoop/.ssh/authorized_keys后
cat /home/hadoop/id_rsa_hadoop02.pub >> /home/hadoop/.ssh/authorized_keys
------------------------------------------------------------------------------------------此时完成hadoop02登录到hadoop01无需密码
//让hadoop02自己登录到自己免密
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
------------------------------------------------------------------------------------------此时完成hadoop02自己登录自己免密