HDFS组件结构图解说:
1,如图所示中,NameNode充当主人角色,职责包括:管理文档系统的命名空间(名称空间),调节客户端访问到需要的文件(存储在DateNode中的文件)
2, DataNode充当奴隶角色,通常情况下,一台机器只部署一个DateNode,用来存储MapReduce程序需要的数据
3, NameNode会定期从DataNode那里收到心跳和Blockreport反馈
4,心跳反馈用来确保DataNode没有出现功能异常;
5, Blockreport包含DataNode所存储的块集合
二,HDFS设计原则
1,文件以块(块)方式存储
2,每个块带下远比多数文件系统来的大(预设64)
3,通过副本机制提高可靠度和读取吞吐量
4,每个区块至少分到三台DataNode上(一般,对NameNode进行raid1配置,对DataNode进行raid5配置)
5,单一主(NameNode)来协调存储元数据(元数据)
6,客户端对文件没有缓存机制(没有数据缓存)
三,NameNode (NN)
NameNode主要功能提供名称查询服务,它是一个jetty服务器(一个开源的servlet容器,嵌入式的web服务器)
NameNode保存metadate信息包括
文件物权和权限
文件包含哪些块
块保存在哪个DataNode(由DataNode启动时上报)
1, NameNode的metadate信息在启动后会加载到内存
2,元数据存储到磁盘文件名为“fsp_w_picpath”,
块的位置信息不会保存到fsp_w_picpath
四。DataNode (DN)
保存块
启动DN线程的时候会向NN汇报块信息
hadoop fs -cmd
cmd:为具体的操作,基本上于UNIX的命令相同
参数:参数
hdfs资源URL格式:方案://bigdata/路径
方案:协议名,文件或hdfs
bigdata: namenode主机名
路径:路径
如:hdfs://localhost: 9000/user/块/用法
假设已经在core-site.xml设置了fs.default.name=hdfs://localhost: 9000,
则仅使用/user/块/用法即可
:
#创建目录
hadoop fs -mkidr myFirstDir
#查看创建的目录
hadoop fs - ls/myFirstDir #返回为空,目前还没存放数据
#对当前创建目录存放文件
hadoop fs——/etc/shadow/myFirstDir
#查看目录下的文件
hadoop fs - ls/myFirstDir
#复制文件到指定的位置
hadoop fs -/hadoop目下的文件,/本地文件路径
hadoop fs -/myFirstDir影子/home/#下载阴影到/home目录下
#新建一个空文件
, hadoop fs -touchz/myFirstDir/newFile中。txt
#将hadoop上某个文件重命名
hadoop fs mv/myFirstDir/newFile中。txt/myFirstDir/bigdata。txt
#
#查看文件里的内容
hadoop fs猫/myFirstDir影子
#查看最后1000字节数据
hadoop fs多边形/myFirsDir影子
#删除文件\目录
hadoop fs rm - r/myFirstDir影子
hadoop fs rm - r/myFirstDir/二级
#查看HDFS下的文件
, hadoop fs - ls/
#查看集群数据的信息,登陆大师节点查看http://192.168.1.114:50070
管理与更新
#查看HDFS的基本统计信息
hadoop dfsadmin报告
#进出安全模式
hadoop dfsadmin -safemode输入
hadoop dfsadmin -safemode离开
#节点添加
添加一个新的DataNode节点,先在新加节点上安装好hadoop,
要和NameNode使用相同的配置(可以直接从NameNode复制),修改$ HADOOP_HOME/conf/主人文件,加入NameNode主机名。
然后在NameNode节点上修改$ HADOOP_HOME/conf/奴隶文件,加入新节点名,再建立新加节点无密码的SSH连接,运行启动命令为:
/bin/start-all.sh
#负载均衡
HDFS的数据在各个DataNode中的分布可能很不均匀,尤其是在DataNode节点出现故障或新增DataNode节点时。
新增数据块时NameNode对DataNode节点的选择策略也有可能导致数据块分布不均匀。
用户可以使用命令重新平衡DataNode上的数据块的分布:
start-balancer。sh