概念
hsdf(hadoop distributed file system) 是分布式文件管理系统的一种
适合一次写入,多次读取的场景,不支持文件的修改,适合做数据分析,不适合做网盘应用
优点
高容错性:多个副本,丢失的副本可恢复
适合处理发数据:数据规模大,文件规模大
在廉价机器上,产生多副本
缺点
不适合低延时访问
无法高效处理小文件
储存小文件的话,它会占用namenode大量的内存来存储文件,目录,和块信息。这样是不可取的。因为namenode的内存总是有限的、
小文件的寻址时间大于读取时间,这和hdfs的设计目标不符
一个文件只能有一个写,不允许多线程对同一个文件写入hdfs
仅支持追加,不支持随机修改
hdfs文件块大小
设置太小会增加寻址时间,设置太大会,从磁盘传输数据的时间会明显大于定位到这个块开始位置所需的时间,导致程序在处理这块数据时,会非常慢
总结:hdfs块的大小设置主要取决于磁盘的传输速率
Shell命令
1.基本语法
bin/hadoop fs 具体命令 OR bin/hdfs dfs 具体命令
dfs是fs的实现类
./bin/hadoop fs -du /
显示文件夹大小
./bin/hadoop fs -rm /sanguo/suguo/LICENSE.txt
删除文件
./bin/hadoop fs -tail /sanguo/suguo/LICENSE.txt
显示文件尾部内容
./bin/hadoop fs -put LICENSE.txt /sanguo/suguo
从本地向hdfs上传文件
./bin/hadoop fs -getmerge /sanguo/suguo/* ./testMerge.txt
从hdfs合并文件下载到本地
./bin/hadoop fs -get /sanguo/suguo/test.txt
从hdfs下载单个文件
./bin/hadoop fs -mv /sanguo/test.txt /
hdfs上移动文件
/bin/hadoop fs -cp /sanguo/suguo/test.txt /sanguo
hdfs 复制文件
bin/hadoop fs -copyToLocal /sanguo/suguo/test.txt
从hdfs拷贝到本地 等于get
bin/hadoop fs -copyFromLocal test2.txt /sanguo/suguo/
从本地复制到hdfs 等于put
bin/hadoop fs -chgrp root /sanguo/suguo/test.txt
修改所有群组 chmod chowd
bin/hadoop fs -cat /sanguo/suguo/test.txt
hdfs查看内容
bin/hadoop fs -appendToFile test1.txt /sanguo/suguo/test.txt
将本地的文件追加到hdfs的指定文件之后
bin/hadoop fs -moveFromLocal test.txt /sanguo/suguo
将本地文件剪切到hdfs
bin/hadoop fs -mkdir -p /sanguo/suguo
在hdfs创建文件夹 -p是创建多级目录时候需要加的
bin/hadoop fs -ls -R /
删除
设置副本数
./bin/hadoop fs -setrep 2 /sanguo/suguo/test.txt
设置成10
会等到你的集群中增加新的到10之后才能有 新来一个 那台机器有一个副本