0

Datameer 中的几个提取作业(快速 ETL/BI 工具,位于 hadoop 之上)正在从 salesforce 对象中读取数据。最大提取为 1.4 GB(任务对象),最小提取为 96 MB(帐户对象)。Datameer 使用基于 REST API 的连接器,向连接器提供 SOQL 查询并相应地获取记录 ( https://documentation.datameer.com/documentation/display/DAS60/Salesforce )。

Datameer 编译作业并将执行移交给执行框架 (Tez)。也没有特定于作业的配置。

所有 saleforce 提取作业都使用 1 个 Map 任务运行。

但,

datameer 中还有其他提取作业,它们从 sftp 服务器上的平面文件(50 - 200 MB)读取数据并使用 3-5 个映射任务。

关于 SOQL:https ://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_sharing_batch_size.htm SOQL 每批最多提取 2000 条记录

我的问题 :

  • 考虑到平面文件中的数据与多个映射任务一起运行,问题是否对应于 SOQL 批量大小,每个请求仅提取 2000 条记录,因此仅分配 1 个映射器。
  • 在处理像 salesforce 这样的源时,MR 程序如何确定输入提取的总大小,甚至是基于云的
    数据库。

环境信息:Hortonwork 2.7.1

Cores Per Data node=8

RAM per Data node=64GB

No of datanodes = 6

Block Size : 128 MB

Input Split info:

mapreduce.input.fileinputformat.split.maxsize=5368709120 (5 GB)

mapreduce.input.fileinputformat.split.minsize=16777216 (16 MB)

Execution Framework: Tez

Memory Sizes: <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property><property> <name>mapreduce.reduce.memory.mb</name> <value>2048</value> </property><property> <name>mapreduce.map.java.opts</name> <value>-Xmx1228m</value> </property><property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx1638m</value> </property>

<property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1024</value> </property><property> <name>yarn.app.mapreduce.am.command-opts</name> <value>-Xmx819m -Dhdp.version=${hdp.version}</value> </property>

Compression is enabled:

<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value> </property> mapreduce.output.fileoutputformat.compress=true

mapreduce.output.fileoutputformat.compress.type=BLOCK

mapreduce.map.output.compress=true

mapred.map.output.compression.type=BLOCK
4

1 回答 1

0

Datameer 支持人员提出了该问题,他们提供了以下回复。

根本原因分析:

“只能使用 1 个映射器。首先,它用于无法从创建多个拆分中受益的 Web 服务。这可能是因为服务不支持拆分,或者数据太小以至于作业无法从拆分中受益。”</p>

背景:

Datameer 使用 salesforce 连接器,实习生使用 REST API 调用,可以在单个请求中获取最多 2000 条记录。REST API 调用是同步的,并且返回结果的时间限制为 5 秒。

于 2017-02-14T00:52:45.293 回答