HDFS
HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件(小文件反而会加重hadoop的负担)
基本概念
块,所有文件存储后,都块拆分成相同大小的块
1
2
3
4**使用数据块的好处是:**
1. 一个文件的大小可以大于网络中任意一个磁盘的容量。文件的所有块不需要存储在同一个磁盘上,因此它们可以利用集群上的任意一个磁盘进行存储。
2. 简化了存储子系统的设计,将存储子系统控制单元设置为块,可简化存储管理,同时元数据就不需要和块一同存储,用一个单独的系统就可以管理这些块的元数据。
3. 数据块适合用于数据备份进而提供数据容错能力和提高可用性HDFS的三个节点:Namenode,Datanode,Secondary Namenode
Namenode:HDFS的守护进程,用来管理文件系统的命名空间,负责记录文件是如何分割成数据块,以及这些数据块分别被存储到那些数据节点上,它的主要功能是对内存及IO进行集中管理。
Datanode:文件系统的工作节点,根据需要存储和检索数据块,并且定期向namenode发送他们所存储的块的列表(心跳检测)
Secondary Namenode:辅助后台程序,与NameNode进行通信,以便定期保存HDFS元数据的快照。
特点
数据冗余,硬件容错
流式的数据访问
1
2* 一次写入,措辞读取
* 一旦写入后,不会被修改(只能删掉以前的块,再写入新的块)适合存储大文件
不适合交互式应用,低延迟很难满足
hdfs的基本操作
- hadoop fs -ls / 打印出hdfs的文件夹给打印出来
- hadoop fs -mkdir name 创建文件
- hadoop fs -put /user input/ 将本地文件提交到hdfs
- hadoop fs -cat 文件名 可以进行一个查看
- hadoop fs -get 路径 从hdfs下载文件到本地
- hadoop dfsadmin -report
- … (和linux的操作命令大致相同)
MapReduce
并行计算框架,利用了分而治之的思想,一个大任务分成多个小任务(map),并行执行后,合并结果(reduce)