2017-04-13 1 views
2

나무로 설명 할 수있는 방정식이 있습니다. 따라서 나뭇잎은 부모 꼭지점이 수학 연산자 인 값이며 계산이 끝나면 부모 꼭지점에 다른 값이 나타나고 부모 꼭지점이있는 잎이됩니다 (수학 연산자처럼). 나무는 균형이 잡히지 않고 당신이 추구하는 지점에 따라 깊이가 고르지 않을 수 있습니다.Apache Ignite지도 방정식 해결 방법

내가 알아야 할 것은 아파치 점화를 사용하는 방법이다. (나는 부모의 정점과 함께) 모든 잎을 다른 깊이로 보내는 것으로 병렬 처리하기 위해 아파치 점화를 사용한다. 계산 등등.

내가이 기술을 잘못 사용하고 있습니까?

이 문제는지도 - 축소 기술에 적합하지 않습니까?

이벤트 전파 기술이 내장 된 최고의 기술은 무엇일까요?

내가 현상금을 넣어 단지 1 점 짧은 해요 ...

편집 : 추가 현상금. 본질적으로 필자의 요구 사항은 분산 컴퓨팅 솔루션의 하위 하위 문제를지도로 표시되는 유사한 하위 문제보다 계산하는 것입니다. 어떤 해결책이 있습니까? 어떤 생각이라도 감사합니다.

+0

신뢰할 수 있고 공식적인 출처는 API를 의미합니다. – Ram

답변

3

Ignite로 가능합니다. ComputeTaskAdaptermap()reduce() 메소드를 구현해야합니다. 첫 번째 방법은 작업을 노드에 매핑하고 두 번째 방법은 계산 결과를 수집합니다. example을 참조하십시오.

이전에 반환 된 결과 모음을 줄이면 다시 실행할 수 있습니다.

데이터 전송량을 줄이려면 캐시를 사용하고 중간 데이터를 저장할 수 있습니다. 태스크를 데이터를 필요로하는 노드에 맵핑하면, 모든 항목이 로컬로 해당 태스크에 사용 가능해 지므로 원격 노드에서 태스크를 u 리할 필요가 없습니다. 당신이 여기 dataNode

ClusterNode dataNode = ignite.affinity("cacheName").mapKeyToNode("key");

를 사용할 수 이러한 방식으로 작업을지도하려면이 키에 대한 기본 노드, 그리고 작업이 시작 될 경우, 전체 항목이 로컬로 사용할 수 있습니다.

+0

고마워요! 나는 그것이가는 길이다는 것을 깨닫는다. 그러나 문제는 조금 더 까다 롭다. 당신이 보여준 _dataNode_는 도움이되지만지도 작업을 보낼 때마다'var1 var2' 형태로 존재할 것이며,'var1'은 한 노드에 있고 다른 노드에는'var2'가있을 수 있습니다. 결과가 동일한 수준의 잎에서 나온 경우에만 작업을 줄여야합니다. 그래서 결과를 반복적으로 처리하고 결합하기 위해 결과를 외부에 저장해야합니다. 나는 정적 클래스에서 그렇게 할 수 있지만 map/reduce를 반복적으로 수행 할 수 있으며, 방정식 트리의 모든 레벨이 완료 될 때까지 루프 에서처럼 수행 할 수 있습니까? – Ram

+0

나는 귀하의 답변에 맞는 것으로 표시했습니다. 그것은 내일 자동으로 현상금을 줄 것이다. 당신이 내 질문의 나머지 부분에 대답 할 수있는 기회? – Ram

+0

당신은 각 서브 트리가 단일 노드에 바인딩되는 하위 트리에서 작업 트리를 분할해야하므로 클러스터의 전체 작업을 병렬화 할 수 있어야한다고 생각합니다. 나는 사용법을 추측한다. 클라이언트는 로컬로만 맵핑을 반복적으로 수행하는 노드 태스크에 맵핑합니다. 각 하위 트리가 완료되면 최종 노드는 마스터 노드로 처리되고 최종 처리가 수행됩니다. 감사! :) –

관련 문제