HDFS定义:
HDFS
(
Hadoop Distributed File System
),它是一个文件系统
,用于存储文件,通过目
录树来定位文件;
其次,它是分布式的
,由很多服务器联合起来实现其功能,集群中的服务
器有各自的角色。
HDFS
的使用场景:适合一次写入,多次读出的场景。
一个文件经过创建、写入和关闭
之后就不需要改变。
HDFS组成架构:
- NameNode(nn):就是Master,它是一个主管、管理者。
(1)管理HDFS的名称空间;
(2)配置副本策略;
(3)管理数据块(Block)映射信息;
(4)处理客户端读写请求。
- DataNode:就是Slave。NameNode 下达命令,DataNode执行实际的操作。
(1)存储实际的数据块;
(2)执行数据块的读/写操作。
- Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
(
1
)辅助
NameNode
,分担其工作量,比如定期合并
Fsimage
和
Edits
,并推送给
NameNode
;
(
2
)在紧急情况下,可辅助恢复
NameNode
HDFS----shell命令
前提:Hadoop集群已经配置完成,执行命令前群起集群。
-
上传
-moveFromLocal : 从本地剪切粘贴到HDFS(本地(linux)就没有这个文件了)
hadoop fs -mkdir sanguo #在hdfs上创建一个目录(在hdfs上可通过指定端口在网页上访问)
vim weiguo.txt #然后输入一些内容
hadoop fs -moveFromLocal ./weiguo /sanguo #把当前目录下的weiguo剪切到hdfs上的sanguo目录下
执行完后,weiguo.txt在本地就没了,剪切过去了,
查看hdfs:有了
-copyFromLocal:从本地文件系统中拷贝文件到 HDFS 路径去(本地还存在)
vim shuguo.txt #然后输入一些内容
hadoop fs -copyFromLocal ./shuguo /sanguo #把当前目录下的shuguo拷贝到hdfs上的sanguo目录下
-put
:等同于
copyFromLocal
,生产环境更习惯用
put
vim shuguo.txt #然后输入一些内容
hadoop fs -put ./shuguo /sanguo #把当前目录下的shuguo拷贝到hdfs上的sanguo目录下
-appendToFile
:追加一个文件到已经存在的文件末尾
vim liubei.txt #然后输入一些内容
hadoop fs -appendToFile ./liubei.txt /sanguo/shuguo #把liubei内容追加到sanguo目录下的shuguo中
-
下载
-copyToLocal:从 HDFS 拷贝到本地
hadoop fs -copyToLocal /sanguo/shuguo.txt #把hdfs上的shugo下载到本地
-get:等同于 copyToLocal,生产环境更习惯用 get
hadoop fs -get /sanguo/shuguo.txt ./shuguo2.txt
#不仅可以下载到本地同时还能修改名字,上面就是把shuguo.txt修改成shuguo2.txt
-setrep:设置 HDFS 中文件的副本数量
hadoop fs -setrep 10 /sanguo/shuguo.txt
#把备份数改成10个
很多shell命令和linux命令一样。