Search in sources :

Example 11 with EdgeConfig

use of com.hazelcast.jet.config.EdgeConfig in project hazelcast-jet by hazelcast.

the class ExecutionPlanBuilder method createExecutionPlans.

public static Map<MemberInfo, ExecutionPlan> createExecutionPlans(NodeEngine nodeEngine, MembersView membersView, DAG dag, JobConfig jobConfig, long lastSnapshotId) {
    final JetInstance instance = getJetInstance(nodeEngine);
    final int defaultParallelism = instance.getConfig().getInstanceConfig().getCooperativeThreadCount();
    final Collection<MemberInfo> members = new HashSet<>(membersView.size());
    final Address[] partitionOwners = new Address[nodeEngine.getPartitionService().getPartitionCount()];
    initPartitionOwnersAndMembers(nodeEngine, membersView, members, partitionOwners);
    final List<Address> addresses = members.stream().map(MemberInfo::getAddress).collect(toList());
    final int clusterSize = members.size();
    final boolean isJobDistributed = clusterSize > 1;
    final EdgeConfig defaultEdgeConfig = instance.getConfig().getDefaultEdgeConfig();
    final Map<MemberInfo, ExecutionPlan> plans = members.stream().collect(toMap(m -> m, m -> new ExecutionPlan(partitionOwners, jobConfig, lastSnapshotId)));
    final Map<String, Integer> vertexIdMap = assignVertexIds(dag);
    for (Entry<String, Integer> entry : vertexIdMap.entrySet()) {
        final Vertex vertex = dag.getVertex(entry.getKey());
        final ProcessorMetaSupplier metaSupplier = vertex.getMetaSupplier();
        final int vertexId = entry.getValue();
        final int localParallelism = determineParallelism(vertex, metaSupplier.preferredLocalParallelism(), defaultParallelism);
        final int totalParallelism = localParallelism * clusterSize;
        final List<EdgeDef> inbound = toEdgeDefs(dag.getInboundEdges(vertex.getName()), defaultEdgeConfig, e -> vertexIdMap.get(e.getSourceName()), isJobDistributed);
        final List<EdgeDef> outbound = toEdgeDefs(dag.getOutboundEdges(vertex.getName()), defaultEdgeConfig, e -> vertexIdMap.get(e.getDestName()), isJobDistributed);
        final ILogger logger = nodeEngine.getLogger(String.format("%s.%s#ProcessorMetaSupplier", metaSupplier.getClass().getName(), vertex.getName()));
        metaSupplier.init(new MetaSupplierCtx(instance, logger, vertex.getName(), localParallelism, totalParallelism));
        Function<Address, ProcessorSupplier> procSupplierFn = metaSupplier.get(addresses);
        int procIdxOffset = 0;
        for (Entry<MemberInfo, ExecutionPlan> e : plans.entrySet()) {
            final ProcessorSupplier processorSupplier = procSupplierFn.apply(e.getKey().getAddress());
            checkSerializable(processorSupplier, "ProcessorSupplier in vertex '" + vertex.getName() + '\'');
            final VertexDef vertexDef = new VertexDef(vertexId, vertex.getName(), processorSupplier, procIdxOffset, localParallelism, totalParallelism);
            vertexDef.addInboundEdges(inbound);
            vertexDef.addOutboundEdges(outbound);
            e.getValue().addVertex(vertexDef);
            procIdxOffset += localParallelism;
        }
    }
    return plans;
}
Also used : EdgeConfig(com.hazelcast.jet.config.EdgeConfig) JetInstance(com.hazelcast.jet.JetInstance) Util.checkSerializable(com.hazelcast.jet.impl.util.Util.checkSerializable) Address(com.hazelcast.nio.Address) LOCAL_PARALLELISM_USE_DEFAULT(com.hazelcast.jet.core.Vertex.LOCAL_PARALLELISM_USE_DEFAULT) Function(java.util.function.Function) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) Collectors.toMap(java.util.stream.Collectors.toMap) ILogger(com.hazelcast.logging.ILogger) MemberInfo(com.hazelcast.internal.cluster.MemberInfo) Map(java.util.Map) MembersView(com.hazelcast.internal.cluster.impl.MembersView) DAG(com.hazelcast.jet.core.DAG) Edge(com.hazelcast.jet.core.Edge) ProcessorSupplier(com.hazelcast.jet.core.ProcessorSupplier) Integer.min(java.lang.Integer.min) ProcessorMetaSupplier(com.hazelcast.jet.core.ProcessorMetaSupplier) Collection(java.util.Collection) Util.getJetInstance(com.hazelcast.jet.impl.util.Util.getJetInstance) JobConfig(com.hazelcast.jet.config.JobConfig) IPartitionService(com.hazelcast.spi.partition.IPartitionService) MetaSupplierCtx(com.hazelcast.jet.impl.execution.init.Contexts.MetaSupplierCtx) NodeEngine(com.hazelcast.spi.NodeEngine) Vertex(com.hazelcast.jet.core.Vertex) List(java.util.List) Collectors.toList(java.util.stream.Collectors.toList) Entry(java.util.Map.Entry) TopologyChangedException(com.hazelcast.jet.core.TopologyChangedException) Vertex(com.hazelcast.jet.core.Vertex) Address(com.hazelcast.nio.Address) MemberInfo(com.hazelcast.internal.cluster.MemberInfo) ILogger(com.hazelcast.logging.ILogger) ProcessorMetaSupplier(com.hazelcast.jet.core.ProcessorMetaSupplier) HashSet(java.util.HashSet) JetInstance(com.hazelcast.jet.JetInstance) Util.getJetInstance(com.hazelcast.jet.impl.util.Util.getJetInstance) EdgeConfig(com.hazelcast.jet.config.EdgeConfig) ProcessorSupplier(com.hazelcast.jet.core.ProcessorSupplier) MetaSupplierCtx(com.hazelcast.jet.impl.execution.init.Contexts.MetaSupplierCtx)

