Sqoop 导入。可以执行多少个最大映射器
Posted
技术标签:
【中文标题】Sqoop 导入。可以执行多少个最大映射器【英文标题】:Sqoop import. how many max mapper could be executed 【发布时间】:2017-04-04 06:26:05 【问题描述】:在 Sqoop 导入中最多可以执行多少个映射器。此外,在使用 sqoop 导入时,是否存在减速器正在运行的情况。
【问题讨论】:
Sqoop
可能有减速器根据要求。请检查我的答案。
【参考方案1】:
1.Sqoop导入最多可以执行多少个mapper?
增加映射器的数量会导致更多的 并发数据传输任务,'这可以'导致更快的工作 完成。
它并不总是能更快地完成工作。在增加 映射器的数量,有一个点你会完全饱和 你的数据库。超过此点增加映射器的数量 不会导致更快的工作完成;事实上,它会有 相反的效果,因为您的数据库服务器花费更多时间来处理上下文 切换而不是提供数据。
映射器的最佳数量取决于许多变量:
1.数据库类型。
2.用于数据库服务器的硬件。
对您的数据库需要服务的其他请求的影响。
从少量映射器开始,以便您找到最佳的 您的环境和用例的并行度。
2.另外,在使用 sqoop 导入时,是否存在使用减速器的情况 正在运行。
聚合需要reducer。sqoop的reducer数量为0, 因为它只是一个运行仅 MAP 的作业,将数据转储到 高清文件系统。我们没有聚合任何东西。
【讨论】:
【参考方案2】:最大映射器数
它可以是任意数字,但应根据数据、资源和所需的并行度来设置。更多的映射器并不意味着更高的性能。
有没有运行reducer的情况
是的 - 有特殊情况,当sqoop作业可能有reducer。
这样的条件之一是documented here。
sqoop export \
-Dmapred.reduce.tasks=2
-Dpgbulkload.bin="/usr/local/bin/pg_bulkload" \
-Dpgbulkload.input.field.delim=$'\t' \
-Dpgbulkload.check.constraints="YES" \
-Dpgbulkload.parse.errors="INFINITE" \
-Dpgbulkload.duplicate.errors="INFINITE" \
--connect jdbc:postgresql://pgsql.example.net:5432/sqooptest \
--connection-manager org.apache.sqoop.manager.PGBulkloadManager \
--table test --username sqooptest --export-dir=/test -m 2
mapred.reduce.tasks
- 暂存的 reduce 任务数。这 默认值为 1。每个任务都在单个事务中进行暂存。
【讨论】:
【参考方案3】:Sqoop 作业默认使用 4
映射任务。可以通过将 -m
或 --num-mappers
参数传递给作业来修改它。 Sqoop 对映射器的数量没有最大限制,但与数据库的并发连接总数是一个需要考虑的因素。阅读有关在 Sqoop 中控制并行性的更多信息here。
如果表没有定义主键,并且没有将--split-by
参数提供给sqoop命令,则映射器的数量应显式设置为1
。
Sqoop 作业没有任何 reduce 任务。
【讨论】:
以上是关于Sqoop 导入。可以执行多少个最大映射器的主要内容,如果未能解决你的问题,请参考以下文章