2015-01-17 5 views
-1

나는 (세미) 빅 데이터 분석 어플리케이션을 만들고 있습니다. 나는 apache-mahout를 이용하고있다. 나는 자바에 대해 4GB의 메모리로 제한된다는 사실에 대해 우려하고있다. 이 4GB 제한은 현대 컴퓨터가 처분 할 수있는 메모리 낭비입니다. 해결책으로 RMI 또는 MapReduce의 일부 형식을 사용할 것을 고려 중입니다. (나도 아직 경험이 없다.)JAVA 하나의 머신에서 분산 처리 (아이러니 컬하게 알고 있습니다)

첫 번째 : 하나의 컴퓨터에서 여러 개의 JVM을 실행하고 대화를하는 것이 그럴싸한가요? 그렇다면 위에서 언급 한 두 가지 아이디어로 올바른 방향으로 향하고 있습니까? 또한

,

, 나는 "어떤게 좋을까 '를 묻는 피할이 객관적인 질문을 계속 시도에서

대신 물어 것이다

반드시 작동 방식에 (주요 차이점은 무엇

1) 내부적으로, 그러나 그들이 나를 어떻게 구현할 것인가) 사용자 :

2) 하나 또는 다른 것에 단점이나 이점이 있습니까? 그리고 어느 하나가 사용되는 특정 상황이 있습니까?

3) 내 필요에 따라 다른 대안이 있습니까?

+0

4GB는 32 비트 워드 크기 때문입니다. 그것은 '자바'의 문제가 아닙니다. – EJP

답변

0

먼저 사전에

덕분에, Understanding max JVM heap size - 32bit vs 64bit 체크 아웃, 4GB의 제한을 다시. 32 비트 시스템에서는 4GB가 최대이지만 64 비트 시스템에서는 한계가 훨씬 더 높습니다.

동일한 컴퓨터에서 여러 jvm을 실행하고 통신하는 것이 일반적인 구성입니다. 두 가지 좋은 예가 IBM Websphere와 Oracle의 Weblogic 애플리케이션 서버입니다. 그들은 하나의 jvm에서 관리 콘솔을 실행하며 3 개 이상의 "작동하는"jvm을 제어하는 ​​것이 일반적이지 않습니다.

이렇게하면 전체 시스템 반응성에 영향을 미치지 않고 각 JVM이 독립적으로 실패 할 수 있습니다. 지원 팀이 미친 듯이 사물을 고치려고 노력하는 동안 일부 "일하는"jvm이 여전히 일을하고 있기 때문에 복구는 최종 사용자에게 투명합니다.

당신은 RMI와 MapReduce 둘 다 언급했지만 아키텍처 (통신)의 동일한 슬롯을 채우는 것을 의미합니다. RMI는 통신 메커니즘이지만 MapReduce는 작업로드 관리 전략입니다. 일반적으로 MapReduce 환경은 (모든) 통신 메커니즘을 사용하는 것에 달려 있지만, 그 자체는 아닙니다.

통신 레이어의 경우 RMI, 웹 서비스, 베어 소켓, MQ, 공유 파일 및 악명 높은 "스니커 넷"중에서 선택할 수 있습니다. 대개는 RMI를 부끄러워하기 때문에 RMI를 멀리하는 것이 좋습니다. 예상치 못한 일이 발생하지 않는 한 작동하지만 바쁜 생산 환경에서는 예기치 않은 문제가 발생할 수 있습니다. 이와 같이 RMI를 기반으로 구축 된 많은 안정적이고 효율적인 대규모 시스템이 있습니다.

크로스 계층 통신을 위해 이번 주에 세계로 나아갈 방향은 스프링 통합 또는 퓨즈와 같은 것 위에있는 SOA입니다. SOA는 방정식을 벗어나는 의사 소통 메커니즘을 추상화하여 여러분이 일을 더 많이하거나 덜 걸리는 것을 허용합니다.

MapReduce (MR)는 일괄 처리 작업을 구성하는 방법입니다. MR 알고리즘 자체는 기본적으로 입력 데이터를 입력시 한 묶음의지도로 변환 한 다음 출력을 생성하는 데 필요한 최소량으로 줄입니다.MR 환경은 일반적으로 작업을 수신하고 작업의 작업을 네트워크 주변의 산만 한 "작업자 꿀벌"에게 보내는 작업 부하 관리자의 통제를받습니다. 통신 메커니즘은 MR 라이브러리 또는 실행되는 컨테이너 (들)에 의해 정의 될 수 있습니다.

이것이 도움이됩니까?

+0

예 매우 유용합니다! – sbc