大的文件拆分成很多小的文件后,怎样用Hadoop进行高效的处理这些小文件?以及怎样让各个节点尽可能的负载均衡?
hadoop 在处理大规模数据时是很高效的,处理小文件时,可以将小文件打包为大文件,例如使用 SequcenFile 文件格式,这样多个小文件就可以通过 SequcenFile 文件格式变为一个大文件,之前的每个小文件都会映射为 SequcenFile 文件的一条记录。
收起1、怎样用 Hadoop 进行高效的处理这些小文件 ?
hadoop 在处理大规模数据时是很高效的,但是处理大量的小文件时就会因为系统资源开销过大而导致效率较低,针对这样的问题,可以将小文件打包为大文件,例如使用 SequcenFile 文件格式,例如以文件签名为 key ,文件内容本身为 value 写成 SequcenFile 文件的一条记录,这样多个小文件就可以通过 SequcenFile 文件格式变为一个大文件,之前的每个小文件都会映射为 SequcenFile 文件的一条记录。
2、 怎样让各个节点尽可能的负载均衡 ?
在 hadoop 集群中负载均衡是非常关键的,这种情况的导致往往是因为用户的数据分布的并不均衡,而计算资源槽位数确实均衡分布在每个节点,这样在作业运行时非本地任务会有大量的数据传输,从而导致集群负载不均衡,因此解决不均衡的要点就是将用户的数据分布均衡,可以使用 hadoop 内置的 balancer 脚本命令。
对于因为资源调度导致的不均衡则需要考虑具体的调度算法和作业分配机制。
收起