HDFS应用开发建议
HDFS的读写文件注意点
HDFS不支持随机读和写。
HDFS追加文件内容只能在文件末尾添加,不能随机添加。
只有存储在HDFS文件系统中的数据才支持append,edit.log以及数据元文件不支持Append。Append追加文件时,需要将“hdfs-site.xml”中的“dfs.support.append”参数值设置为true。
- “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侧。