限定符和类型 | 类和说明 |
---|---|
static class |
JobConf.JobState
作业阶段,包括定义阶段和运行阶段.
|
构造器和说明 |
---|
JobConf()
构造一个 ODPS Graph 作业配置.
|
JobConf(boolean loadDefaults)
已过时。
|
JobConf(Configuration conf)
构造一个 ODPS Graph 作业配置.
|
JobConf(Configuration conf,
JobConf.JobState js)
已过时。
|
JobConf(String config)
已过时。
|
限定符和类型 | 方法和说明 |
---|---|
void |
addCacheResources(String resourceNames)
声明本作业使用的资源.
|
void |
addCacheResourcesToClassPath(String resourceNames)
声明本作业使用的 jar 包资源.
|
void |
addInput(TableInfo tbl)
增加作业输入.
|
void |
addInput(TableInfo tbl,
String[] cols)
增加作业输入,支持指定读取部分列.
|
void |
addOutput(TableInfo tbl)
增加给定 label 的作业输出,覆盖原数据.
|
void |
addOutput(TableInfo tbl,
boolean overwrite)
增加给定 label 的作业输出,可以设置是否覆盖原数据.
|
Class<? extends AggregatorOwnerPartitioner> |
getAggregatorOwnerPartitionerClass()
获取指定的 AggregatorOwnerPartitioner 的实现类.
|
int |
getAggregatorTreeDepth()
获取树状Aggregator的深度
|
boolean |
getBroadcastMessageEnable()
获取是否开启广播。
|
Class<? extends Combiner> |
getCombinerClass()
获取指定的 Combiner 的实现类.
|
Class<? extends ComputingVertexResolver> |
getComputingVertexResolver()
获取指定的图迭代计算阶段的冲突处理实现类.
|
Class<? extends VertexResolver> |
getComputingVertexResolverClass()
已过时。
use
getComputingVertexResolver() instead |
Class<? extends GraphLoader> |
getGraphLoaderClass()
获取指定的
GraphLoader 实现. |
int |
getJobPriority()
获取作业优先级,范围:[0, 9],默认0.
0为最高,9为最低.
|
Class<? extends VertexResolver> |
getLoadingVertexResolver()
获取指定的图加载阶段的图拓扑修改及冲突处理实现类.
|
Class<? extends VertexResolver> |
getLoadingVertexResolverClass()
已过时。
use
getLoadingVertexResolver() instead |
int |
getMaxIteration()
获取指定的最大迭代次数,默认 -1,小于或等于 0 时表示最大迭代次数不作为作业终止条件.
|
float |
getMemoryThreshold()
获取使用disk-backed的内存阀值。
|
int |
getNumWorkers()
获取期望的节点数。
|
Class<? extends Partitioner> |
getPartitionerClass()
获取指定的 Partitioner 的实现类.
|
boolean |
getRuntimePartitioning()
判断是否运行时对图进行重新分片,默认 true.
|
long |
getSplitSize()
获取指定的切分大小,单位 MB,默认 64.
|
boolean |
getSyncBetweenResolveCompute()
获取是否在Resolve与Compute之间的同步
|
boolean |
getUseDiskBackedMessage()
获取是否开启disk-backed message
|
boolean |
getUseDiskBackedMutation()
获取是否开启disk-backed mutation
|
boolean |
getUseMultipleInputOutput()
获取单个点接收到的mutation和message是否可以超过2G.
|
boolean |
getUseTreeAggregator()
获取是否开启树状Aggregator功能.
|
Class<? extends Vertex> |
getVertexClass()
获取指定的 Vertex 的实现类.
|
Class<? extends WorkerComputer> |
getWorkerComputerClass()
获取指定的 WorkerComputer 的实现类.
|
int |
getWorkerCPU()
获取 Worker CPU,默认 200,表示两个 CPU 核.
|
int |
getWorkerMemory()
获取 Worker 内存设置,单位MB,默认 4096.
|
void |
setAggregatorClass(Class<? extends Aggregator>... cls)
设置多个 Aggregator 的实现类.
|
void |
setAggregatorClass(Class<? extends Aggregator> cls)
设置 Aggregator 的实现类.
|
void |
setAggregatorOwnerPartitionerClass(Class<? extends AggregatorOwnerPartitioner> cls)
设置 AggregatorOwnerPartitioner 的实现.
|
void |
setAggregatorTreeDepth(int depth)
设置树状Aggregator的深度.
|
void |
setBroadcastMessageEnable(boolean broadcastMessageEnable)
设置是否开启广播消息,如果开启,在调用
ComputeContext.sendMessageToNeighbors(Vertex,
com.aliyun.odps.io.Writable)
时,以广播的方式将消息发送到点的邻居,默认关闭。 |
void |
setCheckpointSuperstepFrequency(int frequency)
设置存储checkpoint的频率
默认不设置表示按系统默认的方式做checkpoint,即间隔10分钟做一次checkpoint,如果设置,合法值是大于或等于0的整数,
0表示不进行checkpoint,大于0,表示期望每隔n轮superstep做checkpoint,若n次superstep的时间小于系统checkpoint
时间间隔(10分钟),也仍然等到10分钟后再做checkpoint.
|
void |
setCombinerClass(Class<? extends Combiner> cls)
设置 Combiner 的实现.
|
void |
setComputingVertexResolver(Class<? extends ComputingVertexResolver> cls)
设置图迭代计算阶段的冲突处理实现类,继承
VertexResolver . |
void |
setComputingVertexResolverClass(Class<? extends VertexResolver> cls)
已过时。
use
setComputingVertexResolver(Class) instead |
void |
setGraphLoaderClass(Class<? extends GraphLoader> cls)
设置图加载实现类,继承
GraphLoader . |
void |
setJobPriority(int priority)
设置作业优先级,范围:[0, 9],默认0.
0为最高,9为最低.
|
void |
setLoadingVertexResolver(Class<? extends LoadingVertexResolver> cls)
设置图加载阶段的图拓扑修改及冲突处理实现类,继承
LoadingVertexResolver . |
void |
setLoadingVertexResolverClass(Class<? extends VertexResolver> cls)
已过时。
use
setLoadingVertexResolver(Class) instead |
void |
setLogLevel(String level)
获取任务的日志级别,包括:ALL,DEBUG,INFO,WARN,ERROR,FATAL,OFF 默认为INFO
|
void |
setMaxIteration(int maxIteration)
设置最大迭代次数,默认 -1,小于或等于 0 时表示最大迭代次数不作为作业终止条件.
|
void |
setMemoryThreshold(float threshold)
设置垃圾回收后开始使用disk-backed的内存阀值,默认0.5。
|
void |
setNumWorkers(int n)
设置作业并行执行的节点数。
|
void |
setPartitionerClass(Class<? extends Partitioner> cls)
设置 Partitioner 的实现.
|
void |
setRuntimePartitioning(boolean runtimePartitioning)
设置是否运行时对图进行重新分片,默认 true.
|
void |
setSplitSize(long size)
设置输入的切分大小,单位 MB,默认 64.
|
void |
setSyncBetweenResolveCompute(boolean is_sync)
设置是否在Resolve与Compute之间同步
当设置了ComputingVertexResolver后
Resolve和Compute之间会有统计信息的变更(totalVertxNum, totalEdgeNum等)
需要多一轮sync操作,当确认自己对这些信息不敏感时,可以选择关掉
默认打开sync
|
void |
setUseDiskBackedMessage(boolean useDiskBackedMessage)
设置是否开启disk-backed message,如果开启,则在内存到达阀值后尝试使用磁盘存储收到的message,默认关闭。
|
void |
setUseDiskBackedMutation(boolean useDiskBackedMutation)
设置是否开启disk-backed mutation,如果开启,则在内存到达阀值后尝试使用磁盘存储收到的mutation,默认关闭。
|
void |
setUseMultipleInputOutput(boolean useMultipleInputOutput)
设置为true后,单个点接收到的message和mutation可以超过2G.
|
void |
setUseTreeAggregator(boolean useTreeAggregator)
设置是否开启树状Aggregator功能.
|
void |
setVertexClass(Class<? extends Vertex> cls)
设置 Vertex 的实现.
|
void |
setWorkerComputerClass(Class<? extends WorkerComputer> cls)
设置 WorkerComputer 的实现.
|
void |
setWorkerCPU(int cpu)
设置 Worker CPU,默认 200,表示两个 CPU 核.
|
void |
setWorkerMemory(int mem)
设置 Worker 内存,单位MB,默认 4096.
|
addDefaultResource, addResource, addResource, addResource, clear, get, get, getBoolean, getClass, getClass, getClassByName, getClasses, getClassLoader, getConfResourceAsInputStream, getConfResourceAsReader, getFile, getFloat, getInt, getLong, getRange, getRaw, getResource, getStringCollection, getStrings, getStrings, iterator, readFields, reloadConfiguration, set, setBoolean, setBooleanIfUnset, setClass, setClassLoader, setFloat, setIfUnset, setInt, setLong, setQuietMode, setStrings, size, toString, write, writeXml
forEach, spliterator
public JobConf()
public JobConf(Configuration conf)
conf
- 配置管理器@Deprecated public JobConf(Configuration conf, JobConf.JobState js)
conf
- 配置管理器js
- 作业初始状态,定义或运行状态@Deprecated public JobConf(String config)
<configuration> <property> <name>com.mycomp.xxx</name> <value>xxx</value> </property> ... ... </configuration>
config
- Configuration-format XML 配置文件@Deprecated public JobConf(boolean loadDefaults)
loadDefaults
- 指示是否加载 CLASSPATH 路径上的 odps-graph.xml 配置文件public void addCacheResources(String resourceNames)
只有声明的资源才能在运行时通过上下文对象读取。
resourceNames
- 资源名称列表,多个资源用逗号分隔WorkerContext
,
cache.DistributedCache
public void addCacheResourcesToClassPath(String resourceNames)
只有声明的 jar 包资源才能在运行时加载到CLASSPATH
resourceNames
- 资源名称列表,多个资源用逗号分隔public void addInput(TableInfo tbl) throws IOException
作业运行过程中,框架会读取输入表的数据为一条条 Record
,传给 GraphLoader
进行图的加载。
示例:
GraphJob job = new GraphJob(); job.addInput(TableInfo.builder().tableName("tbl1").build()); job.addInput(TableInfo.builder().tableName("tbl2").partSpec("ds=1").build()); job.addInput(TableInfo.builder().tableName("tbl3").partSpec("ds=1/pt=2").build()); job.addInput(TableInfo.builder().tableName("tbl3").cols(new String[] {"col2", "col0"}).build());
限制:
tbl
- 输入表信息IOException
GraphLoader
public void addInput(TableInfo tbl, String[] cols) throws IOException
作业运行过程中,框架会读取输入表的数据为一条条 Record
,传给 GraphLoader
进行图的加载。
本方法支持只读取输入表的部分列,一方面,ODPS
的表使用列存储,读取部分列只扫描部分列的数据,可以改善性能;另一方面,只有读取部分列的权限,这时也需要指定列。当指定读取的列时,
GraphLoader
处理的 Record
只包含指定的列,且顺序一致。
示例:
GraphJob job = new GraphJob(); job.addInput(TableInfo.builder().tableName("tbl1").build(), new String[] { "col2", "col0" }); job.addInput(TableInfo.builder().tableName("tbl1").partSpec("ds=1/pt=2").build(), new String[] { "col2", "col0" });
限制:
tbl
- 输入表信息cols
- 指定读取的列IOException
GraphLoader
public void addOutput(TableInfo tbl) throws IOException
tbl
- 输出表信息IOException
public void addOutput(TableInfo tbl, boolean overwrite) throws IOException
ODPS Graph 作业支持多路输出(其中一路为默认输出,无需指定 label),支持 INSERT OVERWRITE (覆盖)和 INSERT
INTO (追加)语义。在运行时可以通过
WorkerContext.write(com.aliyun.odps.io.Writable...)
或
WorkerContext#write(String, com.aliyun.odps.io.Writabl...)
方法写记录到此输出。
示例:
// 定义输出 GraphJob job = new GraphJob(); job.addOutput(TableInfo.builder().tableName("multi_out_t1").build()); job.addOutput(TableInfo.builder().tableName("multi_out_t2").partSpec("a=1/b=1").label("out1").build()); job.addOutput(TableInfo.builder().tableName("multi_out_t2").partSpec("a=2/b=2").label("out2").build()); job.addOutput(TableInfo.builder().projectName("proj").tableName("multi_out_t3").label("out3").build, true); //输出记录 public static class VertexClass extends Vertex<...> { ... public void cleanup(WorkerContext<...> context) throws IOException { context.write(getId(), getValue()); context.write("out1", ...); context.write("out2", ...); context.write("out3", ...); } }
注意:
tbl
- 输出表信息overwrite
- 是否覆盖原数据IOException
public void setJobPriority(int priority)
priority
- 作业优先级,范围:[0, 9],默认0public int getJobPriority()
public long getSplitSize()
public void setSplitSize(long size)
size
- 切分大小public int getWorkerCPU()
public void setWorkerCPU(int cpu)
cpu
- CPU 资源,100 为一个 CPU 核public void setWorkerMemory(int mem)
mem
- 内存资源,单位MBpublic int getWorkerMemory()
public void setLogLevel(String level)
level
- 日志级别public void setGraphLoaderClass(Class<? extends GraphLoader> cls)
GraphLoader
.
Graph Worker 载入图时会使用用户自定义的 GraphLoader
解析表记录为图的点或边。
cls
- GraphLoader 的实现类public Class<? extends GraphLoader> getGraphLoaderClass()
GraphLoader
实现.public void setVertexClass(Class<? extends Vertex> cls)
cls
- Vertex 的实现类public void setWorkerComputerClass(Class<? extends WorkerComputer> cls)
cls
- WorkerComputer 的实现类public Class<? extends WorkerComputer> getWorkerComputerClass()
public void setCombinerClass(Class<? extends Combiner> cls)
cls
- Combiner 的实现类public Class<? extends Combiner> getCombinerClass()
public void setPartitionerClass(Class<? extends Partitioner> cls)
cls
- Partitioner 的实现类public Class<? extends Partitioner> getPartitionerClass()
public void setAggregatorClass(Class<? extends Aggregator> cls)
如果需要设置多个 Aggregator,请使用 setAggregatorClass(Class...)
接口。
cls
- Aggregator 的实现类public void setAggregatorClass(Class<? extends Aggregator>... cls)
cls
- 多个 Aggregator 的实现类public void setAggregatorOwnerPartitionerClass(Class<? extends AggregatorOwnerPartitioner> cls)
cls
- AggregatorOwnerPartitioner 的实现类public Class<? extends AggregatorOwnerPartitioner> getAggregatorOwnerPartitionerClass()
public void setUseTreeAggregator(boolean useTreeAggregator)
useTreeAggregator
- 是否开启树状Aggregator功能public boolean getUseTreeAggregator()
public void setAggregatorTreeDepth(int depth)
depth
- 树状Aggregator的深度public int getAggregatorTreeDepth()
public void setRuntimePartitioning(boolean runtimePartitioning)
Graph 作业运行时,每个 Worker 负责装载部分点集,
#setPartitionerClas(Class)
分发到对应的 Worker 上,这时每个 Worker
装载的点集与迭代开始运行时的点集常常不同;
ComputeContext.sendMessage(com.aliyun.odps.io.WritableComparable,
com.aliyun.odps.io.Writable)
接口将不能使用,因为 Vertex 在哪个 Worker 上并不由 Partitioner 决定,sendMessage 无法知道该消息发给哪个
Worker,有些应用如 Kmeans 不需要进行再次分发;
runtimePartitioning
- 是否运行时对图进行重新分片public boolean getRuntimePartitioning()
public void setMaxIteration(int maxIteration)
maxIteration
- 最大迭代次数public int getMaxIteration()
public void setLoadingVertexResolver(Class<? extends LoadingVertexResolver> cls)
LoadingVertexResolver
.
框架提供一个默认实现 DefaultLoadingVertexResolver
,用于处理图加载过程中发现的图拓扑修改及冲突.
cls
- 指定的LoadingVertexResolver
实现类@Deprecated public void setLoadingVertexResolverClass(Class<? extends VertexResolver> cls)
setLoadingVertexResolver(Class)
insteadVertexResolver
.
框架提供一个默认实现 DefaultLoadingVertexResolver
,用于处理图加载过程中发现的冲突.
cls
- 指定的VertexResolver
实现类public Class<? extends VertexResolver> getLoadingVertexResolver()
LoadingVertexResolver
实现类@Deprecated public Class<? extends VertexResolver> getLoadingVertexResolverClass()
getLoadingVertexResolver()
insteadVertexResolver
实现类@Deprecated public void setComputingVertexResolverClass(Class<? extends VertexResolver> cls)
setComputingVertexResolver(Class)
insteadVertexResolver
.
框架提供一个默认实现 DefaultComputingVertexResolver
,用于处理迭代计算中发现的冲突.
cls
- 指定的VertexResolver
实现类@Deprecated public Class<? extends VertexResolver> getComputingVertexResolverClass()
getComputingVertexResolver()
insteadVertexResolver
实现类public void setComputingVertexResolver(Class<? extends ComputingVertexResolver> cls)
VertexResolver
.
框架提供一个默认实现 DefaultComputingVertexResolver
,用于处理迭代计算中发现的冲突.
cls
- 指定的VertexResolver
实现类public Class<? extends ComputingVertexResolver> getComputingVertexResolver()
ComputingVertexResolver
实现类public void setCheckpointSuperstepFrequency(int frequency)
默认不设置表示按系统默认的方式做checkpoint,即间隔10分钟做一次checkpoint,如果设置,合法值是大于或等于0的整数, 0表示不进行checkpoint,大于0,表示期望每隔n轮superstep做checkpoint,若n次superstep的时间小于系统checkpoint 时间间隔(10分钟),也仍然等到10分钟后再做checkpoint.
frequency
- checkpoint频率public void setSyncBetweenResolveCompute(boolean is_sync)
当设置了ComputingVertexResolver后 Resolve和Compute之间会有统计信息的变更(totalVertxNum, totalEdgeNum等) 需要多一轮sync操作,当确认自己对这些信息不敏感时,可以选择关掉 默认打开sync
is_sync
- 是否在Resolve与Compute之间同步public boolean getSyncBetweenResolveCompute()
public void setNumWorkers(int n)
getSplitSize()
和作业输入数据量计算得到。
此接口与 setSplitSize(long)
配合使用,可以提高数据的载入速度。
假设 setNumWorkers 为 workerNum, setSplitSize 为 splitSize, 总输入字节数为 inputSize,
则输入被切分后的块数 splitNum = inputSize / splitSize,workerNum 和 splitNum 之间的关系:
n
- 期望的节点数public int getNumWorkers()
public void setMemoryThreshold(float threshold)
threshold
- 内存阀值public float getMemoryThreshold()
public void setUseDiskBackedMessage(boolean useDiskBackedMessage)
useDiskBackedMessage
- 是否开启disk-backed messagepublic boolean getUseDiskBackedMessage()
public void setUseDiskBackedMutation(boolean useDiskBackedMutation)
useDiskBackedMutation
- 是否开启disk-backed mutationpublic boolean getUseDiskBackedMutation()
public void setBroadcastMessageEnable(boolean broadcastMessageEnable)
ComputeContext.sendMessageToNeighbors(Vertex,
com.aliyun.odps.io.Writable)
时,以广播的方式将消息发送到点的邻居,默认关闭。broadcastMessageEnable
- 是否开启广播public boolean getBroadcastMessageEnable()
public void setUseMultipleInputOutput(boolean useMultipleInputOutput)
public boolean getUseMultipleInputOutput()
Copyright © 2015 Alibaba Cloud Computing. All rights reserved.