将数据传输到hadoop集群有很多种方法 - 例如,以编程方式(通过library)编写数据,通过odbc连接器传输(例如,一个包括在sqoop中,通过Thrift,或通过命令行工具。
对于大规模的原始数据传输功能,各种数据传输选项如何比较?
上下文:
我希望安排一个不规则的过程,将〜3TB的数据传输到Hadoop集群中。
没有太多要求 - 只是我尽可能快地传输数据;数据传输步骤是这里最重要的瓶颈。数据可以传输到集群中的任何位置 - HDFS上的文件或Hbase上的更多结构化数据。
我可以选择是从事务数据库加载数据,还是从文件系统中的一组CSV文件加载数据,并且如果它们承诺显着提高性能,则可以灵活地尝试其他替代方案。
我已经查看了可用的选项,并对最有效的方法有了一些直觉,但是如果可以的话,我们很乐意看到任何性能测试信息的测量结果。
答案 0 :(得分:2)
我想说使用hadoop -fs ...
命令将压缩CSV上传到HDFS将是最快的选择。在这种情况下,网络带宽是限制传输速率的唯一因素。
所有其他选项可能只会增加传输数据大小的开销。其中一些可能不会增加开销,但执行控制台命令很简单,为什么会使事情变得复杂?
将数据上传到HDFS后,可以根据需要进行转换,或者使用Pig或Map / Reduce转换为HBase。与驻留在本地文件系统上的数据转换相比,HDFS数据的任何转换都会更快,因为处理将是并行的,并且(很可能)它将在存储相应数据块的节点上本地发生。