如何在运行Sqoop导入和导出时找到最佳数量的映射器



我使用的是Sqoop 1.4.2版本和Oracle数据库。

运行Sqoop命令时。例如:

./sqoop import                               
    --fs <name node>                         
    --jt <job tracker>                       
    --connect <JDBC string>                  
    --username <user> --password <password>  
    --table <table> --split-by <cool column> 
    --target-dir <where>                     
    --verbose --m 2

我们可以指定——m -我们希望Sqoop运行多少个并行任务(也可能同时访问数据库)。./sqoop export <…>

是否有一些启发式(可能基于数据的大小),这将有助于猜测什么是最优的任务数量使用?

谢谢!

摘自O'Reilly Media的Apache Sqoop Cookbook,似乎是最合乎逻辑的答案。

映射器的最佳数量取决于许多变量:您需要考虑数据库类型、数据库服务器使用的硬件以及对数据库需要服务的其他请求的影响。没有最佳数量的映射器适用于所有场景。相反,我们鼓励您进行实验,以找到适合您的环境和用例的最佳并行度。最好从少量映射器开始,慢慢增加,而不是从大量映射器开始,逐渐减少。

In "Hadoop:《权威指南》他们解释说,当在每个Tasktracker上设置最大map/reduce任务时,考虑处理器及其核心来定义集群的任务数量,所以我将应用相同的逻辑,看看你可以在处理器上运行多少进程(计数超踏),并将——m设置为这个值- 1(为导出过程中可能弹出的其他任务保留一个打开),但这仅适用于您有一个大数据集并希望及时完成导出的情况。

如果您没有一个大的数据集,那么请记住,您的输出将是——m个文件的值,因此,如果您要导出一个100行表,您可能希望将——m设置为1,以保持所有数据本地化在一个文件中。

相关内容

  • 没有找到相关文章

最新更新