radis | http://www.radis.io/ Remote Dictionary Server 1. 분산 캐시 시스템 2. NoSql 처럼 Key -Value 관리. ::: 분산서버 메모리 저장, 고성능 응답속도 3. Hbase 와 달리. 대규모 메시지데이터중 특정 데이터를 저장함. |
|
라이센스 | BSD | |
유사프로젝트 | jBoss Infinispan, MemCahshed, Mambase | |
주요 구성요소 |
Master | 분산 노드 간의 데이터 복제와 Slave서버의 관리를 위한 마스터 서버 |
Slave | 다수의 Slave서버는 주로 읽기 요청을 처리하고, Master서버는 쓰기 요청을 처리. | |
Sentinel | 레디스 3.x부터 지원하는 기능으로 Master 서버에 문제가 발생할 경우 새로운 Master를 선출 하는 기능 | |
Replication | Master서버에 쓰인 내용을 Slave서버로 복제해서 동기화 처리 | |
AOF/Snapshot | 데이터를 영구적으로 저장하는 기능으로, 명령어를 기록하는 AOF와 스냅샷 이미지 파일 방식을 지원. | |
아키텍처 | ||
![]() ![]() ![]() Sentinel. 3.x Master 장애시. SPOF(Single point of failure) 모니터링 하고 있다 마스터 장애시 슬래이브중 하나 마스터로 선출. |
||
활용방안 | 운행자로그 400KB/초 -> 플럼 -> 카프카->스톰 스톰-> HBase(HRegionServer (HRegion(Driver Info1,2...))) 스톰-> 레디스(Master 과속 Driver1, 2...N) >> 과속한 운전자의 실시간 운행정보 적재 >> 과속한 운전자의 운행정보를 빠르게 검색 및 조회 . 요구사항-> 아키텍처 -> SW -> 활용하는 비지니스 이해. |
|
레디스 설치 | CM에서 radis 설치지원안함. 1. 서버2 root계정으로 gcc, tcl 설치. 완료시 "Complete!" $yum install -y gcc* $yum install -y tcl * 상기 에러시. $rm /etc/yum.repos.d/cloudera-manager.repo echo "https://vault.centos.org/6.10/os/x86_64/" > /var/cache/yum/x86_64/6/base/mirrorlist.txt echo "http://vault.centos.org/6.10/extras/x86_64/" > /var/cache/yum/x86_64/6/extras/mirrorlist.txt echo "http://vault.centos.org/6.10/updates/x86_64/" > /var/cache/yum/x86_64/6/updates/mirrorlist.txt 2. 레디스5.0.7 설치 $cd /home/pilot-pjt $wget http://download.redis.io/releases/redis-5.0.7.tar.gz $ tar -xvf radis-5.0.7.tar.gz $cd /home/pilot-pjt/redis-5.0.7 $make $make install $cd /home/pilot-pjt/redis-5.0.7/utils $chmod 755 install_server.sh 실행권한. 마지막으로 인스톨 스크립트실행 엔터키 $./install_server.sh 인스턴스의 포트, 로그, 데이터 파일 설정값 위치 정보물어봄 그대로 유지 엔터. ![]() |
|
설치 확인 | 서버 기동여부 확인 vi /var/log/radis_6379.log ![]() 설치 점검 cd /home/pilot-pjt/redis-5.0.7/utils ![]() $service redis_6379 status 레디스 서비스 시작/종료하는 명령 시작 $service redis_6379 start $service redis_6379 stop |
|
원격접근 설정 | 1. 바인딩 ip제한해제 # bind 127.0.0.1 2. 패스워드 입력 해제 #protected-mode yes protected-mode no 3. 재시작 service redis_6379 restart |
|
레디스 CLI | $redis-cli $set key:1 Hello!Big $get key:1 $del key:1 $quit ![]() |
|
레디스 볼트 : 레디스 캐시에 전송 레디스 데이터 전송, 제디스 클라이언트. |
#JedisPoolConfig >> 레디스 클라이언트 라이브러리 String redisServer = "server02.hadoop.com"; int redisPort = 6379; JedisPoolConfig jedisPoolConfig = new JedisPoolCongig.Builder().setHost(redisServer)/ setPort(redisPort).build(); RedisBolt redisBolt = new RedisBolt(jedisPoolConfig); driverCarTopologyBuilder.setBolt("REDIS", redisBolt, 1).shuffleGrouping("esperBolt"); String date = input.getStringByFiled("date"); String car_number = input.getStringByFiled("car_number"); JedisCommands jedisCommands = null; jedisCommands = getInstance(); jedisCommands.sadd(date, car_number); jedisCommands.expire(date, 604800); #7일 public void run(){ Set<String> overSpeedCarList = null int cnt =1; try{ while(true){ overSpeedCarList = jedis.smembers(key); if(overSpeedCarList.size()n > 0){ for(String list : overSpeedCarList){ System.out.println(list); } jedis.del(key); } else { System.out.println("\nEmpty Car List .... \n"); } } } } ----------------------------------------------------------------------------- public class RedisBolt extends AbstractRedisBolt { private static final long serialVersionUID = 1L; public RedisBolt(JedisPoolConfig config) { super(config); } public RedisBolt(JedisClusterConfig config) { super(config); } @Override public void execute(Tuple input) { String date = input.getStringByField("date"); String car_number = input.getStringByField("car_number"); JedisCommands jedisCommands = null; try { jedisCommands = getInstance(); jedisCommands.sadd(date, car_number); jedisCommands.expire(date, 604800); } catch (JedisConnectionException e) { throw new RuntimeException("Exception occurred to JedisConnection", e); } catch (JedisException e) { System.out.println("Exception occurred from Jedis/Redis" + e); } finally { if (jedisCommands != null) { returnInstance(jedisCommands); } this.collector.ack(input); } } @Override public void declareOutputFields(OutputFieldsDeclarer declarer) { } } |
|
Replication 사본
Sentinel 보초병, 감시병
실시간데이터
1. 마켓팅
2. 리스크 관리
- FDS(Fraud Detection System) : 사기방지 시스템
- 개인/기업 예측
- 해커 공격
- 투자, 펀드
'Data' 카테고리의 다른 글
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 16]EsperTech (0) | 2021.05.27 |
---|---|
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 15]Storm (0) | 2021.05.27 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 13]HBase (0) | 2021.05.27 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 12]적재-실시간 로그/분석 (0) | 2021.05.27 |
[1028 from 실무로 배우는 빅데이터 기술 By 김강원 11]주키퍼 (0) | 2021.05.26 |