HDFS简介
1,HDFS概念:
分布式文件系统
(1)文件系统: 存储文件,目录树定位文件 hdfs://master:9000/soft/hadoop-2.6.5-centos-6.8.tar.gz
(2)分布式: 服务器集群,各个服务器都有各自清晰的角色定位
功能: 解决海量数据的存储问题
2,设计思路
(1)分而治之
大文件切分成小文件,多台服务器共同管理一个文件
小文件做备份,分散存储到不同的服务器上,做到可靠性不丢失
(2)HDFS设计思想
3,HDFS架构
4,HDFS特点
优点:
(1)构建在廉价的机器上
a: 通过多副本提高可靠性
b: 提供了容错和恢复机制
(2)高容错性
a. 数据自动保存多个副本
b. 副本丢失后,自动恢复
(3)适合批处理
a. 移动计算而非移动数据
b. 数据位置暴露给计算框架
(4)适合大数据处理
a. 能够处理GB、 TB、甚至 PB 级数据
b. 能够处理百万规模以上的文件数量, 10K+节点规模
(5)流式文件访问
a. 一次性写入,多次读取。文件一旦写入,不能修改,只能追加
b. 保证数据一致性
缺点:
(1)不善于处理低延迟数据访问
a. 比如毫秒级的数据存储,它是做不到的
b. 适合高吞吐率的场景,就是在某一个时间写入大量的数据
(2)不善于处理小文件存取
a. 占用 NameNode 大量内存 ,NameNode 的内存是有限的
b. 小文件存储的寻道时间超过文件读取时间,这违背了 HDFS 的设计原则
(3)不支持并发写入、文件随机修改
a. 一个文件只能有一个写者
b. 仅支持文件的追加(append),不支持文件的随机修改
HDFS的shell(命令行客户端)操作
1,Hadoop集群管理脚本
Hadoop 安装目录 bin 目录下的 hadoop 脚本是最基础的集群管理脚本,用户可以通过该脚本完成各种功能,如 HDFS 文件管理、MapReduce 作业管理等。
使用方式:hadoop [–config confdir] COMMAND
<–config:是用于设置 Hadoop 配置文件目录,默认目录为 ${HADOOP_HOME}/etc/hadoop/>
2,HDFS 管理命令 fs
在集群正常运行的前提下,使用如下方法,进行 Shell 操作:
[shiny@hadoop01 ~]$ hadoop fs
[shiny@hadoop01 ~]$ hadoop fs -help
展示的是 HDFS 支持的命令行参数:
注意:
开始使用命令前,必须启动 Hadoop。
以上指令均是在 Linux 命令行窗口界面操作。
[ ]表示可选参数,<>表示必须参数。
3,常用命令参数介绍
1,帮助:
hadoop fs -help
hadoop fs -help ls
2,HDFS上操作文件或文件夹
-ls 显示目录信息
hadoop fs -ls hdfs://hadoop01:9000/
Hadoop fs -ls /
-mkdir zaiHDFS上创建目录
hadoop fs -mkdir /abc <单级创建》
hadoop fs -mkdir -p 123/as
-cp 从 HDFS 的一个路径复制到 HDFS 的另外一个路径
hadoop fs -cp /abc/** /123/abc
-mv 在 HDFS 目录中移动文件
hadoop fs -mv /abc/1.txt /123/abc/
-rm 删除HDFS上的文件或者文件夹
hadoop fs -rm /abc/1.txt <删除HDFS上的文件>
hadoop fs -rm -r /123/as <删除HDFS上的文件夹>
-rmdir 删除HDFS上的空目录
hadoop fs -rmdir /123
3,上传和下载文件
-put 等同于copyFromLocal,从本地上传文件到HDFS
hadoop fs -put hadoop-2.6.5
hadoop fs -copyFromLocal hadoop-2.6.5
-get 等同于copyToLocal,从HDFS下载文件到本地
hadoop fs -get hadoop1<文件路径> ./<下载到的路径>
hadoop fs -copyToLocal /abc/1.txt Desktop/data/<重命名>
-moveFromLocal 从本地剪切文件到HDFS
hadoop fs -moveFromLocal /home/theone/Desktop/software/data/1.txt /abc
-moveToLocal 从HDFS剪切文件到本地
hadoop fs -moveToLocal /abc/1.txt /home/theone/Desktop/software/data/
<命令无法实现,数据不能被修改>
-appendToFile 追加一个文件内容到已经存在的文件末尾
hadoop fs -appendToFile 2.txt /abc/2.txt
-getmerge 合并下载多个文件
hadoop fs -getmerge /abc/*.txt ./all.txt
4,查看文本内容
-cat 显示文件内容
hadoop fs -cat /abc/1.txt
-tail 显示一个文件最后1kb的内容
hadoop fs -tail /abc/1.txt
-text 将 HDFS 中文件以文本形式输出(包括 gz 包、jar 包等形式)<用cat会乱码>
hadoop fs -text /abc/hadoop-2.6.5
5,修改权限
-chmod 改变文件权限(命令的使用者必须是文件的所有者或者超级用户)
hadoop -chmod -R 600 /abc/1.txt
-chown 改变文件的拥有者和所属组(命令的使用者必须是文件的所有者或者超级用户)
hadoop -chown -R theone:theone /abc
6,统计 <## -h 以更易读的字节单位(K、M 等)显示信息>
-count 统计一个指定目录下的目录数、文件数和字节数。
hadoop fs -count -h /abc
-df 统计文件系统的可用空间信息
hadoop fs -df -h /abc
-du 统计文件夹的大小信息 <## -s 只统计参数所占用空间总的大小>
hadoop fs -du -h -s /abc
7,副本
-setrep 设置HDFS中文件的副本数量
hadoop fs -setrep 3 /abc/1.txt
<## 这里设置的副本数只是记录在NameNode的元数据中,
是否真的会有这么多副本,还得看DataNode的数量 >