青椒学堂⼤数据学习笔记之2.1HDFS的shell命令——增删改查引⾔:
之前通过Hadoop伪分布式集搭建,已经将我们的基础环境配置完成。我们在此基础上,将进⼊本节知识点学习,HDFS分布式⽂件系统作为Hadooop的⽂件存储系统,结合⾃⾝⾼容错、⾼吞吐以及可扩展的特点,为我们⼤数据的⼤数据集存储提供保障。
HDFS概论:
在如今企业环境中,单机容量往往⽆法存储⼤量数据,需要跨机器存储。统⼀管理分布在集上的⽂件系统称为分布式⽂件系统:
Hadoop(HDFS)是指被设计成适合运⾏在通⽤硬件(commodity hardware)上的分布式⽂件系统(Distributed File System)。它和现有的分布式⽂件系统有很多共同点。但同时,它和其他的分布式⽂件系统的区别也是很明显的。HDFS是⼀个⾼度容错性的系统,适合部署在廉价的机器上。HDFS能提供⾼吞吐量的数据访问,⾮常适合⼤规模数据集上的应⽤。HDFS放宽了⼀部分POSIX约束,来实现流式读取⽂件系统数据的⽬的。HDFS在最开始是作为Apache Nutch搜索引擎项⽬的基础架构⽽开发的。HDFS是Apache Hadoop Core项⽬的⼀部分。
HDFS伪分布式⼯作原理:
HDFS采⽤Master/Slave架构,⼀个HDFS集有两个重要的⾓⾊,分别是Namenode和Datanode。Namenode是管理节点,负责管理⽂件系统的命名空间(namespace)以及客户端对⽂件的访问。Datanode是实际存储数据的节点。HDFS暴露了⽂件系统的命名空间,⽤户能够以操作⽂件的形式在上⾯操作数据。
HDFS的四个基本组件:HDFS Client、NameNode、DataNode和Secondary NameNode。
1. Client:客户端。
(1)⽂件切分。⽂件上传 HDFS 的时候,Client 将⽂件切分成 ⼀个⼀个的Block,然后进⾏存储。
(2)与NameNode 交互 ,获取⽂件的位置信息。
(3)与DataNode 交互 ,读取或者写⼊数据。
(4)管理和访问HDFS ,⽐如启动或者关闭HDFS。
2.NameNode:就是 master,它是⼀个主管、管理者。
(1)管理HDFS的名称空间。
(2)管理数据块(Block)映射信息。
(3)配置副本策略。
(4)处理客户端读写请求。
3. DataNode:就是Slave。NameNode 下达命令,DataNode 执⾏实际的操作。
(1)存储实际的数据块。
(2)执⾏数据块的读/写操作。
4. Secondary NameNode:并⾮NameNode的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。(1)辅助NameNode,分担其⼯作量。
(2)定期合并fsimage和fsedits,并推送给NameNode。
(3)在紧急情况下,可辅助恢复NameNode。
实训任务
1. 本节实训分为两个任务,分别为:
(1)操作HDFS⽂件或⽬录命令。
(2)查看,追加和合并⽂本内容命令。
2. shell命令⼤全:
在集开启状态下,通过管理命令查看shell命令⼤全,如图所⽰:
选项名称使⽤格式含义
-ls -ls <;路径> 查看指定路径的当前⽬录结构
-lsr -lsr <;路径> 递归查看指定路径的⽬录结构
-du -du <;路径> 统计⽬录下个⽂件⼤⼩
-dus -dus <;路径> 汇总统计⽬录下⽂件(夹)⼤⼩
-count -count [-q] <;路径> 统计⽂件(夹)数量
-mv -mv <;源路径> <⽬的路径> 移动
-cp -cp <;源路径> <⽬的路径> 复制
-rm -rm [-skipTrash] <;路径> 删除⽂件/空⽩⽂件夹
-rmr -rmr [-skipTrash] <;路径> 递归删除
-put -put <;多个linux上的⽂件> <hdfs路径> 上传⽂件
-
copyFromLocal -copyFromLocal <;多个linux上的⽂件> <hdfs路径> 从本地复制
-moveFromLocal -moveFromLocal <;多个linux上的⽂件> <hdfs路径> 从本地移动
-getmerge -getmerge <;源路径> <linux路径> 合并到本地
-cat -cat <hdfs路径> 查看⽂件内容
-text -text <hdfs路径> 查看⽂件内容
-copyToLocal -copyToLocal [-ignoreCrc] [-crc] [hdfs源路径] [linux⽬的路径] 从本地复制-moveToLocal -moveToLocal [-crc] <hdfs源路径> <linux⽬的路径> 从本地移动
-mkdir -mkdir <hdfs路径> 创建空⽩⽂件夹
-setrep -setrep [-R] [-w] <;副本数> <;路径> 修改副本数量
-touchz -touchz <⽂件路径> 创建空⽩⽂件
-stat -stat [format] <;路径> 显⽰⽂件统计信息
-tail -tail [-f] <⽂件> 查看⽂件尾部信息
-chmod -chmod [-R] <;权限模式> [路径] 修改权限
-chown -chown [-R] [属主][:[属组]] 路径修改属主
-chgrp -chgrp [-R] 属组名称路径修改属组
-help -help [命令选项] 帮助
3. 常⽤命令:
(1)ls:查看⽬录下⽂件或⽂件夹。
格式:
hadoop fs -cmd < args >
举例:
# 查看根⽬录下的⽬录和⽂件
hadoop fs -ls -R /
(2)put:本地上传⽂件到HDFS。
格式:
-put <;多个linux上的⽂件> <hdfs路径>
举例:
# 将本地根⽬录下a.txt上传到HDFS根⽬录下
hadoop fs /a.txt /
(3)get:HDFS⽂件下载到本地。
格式:
hadoop fs -get < hdfs file > < local file or dir>
举例:
# 将HDFS根⽬录下a.txt复制到本地/root/⽬录下
hadoop fs -get /a.txt /root/
注意: 如果⽤户不是root, local 路径要为⽤户⽂件夹下的路径,否则会出现权限问题。(4)rm:删除⽂件/空⽩⽂件夹。
格式:
hadoop fs -rm [-skipTrash] <;路径>
举例:
# 删除HDFS根⽬录下的a.txt
hadoop fs -rm /a.txt
(5)mkdir:创建空⽩⽂件夹。
格式:
hadoop fs -mkdir <hdfs路径>
举例:
# 在HDFS根⽬录下创建a⽂件夹
shell创建文件并写入内容hadoop fs -mkdir /a
(6)cp:复制。
格式:
hadoop fs -cp < hdfs file > < hdfs file >
举例:
# 将HDFS根⽬录下的a.txt复制到HDFS/root/⽬录下
hadoop fs -cp /a.txt /root/
(7)mv:移动。
格式:
hadoop fs -mv < hdfs file > < hdfs file >
举例:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论