Example 12 with EdgeConfig

use of com.hazelcast.jet.config.EdgeConfig in project hazelcast-jet by hazelcast.

the class XmlConfigTest method when_edgeDefaultsSpecified_usesSpecified.

@Test
public void when_edgeDefaultsSpecified_usesSpecified() {
    // Given
    Properties properties = new Properties();
    properties.put(XmlJetConfigLocator.HAZELCAST_JET_CONFIG_PROPERTY, "classpath:" + TEST_XML_1);
    // When
    JetConfig jetConfig = XmlJetConfigBuilder.getConfig(properties);
    // Then
    EdgeConfig edgeConfig = jetConfig.getDefaultEdgeConfig();
    assertEquals("queueSize", 999, edgeConfig.getQueueSize());
    assertEquals("packetSizeLimit", 997, edgeConfig.getPacketSizeLimit());
    assertEquals("receiveWindowMultiplier", 996, edgeConfig.getReceiveWindowMultiplier());
}
Also used : EdgeConfig(com.hazelcast.jet.config.EdgeConfig) Properties(java.util.Properties) JetConfig(com.hazelcast.jet.config.JetConfig) Test(org.junit.Test)

Aggregations

EdgeConfig (com.hazelcast.jet.config.EdgeConfig)12 DAG (com.hazelcast.jet.core.DAG)6 Vertex (com.hazelcast.jet.core.Vertex)6 Test (org.junit.Test)6 JobConfig (com.hazelcast.jet.config.JobConfig)5 JetConfig (com.hazelcast.jet.config.JetConfig)4 ProcessorSupplier (com.hazelcast.jet.core.ProcessorSupplier)4 ParallelJVMTest (com.hazelcast.test.annotation.ParallelJVMTest)4 QuickTest (com.hazelcast.test.annotation.QuickTest)4 Function (java.util.function.Function)4 Config (com.hazelcast.config.Config)3 IList (com.hazelcast.collection.IList)2 BiFunctionEx (com.hazelcast.function.BiFunctionEx)2 FunctionEx (com.hazelcast.function.FunctionEx)2 PredicateEx.alwaysTrue (com.hazelcast.function.PredicateEx.alwaysTrue)2 MemberInfo (com.hazelcast.internal.cluster.MemberInfo)2 Job (com.hazelcast.jet.Job)2 SimpleTestInClusterSupport (com.hazelcast.jet.SimpleTestInClusterSupport)2 Traverser (com.hazelcast.jet.Traverser)2 Traversers.traverseItems (com.hazelcast.jet.Traversers.traverseItems)2