KR101573112B1 - 데이터 분배 방법 및 장치 - Google Patents
데이터 분배 방법 및 장치 Download PDFInfo
- Publication number
- KR101573112B1 KR101573112B1 KR1020130070582A KR20130070582A KR101573112B1 KR 101573112 B1 KR101573112 B1 KR 101573112B1 KR 1020130070582 A KR1020130070582 A KR 1020130070582A KR 20130070582 A KR20130070582 A KR 20130070582A KR 101573112 B1 KR101573112 B1 KR 101573112B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- nodes
- node
- performance
- processing capability
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4831—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority
- G06F9/4837—Task transfer initiation or dispatching by interrupt, e.g. masked with variable priority time dependent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
데이터 분배 방법 및 장치가 개시된다. 데이터 분배 방법은, 노드들의 성능을 인식하는 단계, 노드들의 성능을 기반으로 노드들의 데이터 처리 능력을 분석하는 단계, 및 데이터 처리 능력에 기초하여 노드들에 데이터를 할당하는 단계를 포함한다. 따라서, 리듀스 단계에서 리듀스 데이터 처리 효율을 향상시킬 수 있다.
Description
본 발명은 데이터 분배 방법 및 장치에 관한 것으로, 더욱 상세하게는 맵리듀스 모델에서 데이터를 분산하여 처리하기 위한 데이터 분배 방법 및 장치에 관한 것이다.
하둡(hadoop)은 빅 데이터(big data)를 처리하기 위해 사용되는 기술 중 하나로, 크게 하둡 분산 파일 시스템(hadoop distributed file system, HDFS)과 맵 리듀스(map reduce)로 구성된다.
맵 리듀스는 실제 빅 데이터를 처리하는 프로그램으로서, 맵 단계와 리듀스 단계로 구분할 수 있다. 맵 단계에서는 입력 데이터를 키-밸류(key-value)로 매핑(mapping)하며, 특정 키에 대한 밸류들을 병합하여 중간 데이터로 출력한다. 리듀스 단계에서는 맵 단계를 통해 생성된 중간 데이터를 입력으로 받아 사용자가 원하는 방향으로 최종 분석, 처리하여 그 결과를 출력한다.
맵 단계에서, 처리해야하는 데이터의 크기에 따라 맵 데이터(task)의 개수가 결정되며, 맵 노드(node) 1개당 복수의 맵 데이터가 할당될 수 있다. 맵 노드는 하나의 맵 데이터의 수행을 완료한 후 다음 맵 데이터를 수행한다. 이때, 성능이 좋은 맵 노드는 성능이 나쁜 맵 노드보다 맵 데이터의 처리 속도가 빠르므로, 더 많은 맵 데이터를 처리하게 된다. 결국, 맵 단계에서 모든 맵 노드들의 작업시간은 거의 균등하게 끝나게 된다.
리듀스 단계에서, 리듀스 노드 1개당 1개의 리듀스 데이터가 할당될 수 있으며, 이에 따라 모든 리듀스 노드들은 균등한 크기를 가지는 리듀스 데이터를 가지게 된다. 리듀스 노드들이 서로 다른 성능을 가지는 경우, 상대적으로 성능이 좋은 리듀스 노드는 성능이 나쁜 리듀스 노드보다 작업 속도가 빠르므로, 리듀스 데이터를 보다 빠르게 처리할 수 있다. 결국, 성능이 좋은 리듀스 노드는 상대적으로 빠른 시간 내에 리듀스 데이터를 처리하지만 성능이 나쁜 리듀스 노드는 리듀스 데이터를 처리하는데 상대적으로 많은 시간이 소요되므로, 리듀스 노드들 간의 작업시간의 차이가 존재하게 되며, 이에 따라 리듀스 단계에서 리듀스 데이터 처리 효율이 저하되는 문제점이 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 노드의 성능에 기초하여 데이터를 가변적으로 할당하는 데이터 분배 방법을 제공하는 데 있다.
상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은 노드의 성능에 기초하여 데이터를 가변적으로 할당하는 데이터 분배 장치를 제공하는 데 있다.
상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 데이터 분배 방법은, 노드들의 성능을 인식하는 단계, 상기 노드들의 성능을 기반으로 상기 노드들의 데이터 처리 능력을 분석하는 단계, 및 상기 데이터 처리 능력에 기초하여 상기 노드들에 데이터를 할당하는 단계를 포함한다.
여기서, 상기 노드들의 데이터 처리 능력을 분석하는 단계는, 상기 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출하는 단계, 및 산출된 시간을 기반으로 상기 노드들의 데이터 처리 능력을 판단하는 단계를 포함할 수 있다.
여기서, 상기 노드들에 데이터를 할당하는 단계는, 상기 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성하는 단계, 및 생성된 데이터를 각 노드에 할당하는 단계를 포함할 수 있다.
여기서, 상기 생성된 데이터를 각 노드에 할당하는 단계는, 하나의 노드에 하나의 데이터를 할당할 수 있다.
여기서, 상기 노드들에 데이터를 할당하는 단계는, 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택하는 단계, 상기 임의의 노드들에 할당되는 데이터를 상기 데이터 처리 능력에 기초하여 결정하는 단계, 및 결정된 데이터를 상기 임의의 노드들에 할당하는 단계를 포함할 수 있다.
여기서, 상기 노드는 리듀스 태스크를 처리하는 노드일 수 있다.
여기서, 상기 노드들의 성능은, 네트워크 성능, 프로세서 성능, 메모리 성능 및 입출력 성능 중에서 적어도 하나를 포함할 수 있다.
상기 다른 목적을 달성하기 위한 본 발명의 일 실시예에 따른 데이터 분배 장치는, 노드들의 성능을 인식하고, 상기 노드들의 성능을 기반으로 상기 노드들의 데이터 처리 능력을 분석하고, 상기 데이터 처리 능력에 기초하여 상기 노드들에 데이터를 할당하는 처리부, 및 상기 처리부에서 처리되는 정보 및 처리된 정보를 저장하는 저장부를 포함한다.
여기서, 상기 처리부는, 상기 노드들의 데이터 처리 능력을 분석하는 경우, 상기 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출하고, 산출된 시간을 기반으로 상기 노드들의 데이터 처리 능력을 판단할 수 있다.
여기서, 상기 처리부는, 상기 노드들에 데이터를 할당하는 경우, 상기 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성하고, 생성된 데이터를 각 노드에 할당할 수 있다.
여기서, 상기 처리부는, 상기 생성된 데이터를 각 노드에 할당하는 경우, 하나의 노드에 하나의 데이터를 할당할 수 있다.
여기서, 상기 처리부는, 상기 노드들에 데이터를 할당하는 경우, 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택하고, 상기 임의의 노드들에 할당되는 데이터를 상기 데이터 처리 능력에 기초하여 결정하고, 결정된 데이터를 상기 임의의 노드들에 할당할 수 있다.
여기서, 상기 노드는 리듀스 태스크를 처리하는 노드일 수 있다.
여기서, 상기 노드들의 성능은, 네트워크 성능, 프로세서 성능, 메모리 성능 및 입출력 성능 중에서 적어도 하나를 포함할 수 있다.
본 발명에 의하면, 노드의 성능에 기초하여 데이터를 가변적으로 할당할 수 있으므로, 리듀스 단계에서 리듀스 노드들 간의 작업시간의 차이를 감소시킬 수 있으며, 이에 따라 리듀스 단계에서 리듀스 데이터 처리 효율이 향상된다.
도 1은 맵리듀스 모델에서의 데이터 처리 과정을 도시한 개념도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 분배 방법을 도시한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 분배 방법에 있어서 데이터를 할당하는 단계를 도시한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 맵리듀스 모델에서의 데이터 처리 과정을 도시한 개념도이다.
도 5는 본 발명과 종래 기술에 의해 할당된 데이터 크기를 도시한 그래프이다.
도 6은 본 발명과 종래 기술에 따른 데이터 처리 시간을 도시한 그래프이다.
도 7은 본 발명의 일 실시예에 따른 데이터 분배 장치를 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 데이터 분배 방법을 도시한 흐름도이다.
도 3은 본 발명의 일 실시예에 따른 데이터 분배 방법에 있어서 데이터를 할당하는 단계를 도시한 흐름도이다.
도 4는 본 발명의 일 실시예에 따른 맵리듀스 모델에서의 데이터 처리 과정을 도시한 개념도이다.
도 5는 본 발명과 종래 기술에 의해 할당된 데이터 크기를 도시한 그래프이다.
도 6은 본 발명과 종래 기술에 따른 데이터 처리 시간을 도시한 그래프이다.
도 7은 본 발명의 일 실시예에 따른 데이터 분배 장치를 도시한 블록도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 맵리듀스(mapreduce) 모델에서의 데이터 처리 과정을 도시한 개념도이다.
도 1을 참조하면, 맵 노드들(map node)(20, 21, 22)은 맵 단계에서 데이터를 처리할 수 있고, 리듀스 노드들(reduce node)(30, 31)은 리듀스 단계에서 데이터를 처리할 수 있고, 마스터(master) 노드(10)는 맵 노드들(20, 21, 22)과 리듀스 노드들(30, 31)에 데이터를 할당할 수 있다. 마스터 노드(10)는 맵 단계에서 데이터를 처리하는 맵 노드들(20, 21, 22)을 구성할 수 있고, 리듀스 단계에서 데이터를 처리하는 리듀스 노드들(30, 31)을 구성할 수 있다.
마스터 노드(10)는 원본(original) 입력 데이터를 복수의 입력 데이터로 분할할 수 있고, 분할된 입력 데이터를 각 맵 노드(20, 21, 22)에 할당할 수 있다. 즉, 마스터 노드(10)는 원본 입력 데이터를 입력 1, 입력 2, 입력 3으로 분할할 수 있고, 그 중 입력 1(즉, 맵 태스크(task))을 맵 노드 1(20)에 할당할 수 있고, 입력 2(즉, 맵 태스크)를 맵 노드 2(21)에 할당할 수 있고, 입력 3(즉, 맵 태스크)을 맵 노드 3(22)에 할당할 수 있다.
맵 노드들(20, 21, 22)은 할당받은 입력 데이터에 대한 키-밸류(key-value) 쌍을 분석할 수 있고, 분석된 결과와 미리 정의된 맵 함수를 사용하여 중간 키-밸류를 생성할 수 있다. 여기서, 중간 키-밸류는 맵 노드들(20, 21, 22)에 의해 생성된 중간 데이터를 의미한다.
마스터 노드(10)는 중간 데이터를 기반으로 리듀스 노드들(30, 31)에서 처리되는 리듀스 태스크를 생성할 수 있다. 마스터 노드(10)에 의해 생성된 리듀스 태스크들은 서로 동일한 크기를 가질 수 있다. 여기서, 2개의 리듀스 노드(30, 31)가 존재하므로 마스터 노드(10)는 중간 데이터를 기반으로 서로 동일한 크기를 가지는 2개의 리듀스 태스크를 생성할 수 있고, 생성된 리듀스 태스크를 각 리듀스 노드(30, 31)에 할당할 수 있다.
리듀스 노드들(30, 31)은 미리 정의된 리듀스 함수를 기반으로 중간 데이터(즉, 중간 키-밸류)를 처리할 수 있고, 처리된 결과를 기초로 최종 출력을 생성할 수 있다.
도 2는 본 발명의 일 실시예에 따른 데이터 분배 방법을 도시한 흐름도이다.
도 2를 참조하면, 맵리듀스 모델에서의 데이터 분배 방법은 노드들의 성능을 인식하는 단계(S100), 노드들의 성능을 기반으로 노드들의 데이터 처리 능력을 분석하는 단계(S200) 및 데이터 처리 능력에 기초하여 노드들에 데이터를 할당하는 단계(S300)를 포함한다.
도 2에 도시된 각각의 단계는 도 7에 도시된 데이터 처리 장치(10)에 의해 수행될 수 있다. 데이터 처리 장치(10)의 구성 및 각 구성의 기능에 대해서는 후술하도록 한다.
단계 S100에서, 데이터 분배 장치는 노드들의 성능을 인식할 수 있다. 노드는 맵리듀스 모델에서 리듀스 태스크를 처리하는 노드를 의미할 수 있다. 노드의 성능은 네트워크(network) 성능, 프로세서(processor) 성능, 메모리(memory) 성능 및 입출력(input/output, I/O) 성능 중에서 적어도 하나를 포함할 수 있다.
데이터 분배 장치는 자신의 데이터베이스(database)에 미리 저장된 노드의 성능 정보를 기초로 각 노드의 성능을 인식할 수 있다. 또는, 데이터 분배 장치는 각 노드로부터 성능 정보를 획득할 수 있고, 획득된 노드의 성능 정보를 기초로 각 노드의 성능을 인식할 수 있다.
여기서, 노드는 물리 노드 또는 논리 노드를 의미할 수 있다. 노드가 물리 노드인 경우, 노드는 하나의 컴퓨터(computer) 또는 하나의 프로세서(processor)를 의미할 수 있다. 노드가 논리 노드인 경우, 노드는 하나의 물리 노드를 기반으로 가상화된 가상 노드를 의미할 수 있다.
단계 S200에서, 데이터 분배 장치는 노드들의 성능을 기반으로 노드들의 데이터 처리 능력을 분석할 수 있다. 단계 S200은, 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출하는 단계(S210) 및 산출된 시간을 기반으로 노드들의 데이터 처리 능력을 판단하는 단계(S220)를 포함할 수 있다.
먼저 데이터 분배 장치는 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출할 수 있다(S210). 즉, 데이터 분배 장치는 아래 표 1에 기재된 수학식을 기반으로 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출할 수 있다.
여기서, '셔플 시간(shuffle time) + 병합 시간(merge time)'은 맵 노드의 출력 데이터로부터 리듀스 노드의 입력 데이터를 생성하는데 소요되는 시간을 의미한다. 리듀스 시간(reduce time)은 리듀스 노드에서 데이터를 처리하는데 소요되는 시간을 의미한다. 입력 시간(write time)은 리듀스 노드의 결과를 하둡 분산 파일 시스템(HDFS)에 저장하는데 소요되는 시간을 의미한다. 데이터 분배 장치는 '셔플 시간 + 병합 시간 + 리듀스 시간 + 입력 시간'을 각 노드에서 데이터를 처리하는데 소요되는 시간으로 산출할 수 있다.
아래 표 2는 표 1에 기재된 수학식에서 사용되는 변수의 의미를 나타낸다.
데이터 분배 장치는 표 1에 기재된 수학식을 기반으로 산출된 시간을 기초로 하여 노드들의 데이터 처리 능력을 판단할 수 있다(S220). 데이터 분배 장치는 상대적으로 짧은 처리 시간을 가지는 노드를 성능이 좋은 노드로 판단할 수 있고, 상대적으로 긴 처리 시간을 가지는 노드를 성능이 나쁜 노드로 판단할 수 있다.
한편, 데이터 분배 장치는 데이터 처리 시간을 기초로 하여 각각의 노드에 가중치를 부여할 수 있다. 예를 들어, 데이터 분배 장치는 상대적으로 짧은 처리 시간을 가지는 노드에 높은 가중치를 부여할 수 있고, 상대적으로 긴 처리 시간을 가지는 노드에 낮은 가중치를 부여할 수 있다. 이후 데이터 분배 장치는 단계 S220에 부여된 가중치를 기반으로 각각의 노드에 데이터를 할당할 수 있다. 즉, 데이터 분배 장치는 가중치가 높은 노드에 상대적으로 많은 데이터를 할당할 수 있고, 가중치가 낮은 노드에 상대적으로 적은 데이터를 할당할 수 있다.
단계 S300에서, 데이터 분배 장치는 데이터 처리 능력에 기초하여 노드들에 데이터를 할당할 수 있다. 단계 S300은 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성하는 단계(S310) 및 생성된 데이터를 각 노드에 할당하는 단계(S320)를 포함할 수 있다.
먼저, 데이터 분배 장치는 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성할 수 있다(S310). 즉, 데이터 분배 장치는 높은 데이터 처리 능력을 가지는 노드(예를 들어, 짧은 처리 시간을 가지는 노드)를 위해 상대적으로 큰 크기를 가지는 데이터를 생성할 수 있고, 낮은 데이터 처리 능력을 가지는 노드(예를 들어, 긴 처리 시간을 가지는 노드)를 위해 상대적으로 작은 크기를 가지는 데이터를 생성할 수 있다. 데이터 분배 장치는 단계 S310을 통해 생성된 데이터를 각각의 노드에 할당할 수 있다(S320). 이때, 데이터 분배 장치는 하나의 노드에 하나의 데이터를 할당할 수 있다.
도 3은 본 발명의 일 실시예에 따른 데이터 분배 방법에 있어서 데이터를 할당하는 단계를 도시한 흐름도이다.
도 3을 참조하면, 단계 S300은 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택하는 단계(S350), 임의의 노드들에 할당되는 데이터를 데이터 처리 능력에 기초하여 결정하는 단계(S360) 및 결정된 데이터를 임의의 노드들에 할당하는 단계(S370)를 포함할 수 있다. 도 3에 도시된 단계 S300과 도 2에 도시된 단계 S300은 서로 독립적으로 수행될 수 있으며, 도 3에 도시된 단계 S300은 도 2에 도시된 단계 S300 대신에 수행될 수 있다.
먼저, 데이터 분배 장치는 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택할 수 있다(S350). 예를 들어, 데이터 분배 장치는 미리 설정된 기준보다 짧은 데이터 처리 시간을 가지는 임의의 노드들을 선택할 수 있다. 미리 설정된 기준은 사용자의 설정에 따라 다양하게 구성될 수 있다.
데이터 분배 장치는 임의의 노드들에 할당되는 데이터를 데이터 처리 능력에 기초하여 결정할 수 있다(S360). 즉, 데이터 분배 장치는 높은 데이터 처리 능력을 가지는 노드(예를 들어, 짧은 처리 시간을 가지는 노드)에 할당되는 데이터를 상대적으로 큰 크기를 가지는 데이터로 결정할 수 있고, 낮은 데이터 처리 능력을 가지는 노드(예를 들어, 긴 처리 시간을 가지는 노드)에 할당되는 데이터를 상대적으로 작은 크기를 가지는 데이터로 결정할 수 있다. 데이터 분배 장치는 단계 S360을 통해 결정된 데이터를 임의의 노드에 할당할 수 있다(S370). 이때, 데이터 분배 장치는 하나의 노드에 하나의 데이터를 할당할 수 있다.
도 4는 본 발명의 일 실시예에 따른 맵리듀스 모델에서의 데이터 처리 과정을 도시한 개념도이다.
도 4를 참조하면, 맵 노드들(20, 21, 22)은 맵 단계에서 데이터를 처리할 수 있고, 리듀스 노드들(30, 31)은 리듀스 단계에서 데이터를 처리할 수 있고, 마스터 노드(10)는 맵 노드들(20, 21, 22)과 리듀스 노드들(30, 31)에 데이터를 할당할 수 있다. 마스터 노드(10)는 맵 단계에서 데이터를 처리하는 맵 노드들(20, 21, 22)을 구성할 수 있고, 리듀스 단계에서 데이터를 처리하는 리듀스 노드들(30, 31)을 구성할 수 있다.
마스터 노드(10)는 원본 입력 데이터를 복수의 입력 데이터로 분할할 수 있고, 분할된 입력 데이터를 각 맵 노드(20, 21, 22)에 할당할 수 있다. 즉, 마스터 노드(10)는 원본 입력 데이터를 입력 1, 입력 2, 입력 3으로 분할할 수 있고, 그 중 입력 1(즉, 맵 태스크)을 맵 노드 1(20)에 할당할 수 있고, 입력 2(즉, 맵 태스크)를 맵 노드 2(21)에 할당할 수 있고, 입력 3(즉, 맵 태스크)을 맵 노드 3(22)에 할당할 수 있다.
맵 노드들(20, 21, 22)은 할당받은 입력 데이터에 대한 키-밸류 쌍을 분석할 수 있고, 분석된 결과와 미리 정의된 맵 함수를 사용하여 중간 키-밸류를 생성할 수 있다. 여기서, 중간 키-밸류는 맵 노드들(20, 21, 22)에 의해 생성된 중간 데이터를 의미한다.
마스터 노드(10)는 중간 데이터를 기반으로 리듀스 노드들(30, 31)에서 처리되는 리듀스 태스크(즉, 데이터)를 생성할 수 있다. 마스터 노드(10)는 리듀스 노드들(30, 31)의 데이터 처리 능력을 기반으로 리듀스 노드들(30, 31)에 할당되는 데이터의 크기를 결정할 수 있다. 즉, 마스터 노드(10)는 높은 처리 능력을 가지는 리듀스 노드에 상대적으로 큰 크기의 데이터를 할당할 수 있고, 낮은 처리 능력을 가지는 리듀스 노드에 상대적으로 작은 크기의 데이터를 할당할 수 있다. 이때, 마스터 노드(10)는 도 2를 참조하여 설명한 데이터 할당 방식을 기초로 하여 리듀스 노드에 데이터를 할당할 수 있다.
예를 들어, 리듀스 노드 2(31)가 리듀스 노드 1(30)보다 높은 데이터 처리 능력을 가지는 경우, 데이터 분배 장치는 리듀스 노드 2(31)에 상대적으로 큰 데이터를 할당할 수 있고, 리듀스 노드 1(30)에 상대적으로 작은 크기의 데이터를 할당할 수 있다. 이때, 데이터 분배 장치는 리듀스 노드 1(30)에 하나의 데이터를 할당할 수 있고, 리듀스 노드 2(31)에 하나의 데이터를 할당할 수 있다.
리듀스 노드들(30, 31)은 미리 정의된 리듀스 함수를 기반으로 중간 데이터(즉, 중간 키-밸류)를 처리할 수 있고, 처리된 결과를 기초로 최종 출력을 생성할 수 있다.
본 발명에 따른 데이터 분배 방법들은 다양한 컴퓨터 수단을 통해 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 컴퓨터 판독 가능 매체에 기록되는 프로그램 명령은 본 발명을 위해 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다.
컴퓨터 판독 가능 매체의 예에는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함한다. 상술한 하드웨어 장치는 본 발명의 동작을 수행하기 위해 적어도 하나의 소프트웨어 모듈로 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
도 5는 본 발명과 종래 기술에 의해 할당된 데이터 크기를 도시한 그래프이다.
도 5를 참조하면, 노드 1은 입력(I/O write) 1GB/s와 출력(I/O read) 5GB/s의 성능을 가지고, 노드 2는 입력 2GB/s와 출력 10GB/s의 성능을 가지고, 노드 3은 입력 3GB/s와 출력 15GB/s의 성능을 가지고, 노드 4는 입력 4GB/s와 출력 20GB/s의 성능을 가진다.
종래 기술에 의하면, 노드 1, 노드 2, 노드 3 및 노드 4에 동일한 크기의 데이터가 할당된다. 반면 본 발명에 의하면, 노드의 성능에 따라 서로 다른 크기의 데이터가 할당된다. 예를 들어, 성능이 가장 좋은 노드 4에 가장 많은 데이터가 할당되고, 성능이 두 번째로 좋은 노드 3에 노드 4 다음으로 많은 데이터가 할당되고, 성능이 세 번째로 좋은 노드 2에 노드 3 다음으로 많은 데이터가 할당되고, 성능이 가장 나쁜 노드 1에 가장 적은 데이터가 할당된다.
도 6은 본 발명과 종래 기술에 따른 데이터 처리 시간을 도시한 그래프이다.
도 6을 참조하면, 노드 1은 입력 1GB/s와 출력 5GB/s의 성능을 가지고, 노드 2는 입력 2GB/s와 출력 10GB/s의 성능을 가지고, 노드 3은 입력 3GB/s와 출력 15GB/s의 성능을 가지고, 노드 4는 입력 4GB/s와 출력 20GB/s의 성능을 가진다.
종래 기술에 의하면, 도 5에 도시된 바와 같이 각각의 노드에 동일한 크기의 데이터가 할당된 경우, 노드들 간의 데이터 처리 시간은 상당한 차이를 보인다. 예를 들어, 노드 1은 대략 1040초의 데이터 처리 시간을 가지나 노드 4는 대략 840초의 데이터 처리 시간을 가지므로, 노드 1과 노드 4 간에 대략 200초의 차이를 보인다.
반면 본 발명에 의하면, 도 5에 도시된 바와 같이 노드의 성능에 따라 서로 다른 크기를 가지는 데이터가 할당된 경우, 노드들은 서로 비슷한 데이터 처리 시간을 가진다. 즉, 모든 노드들은 대략 910초의 데이터 처리 시간을 가진다.
도 7은 본 발명의 일 실시예에 따른 데이터 분배 장치를 도시한 블록도이다.
도 7을 참조하면, 맵리듀스 모델에서의 데이터 분배 장치(10)는 처리부(11) 및 저장부(12)를 포함한다. 처리부(11)는 노드들의 성능을 인식할 수 있고, 노드들의 성능을 기반으로 노드들의 데이터 처리 능력을 분석할 수 있고, 데이터 처리 능력에 기초하여 노드들에 데이터를 할당할 수 있다.
여기서, 노드는 맵리듀스 모델에서 리듀스 태스크를 처리하는 노드를 의미할 수 있다. 노드의 성능은 네트워크 성능, 프로세서 성능, 메모리 성능 및 입출력(I/O) 성능 중에서 적어도 하나를 포함할 수 있다. 노드는 물리 노드 또는 논리 노드를 의미할 수 있다. 노드가 물리 노드인 경우, 노드는 하나의 컴퓨터 또는 하나의 프로세서를 의미할 수 있다. 노드가 논리 노드인 경우, 노드는 하나의 물리 노드로부터 가상화된 가상 노드를 의미할 수 있다.
처리부(11)는 저장부(12)에 미리 저장된 노드의 성능 정보를 기초로 각 노드의 성능을 인식할 수 있다. 또는, 처리부(11)는 각 노드로부터 성능 정보를 획득할 수 있고, 획득된 노드의 성능 정보를 기초로 각 노드의 성능을 인식할 수 있다.
노드들의 데이터 처리 성능을 분석하는 경우, 처리부(11)는 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출할 수 있고, 산출된 시간을 기반으로 노드들의 데이터 처리 능력을 판단할 수 있다.
즉, 처리부(11)는 상기 표 1에 기재된 수학식을 기반으로 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출할 수 있고, 산출된 시간을 기초로 하여 노드들의 데이터 처리 능력을 판단할 수 있다. 처리부(11)는 상대적으로 짧은 처리 시간을 가지는 노드를 성능이 좋은 노드로 판단할 수 있고, 상대적으로 긴 처리 시간을 가지는 노드를 성능이 나쁜 노드로 판단할 수 있다.
한편, 처리부(11)는 데이터 처리 시간을 기초로 하여 각각의 노드에 가중치를 부여할 수 있다. 예를 들어, 처리부(11)는 상대적으로 짧은 처리 시간을 가지는 노드에 높은 가중치를 부여할 수 있고, 상대적으로 긴 처리 시간을 가지는 노드에 낮은 가중치를 부여할 수 있다. 이후 처리부(11)는 부여된 가중치를 기반으로 각각의 노드에 데이터를 할당할 수 있다. 즉, 처리부(11)는 가중치가 높은 노드에 상대적으로 많은 데이터를 할당할 수 있고, 가중치가 낮은 노드에 상대적으로 적은 데이터를 할당할 수 있다.
데이터 처리 능력에 기초하여 노드들에 데이터를 할당하는 경우, 처리부(11)는 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성할 수 있고, 생성된 데이터를 각 노드에 할당할 수 있다.
처리부(11)는 높은 데이터 처리 능력을 가지는 노드(예를 들어, 짧은 처리 시간을 가지는 노드)를 위해 상대적으로 큰 크기를 가지는 데이터를 생성할 수 있고, 낮은 데이터 처리 능력을 가지는 노드(예를 들어, 긴 처리 시간을 가지는 노드)를 위해 상대적으로 작은 크기를 가지는 데이터를 생성할 수 있다. 처리부(11)는 이와 같은 과정을 통해 생성된 하나의 데이터를 하나의 노드에 할당할 수 있다.
한편, 처리부(11)는 데이터를 할당하는 경우, 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택할 수 있고, 임의의 노드들에 할당되는 데이터를 데이터 처리 능력에 기초하여 결정할 수 있고, 결정된 데이터를 임의의 노드들에 할당할 수 있다.
먼저, 처리부(11)는 미리 설정된 기준보다 짧은 데이터 처리 시간을 가지는 임의의 노드들을 선택할 수 있다. 미리 설정된 기준은 사용자의 설정에 따라 다양하게 구성될 수 있다. 처리부(11)는 선택된 임의의 노드들 중에서, 높은 데이터 처리 능력을 가지는 노드(예를 들어, 짧은 처리 시간을 가지는 노드)에 할당되는 데이터를 상대적으로 큰 크기를 가지는 데이터로 결정할 수 있고, 낮은 데이터 처리 능력을 가지는 노드(예를 들어, 긴 처리 시간을 가지는 노드)에 할당되는 데이터를 상대적으로 작은 크기를 가지는 데이터로 결정할 수 있다. 처리부(11)는 이와 같은 과정을 통해 결정된 하나의 데이터를 하나의 노드에 할당할 수 있다.
여기서, 처리부(11)는 프로세서 및 메모리(memory)를 포함할 수 있다. 프로세서는 범용의 프로세서(예를 들어, CPU(Central Processing Unit) 및/또는 GPU(Graphics Processing Unit) 등) 또는 데이터 분배 방법의 수행을 위한 전용의 프로세서를 의미할 수 있다. 메모리에는 데이터 분배 방법의 수행을 위한 프로그램 코드(program code)가 저장될 수 있다. 즉, 프로세서는 메모리에 저장된 프로그램 코드를 독출할 수 있고, 독출된 프로그램 코드를 기반으로 데이터 분배 방법의 각 단계를 수행할 수 있다.
저장부(12)는 처리부(11)에서 처리되는 정보 및 처리부(11)에서 처리된 정보를 저장할 수 있다. 예를 들어, 저장부(12)는 노드의 성능, 노드의 데이터 처리 능력, 노드에 할당되는 데이터 등을 저장할 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
10: 데이터 분배 장치
11: 처리부
12: 저장부
11: 처리부
12: 저장부
Claims (14)
- 맵리듀스 모델(mapreduce model)에서의 데이터 분배 방법으로서,
리듀스 태스크(task)를 처리하는 노드(node)들의 성능을 인식하는 단계;
상기 노드들의 성능을 기반으로 상기 노드들의 데이터(data) 처리 능력을 분석하는 단계; 및
상기 데이터 처리 능력에 기초하여 상기 노드들에 데이터를 할당하는 단계를 포함하는 데이터 분배 방법. - 청구항 1에 있어서,
상기 노드들의 데이터 처리 능력을 분석하는 단계는,
상기 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출하는 단계; 및
산출된 시간을 기반으로 상기 노드들의 데이터 처리 능력을 판단하는 단계를 포함하는 것을 특징으로 하는 데이터 분배 방법. - 청구항 1에 있어서,
상기 노드들에 데이터를 할당하는 단계는,
상기 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성하는 단계; 및
생성된 데이터를 각 노드에 할당하는 단계를 포함하는 것을 특징으로 하는 데이터 분배 방법. - 청구항 3에 있어서,
상기 생성된 데이터를 각 노드에 할당하는 단계는,
하나의 노드에 하나의 데이터를 할당하는 것을 특징으로 하는 데이터 분배 방법. - 청구항 1에 있어서,
상기 노드들에 데이터를 할당하는 단계는,
미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택하는 단계;
상기 임의의 노드들에 할당되는 데이터를 상기 데이터 처리 능력에 기초하여 결정하는 단계; 및
결정된 데이터를 상기 임의의 노드들에 할당하는 단계를 포함하는 것을 특징으로 하는 데이터 분배 방법. - 삭제
- 청구항 1에 있어서,
상기 노드들의 성능은,
네트워크(network) 성능, 프로세서(processor) 성능, 메모리(memory) 성능 및 입출력 성능 중에서 적어도 하나를 포함하는 것을 특징으로 하는 데이터 분배 방법. - 맵리듀스 모델(mapreduce model)에서의 데이터 분배 장치로서,
리듀스 태스크(task)를 처리하는 노드(node)들의 성능을 인식하고, 상기 노드들의 성능을 기반으로 상기 노드들의 데이터(data) 처리 능력을 분석하고, 상기 데이터 처리 능력에 기초하여 상기 노드들에 데이터를 할당하는 처리부; 및
상기 처리부에서 처리되는 정보 및 처리된 정보를 저장하는 저장부를 포함하는 데이터 분배 장치. - 청구항 8에 있어서,
상기 처리부는,
상기 노드들의 데이터 처리 능력을 분석하는 경우, 상기 노드들의 성능을 기초로 하여 각 노드에서 데이터를 처리하는데 소요되는 시간을 산출하고, 산출된 시간을 기반으로 상기 노드들의 데이터 처리 능력을 판단하는 것을 특징으로 하는 데이터 분배 장치. - 청구항 8에 있어서,
상기 처리부는,
상기 노드들에 데이터를 할당하는 경우, 상기 데이터 처리 능력에 기초하여 서로 다른 크기를 가지는 데이터들을 생성하고, 생성된 데이터를 각 노드에 할당하는 것을 특징으로 하는 데이터 분배 장치. - 청구항 10에 있어서,
상기 처리부는,
상기 생성된 데이터를 각 노드에 할당하는 경우, 하나의 노드에 하나의 데이터를 할당하는 것을 특징으로 하는 데이터 분배 장치. - 청구항 8에 있어서,
상기 처리부는,
상기 노드들에 데이터를 할당하는 경우, 미리 설정된 기준을 만족하는 데이터 처리 능력을 가지는 임의의 노드들을 선택하고, 상기 임의의 노드들에 할당되는 데이터를 상기 데이터 처리 능력에 기초하여 결정하고, 결정된 데이터를 상기 임의의 노드들에 할당하는 것을 특징으로 하는 데이터 분배 장치. - 삭제
- 청구항 8에 있어서,
상기 노드들의 성능은,
네트워크(network) 성능, 프로세서(processor) 성능, 메모리(memory) 성능 및 입출력 성능 중에서 적어도 하나를 포함하는 것을 특징으로 하는 데이터 분배 장치.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130016692 | 2013-02-18 | ||
KR20130016692 | 2013-02-18 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20140103805A KR20140103805A (ko) | 2014-08-27 |
KR101573112B1 true KR101573112B1 (ko) | 2015-12-01 |
Family
ID=51747996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020130070582A KR101573112B1 (ko) | 2013-02-18 | 2013-06-19 | 데이터 분배 방법 및 장치 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101573112B1 (ko) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101643886B1 (ko) * | 2014-12-10 | 2016-08-01 | 한국과학기술정보연구원 | 대용량 고해상도 위성영상 분석 시스템 및 방법 |
KR101884726B1 (ko) * | 2016-06-21 | 2018-08-03 | 주식회사 티맥스데이터 | 데이터베이스 시스템에서 블록을 판독하기 위한 방법, 장치 및 컴퓨터 판독가능 매채에 저장된 컴퓨터-프로그램 |
KR102002246B1 (ko) * | 2018-02-28 | 2019-10-01 | 연세대학교 산학협력단 | 빅데이터 처리를 위한 자원 분배 방법 및 장치 |
KR102045997B1 (ko) * | 2018-03-05 | 2019-11-18 | 울산과학기술원 | 분산 파일 시스템을 기반으로 하는 빅데이터 처리 플랫폼의 태스크 스케줄링 방법, 이를 위한 컴퓨터 프로그램 및 컴퓨터 판독 가능 기록 매체 |
KR102520375B1 (ko) * | 2020-12-14 | 2023-04-11 | 건국대학교 산학협력단 | 3차원 공간정보 생성을 위한 병렬처리 장치 및 방법 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006113868A (ja) * | 2004-10-15 | 2006-04-27 | Hitachi Ltd | データ分配方法、システム及びプログラム |
KR100609459B1 (ko) | 2003-03-26 | 2006-08-08 | 김기환 | 피투피 방식의 병렬 분산처리시스템 및 방법 |
-
2013
- 2013-06-19 KR KR1020130070582A patent/KR101573112B1/ko active IP Right Grant
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100609459B1 (ko) | 2003-03-26 | 2006-08-08 | 김기환 | 피투피 방식의 병렬 분산처리시스템 및 방법 |
JP2006113868A (ja) * | 2004-10-15 | 2006-04-27 | Hitachi Ltd | データ分配方法、システム及びプログラム |
Also Published As
Publication number | Publication date |
---|---|
KR20140103805A (ko) | 2014-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101573112B1 (ko) | 데이터 분배 방법 및 장치 | |
WO2019128475A1 (zh) | 数据训练方法及装置、存储介质、电子装置 | |
WO2018010654A1 (zh) | 一种虚拟机热迁移的方法、装置及*** | |
US20150295970A1 (en) | Method and device for augmenting and releasing capacity of computing resources in real-time stream computing system | |
TWI755415B (zh) | 雲端環境下應用集群資源分配的方法、裝置和系統 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
US9916283B2 (en) | Method and system for solving a problem involving a hypergraph partitioning | |
JP6533623B2 (ja) | 管理計算機、性能監視方法及び計算機システム | |
JP2021504780A (ja) | 分散コンピューティング環境における自動対角スケーリングためのアプリケーションの優先順位付け | |
WO2018032519A1 (zh) | 一种资源分配方法、装置及numa*** | |
US20170185503A1 (en) | Method and system for recommending application parameter setting and system specification setting in distributed computation | |
CN112513821A (zh) | 用于scm应用的多实例2lm架构 | |
CN112948279A (zh) | 管理存储***中的访问请求的方法、设备和程序产品 | |
KR102326586B1 (ko) | 큰 규모 분산 행렬 곱 처리 방법 및 그 장치 | |
US11194623B2 (en) | Resource scheduling method and related apparatus | |
US20150089501A1 (en) | Systems and methods for colocating virtual machines on one or more physical infrastructure | |
US9298769B1 (en) | Method and apparatus to facilitate discrete-device accelertaion of queries on structured data | |
JP6666553B2 (ja) | 情報処理装置、ジョブ管理方法およびジョブ管理プログラム | |
CN111510479A (zh) | 一种异构缓存***的资源分配方法及装置 | |
US10592473B2 (en) | Method for improving energy efficiency of map-reduce system and apparatus thereof | |
US11928517B2 (en) | Feature resource self-tuning and rebalancing | |
KR101628436B1 (ko) | 가상 머신의 데이터 처리 방법 | |
US8533423B2 (en) | Systems and methods for performing parallel multi-level data computations | |
US10824640B1 (en) | Framework for scheduling concurrent replication cycles | |
US10503560B2 (en) | Distributed processing control device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20180918 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20191209 Year of fee payment: 5 |