
# HDFS应用开发常用概念
#### DataNode
将文件切分成大小相同的块（称为"数据块"），存储在不同的DataNode上，并且周期性地向NameNode报告该DataNode的数据存放情况。
#### NameNode
用于管理文件系统的命名空间、目录结构、元数据信息以及提供备份机制等。
- Active NameNode：主NameNode，管理文件系统的命名空间、维护文件系统的目录结构树以及元数据信息；记录写入的每个"数据块"与其归属文件的对应关系。
- Standby NameNode：备NameNode，与主NameNode中的数据保持同步；随时准备在主NameNode出现异常时接管其服务。
 
#### Journalnode
高可用性（High availability，HA）集群下，用于同步主备NameNode之间的元数据信息。
#### ZKFC
ZKFC是需要和NameNode一一对应的服务，即每个NameNode都需要部署ZKFC。它负责监控NameNode的状态，并及时把状态写入Zookeeper。ZKFC有选择哪个NameNode作为主NameNode的权利。
#### Colocation
同分布（Colocation）功能是将存在关联关系的数据或可能要进行关联操作的数据存储在相同的存储节点上。HDFS文件同分布的特性是将那些需进行关联操作的文件存放在相同的数据节点上，在进行关联操作计算时，避免了到别的数据节点上获取数据的动作，降低了网络带宽的占用。
#### Client
HDFS Client主要包括五种方式：JAVA API、C API、Shell、HTTP REST API、WEB UI。
- Java API 提供HDFS文件系统的应用接口，本开发指南主要介绍如何使用Java API HDFS文件系统的应用开发。
  
- C API 提供HDFS文件系统的应用接口，使用C语言开发的用户可参考C接口的描述进行应用开发。
  
- Shell 提供shell命令完成HDFS文件系统的基本操作。
  
- HTTP REST API 提供除Shell、Java API和C API以外的其他接口，可通过此接口监控HDFS状态等信息。
  
- WEB UI 提供Web可视化组件管理界面。
  
 
#### keytab文件
存放用户信息的密钥文件。应用程序采用此密钥文件在MRS Hadoop组件中进行API方式认证。
