우분투(ubuntu)에서 Apache Ignite 설치 및 인메모리(inmemory) 설정, 그리고 캐시(cache) 데이터 샘플

2023. 3. 27. 21:57it

반응형

0. Apache Ignite란

Apache Ignite는 apache 프로젝트에서 매우 귀한 인메모리 분산 데이터 스토어다. 데이터를 분산하여 저장하고 처리할 수 있으며 대규모 데이터 처리에 적합합니다. 또한 Ignite는 SQL를 지원해, 단순한 key-value 스토리지랑 차이를 가져, 상당히 매력적인 프로젝트이다. 그리드 컴퓨팅, 분산 트랜잭션 등 다양한 기능을 제공하므로 많은 분야에서 사용됩니다.
 
인메모리에 데이터스토리지의 특성상 디스크 I/O로 인한 지연을 회피 할 수 있어, 대규모 데이터 처리, 빠른 데이터 엑세스 , 분산 캐싱 등의 용도로 사용이 가능하다. 주요 사용되는 사업 분야는 금융, IoT, 로그 분석, 실시간 분석 등에서 Ignite가 사용될 수 있다.
 
나는 특히, 인메모리 서비스들을 좋아한다. 그 이유는 큰 노력없이 대단한 성능과 성과를 만들어 내기 때문이다.
비록, 메모리의 특성상 휘발성인 특징과 값 비싼 하드웨어로 인해, 메인 스토리지로 사용되지 않지만, 충분한 매력이 있는 서비스인건 확신한다.

 

1. Ignite(이그나이트) 설치 방법

1-1. java를 설치한다.

sudo apt-get update
sudo apt-get install default-jdk

 

1-2 ignite를 다운 받는다.

wget https://archive.apache.org/dist/ignite/2.11.0/apache-ignite-2.11.0-bin.zip

 

1-3. 압축을 해지한다.

unzip apache-ignite-2.11.0-bin.zip

 

1-4. 환경변수 설정

vi ~/.bashrc
728x90
export IGNITE_HOME=/home/user/ignite

- 참조 : export IGNITE_HOME=/아파치 ignite가 압축이 플린 곳/ignite
- 즉, 나는 여기서 /home/user 아래에 압축을 풀어서 설치했다.
 

1-5. 변경 내역 적용 ( bashrc )

source ~/.bashrc

 

1-6. 실행

$IGNITE_HOME/bin/ignite.sh

 
이러면 ignite의 설치가 완료된다.
 별로 할건 없다. 나름 쉽게 휙휙 설치 될것이다.
 

하지만, ignite는 디폴트 세팅값이 인메모리가 아니다.
기것 앞에서 인메모리의 장점을 이야기 했는데, 인메모리 모드가 아니라니!!!
나도 처음에 성능 테스트 해보고 깜짝놀랬다. ㅋㅋㅋ
 
엄청 느려서 ㅎㅎㅎ

 

그래서 찾아보니, 인메모리 세팅은 따로 있었다.
그럼 인메모리 세팅을 한번 알아보겠다.
 

2. ignite 인메모리 설정

2-1. 설정 xml 로 이동

vi $IGNITE_HOME/config/default-config.xml

 

2-2 디스크 모드 종료

- dataStorageConfiguration 를 찾는다. 여기서 기본 설정값은 디스크 설정으로 되어 있다.
이 설정을 false로 바꿔 준다.

<dataStorageConfiguration>
    <persistenceEnabled>false</persistenceEnabled>
</dataStorageConfiguration>

 
 

2-3. 데이터 구성

- dataRegionConfiguration은 Ignite의 데이터 영역을 구성하는 데 사용된다.
- dataRegionConfiguration 를 찾는다. 여기서 설정을 아래와 같이 바꿔준다.
- 여기서 name를 "default" 로 변경해 준다.

반응형
<dataRegionConfiguration name="default">
    <!--기본값 유지-->
</dataRegionConfiguration>

 

2-4. 캐시 구성 설정

- cacheConfiguration은 Ignite의 캐시 구성을 구성하는 데 사용된다.

<cacheConfiguration name="myCache" dataRegionName="default">
    <!--기본값 유지-->
</cacheConfiguration>

 

2-5. 재시작

이 설정이 완료 되면, ignite를 재시작해주면, 디스크에서 인메모리 모드로 변경이 된다.

$IGNITE_HOME/bin/ignite.sh $IGNITE_HOME/config/default-config.xml

 
 

3. 마무리 말

아마, 대부분 in memory 캐시를 사용한다면, redis난 memcache를 사용하고 있을 것이다. 충분히 훌륭한 선택이라고 생각한다. 나 역시 ignite가 아닌 redis를 사용하고 있으니까 ㅎㅎ
 
하지만, ignite는 충분히 매력이 있는 서비스라고 생각한다. 그 이유는 바로 sql 때문이다.
예를 들어, 아래와 같은 샘플로 확인할 수 있다.
 

3-1 ignite 콘솔 실행

- 아래 명령어를 치면, sql를 날릴 수 있는 화면이 나온다.

./bin/sqlline.sh --verbose=true --color=true jdbc:ignite:thin://127.0.0.1/

 

3-2. insert 데이터 샘플

- 아래와 같이 sql 문 insert로 데이터를 넣어준다.

INSERT INTO user_data (id, name, age) VALUES (1, 'kim na ra', 25);
INSERT INTO user_data (id, name, age) VALUES (2, 'jeong a ra', 30);
INSERT INTO user_data (id, name, age) VALUES (3, 'lee bo ram', 45);

 

3-3. 조회한다.

SELECT * FROM user_data;

 
 
얼마나 매력적인가 ㅎㅎ
sql로 관리한다는게 ㅎㅎ
한번 쯤은 도전해 보는 것도 좋은 방법일 것이다.

나는 시도하다가 물리적인 테스트 시간이 부족했다.
그게 아니였다면 아마 내가 설계한 이키텍처에는 지금 레디스가 아닌 ignite가 있을 것이다 ㅎ

반응형