HDFS简介。
HDFS是一种文件系统,专为MapReduce这类框架下的大规模分布式数据处理而设计。你可以把一个100TB的大数据集在HDFS中存储为单个文件,而普通的文件系统无力实现这点。HDFS让你不用考虑数据分布等细节,让你感觉就像在处理单个文件一样。
HDFS不支持Unix文件命令,也不支持fopen( ) , fread( )标准文件读写。Hadoop提供了一套操作文件的shell命令,它们是与HDFS系统的主要接口。
运行MapReduce时不必编程读写HDFS文件,除非需要定制数据的导入与导出,通常运用MapReduce框架来读取HDFS文件。
所以读写HDFS通常有两种做法,一种是编写Java程序,另一个为Hadoop操作文件的命令。后一种更常用,这里演示运用第一种。
Hadoop文件命令即可以与HDFS交互,也可以和其他文件系统交互,它通过URI来精确定位一个特定文件或目录的位置。
完整的URI格式应为 hdfs://localhost:9000/file 但可以通过设置fs.default.name 来直接写成 /file
HDFS里相对路径为 /user/${user_name} ,需要自己创建此文件夹。
HDFS 常用命令。
hadoop fs -ls / // 显示根目录下所有文件。
hadoop fs -ls -R / // 递归显示根目录下所有文件
hadoop fs -cat /input // 显示/input这个文件的内容。
hadoop fs -mkdir /ooc // 在根目录下创建ooc文件夹。
hadoop fs -put blog /ooc // 把当前文件夹下的blog文件传到HDFS里的ooc文件夹下
hadoop fs -get /input . // 把HDFS下input取回到当前文件夹下
hadoop fs -tail /input // 查看input文件结尾的1000个字符
hadoop fs rm /input // 删除input文件
-ls : 权限 复制因子 所有者 组 文件大小 最后修改时间
附录:
head -n 3 blog // 显示blog文件的前三行
head -c 10 blog // 显示blog文件的前10个字符
cat blog | head -n 1 //显示blog文件的第一行