上一篇讲了java split的使用弊端,虽是字符串处理中一个很小的操作,不过却避不开。接下来,主要探讨HDFS存储查询方面的问题和解决思路。
随着每天的业务运作,每天会生成很多csv文件,目前csv文件存储在hdfs文件系统里面。在使用csv文件数据时,遇到一个问题:
如何高效查询HDFS中的csv数据?
基于HDFS文件系统的特性,笔者经由以前的探讨和一些资料,作了一些思考,如图:
首先,这是一个复杂的问题。以笔者的能力水平,不能完全吃透它。那么,在笔者能实现的前提下,来分析一下哪些可以重点分析的。
第一,HDFS的配置优化。这个网络上相关的资料很多,hadoop官网上也有相关文档。所以,这里不提。
第二,网络IO,磁盘IO是比较关键的指标,HDFS的读写好坏是依赖于磁盘性能的,而且,hadoop通信,数据传输,网络IO第一关注点。具体的优化同上条,网络上有很多资料的。
第三,变量还是很多的。比如文件数量,文件平均大小,读写并发量等等。作为分布式存储系统,文件数量肯定很多。所以这里不提。实际上,根据笔者的看法,这里要分析的优化项有3点:
- 如何处理随机查询?
- 文件读取效率优化
- 缓存的优化
不同于互联网日志、流式数据,csv文件更像大块头。这些文