
# HDFS应用开发建议
#### HDFS的读写文件注意点
HDFS不支持随机读和写。
HDFS追加文件内容只能在文件末尾添加，不能随机添加。
只有存储在HDFS文件系统中的数据才支持append，edit.log以及数据元文件不支持Append。Append追加文件时，需要将"hdfs-site.xml"中的"dfs.support.append"参数值设置为true。
![](https://support.huaweicloud.com/devg-rule-mrs/public_sys-resources/note_3.0-zh-cn.png)
- "dfs.support.append"参数在开源社区版本中默认值是关闭，在FusionInsight版本默认值是开启。
- 该参数为服务器端参数。建议开启，开启后才能使用Append功能。
- 不适用HDFS场景可以考虑使用其他方式来存储数据，如HBase。
 
#### HDFS不适用于存储大量小文件
HDFS不适用于存储大量的小文件，因为大量小文件的元数据会占用NameNode的大量内存。
#### HDFS中数据的备份数量3份即可
DataNode数据备份数量3份即可，增加备份数量不能提升系统效率，只会提升系统数据的安全系数；在某个节点损坏时，该节点上的数据会被均衡到其他节点上。
#### HDFS定期镜像备份
NameNode的镜像备份参数为"fs.namenode.image.backup.enable"，将设置该值为"true"，系统即可定期备份NameNode的数据。
#### 提供数据可靠性相关操作
在调用write函数写入数据时，HDFS客户端并不会将数据写入HDFS，而是缓存在客户端内存中，此时若客户端异常、断电，则数据丢失。对于有高可靠要求的数据，应该写完后，调用hflush将数据刷新到HDFS侧。
