一 HDFS基本概念
hdfs文件被分成块进行存储,默认64M,块是文件存储处理的逻辑单元
hdfs有两个节点,NameNode和DataNode
NameNode存放文件元数据:分别是文件与数据块的映射表,数据块与数据节点的映射表。配置副本策略和处理客户端请求
DataNode:实际存储数据、执行数据块的读写并汇报存储信息给NameNode;一般默认每个数据块有三个副本,保存在两个机架上面,保证hdfs的高可用
另外还有个Secondary NameNode:辅助NameNode,分担NameNode工作,定期合并fsimage和fsedits并推送给NameNode,紧急情况下可辅助恢复NameNode;其实就是NameNode的备胎,保证NameNode的高可用性
心跳检测:每隔多少秒钟,dataNode会向NameNode报自己的工作状况,是不是还处于active状态
hdfs读取文件
hdfs写入文件
hdfs和传统文件系统有什么区别:
1.数据冗余,硬件容错
2.流式数据访问,一次写入,多次读取,块没法修改
3.存储大文件,如果是大量的小文件对NameNode压力很大,所以不像数据库那样适合频繁的交互式引用;一次写入,多次读取,顺序读写;不支持多用户并发写相同文件
二 hdfs使用
hdfs提供了shell接口,可以直接执行一些类似的linux命令
在hadoop-1.2.1/conf目录下
创建文件夹
,创建的文件夹默认在hdfs /user/root 目录下
hadoop fs -mkdir input
查看一下:hadoop fs -ls /user/root
将一个文件上传到hdfs我们刚刚创建的input文件夹中中:
hadoop fs -put hadoop-env.sh /input
查看一下:
hadoop fs -ls /user/root/input
下载hdfs文件到本地:
hadoop fs -get input/hadoop-env.sh hadoop-env2.sh
查看一下本地:
ls
查看文件系统的所有信息:
hadoop dfsadmin -report