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