Redis Distributed in-memory data store(memcache와 유사) 자료구조들을 저장하기 좋음 데이터를 디스크로 저장가능 데이터 스토어로도 사용가능 web apps에 대한 caching layer로 많이 사용됨 Command ZRANK ZRANK key member : sc...
Accumulo
Accumulo BigTable clone(HBase와 유사) 보안 모델 제공 Cell-based access control Server-side programming 복잡한 보안 요구사항이 있을경우 사용
Apache Flink vs Apache Spark
Apache Flink vs Apache Spark Features Apache Flink Apache Spark Computation Model operator 기반 computational model micro-batch 기반 model ...
Garbage Collection
Garbage Collection 동작방식 Java garbage collection은 라이브 오브젝트들을 추적하고 다른 오브젝트들은 garbage로 간주한다. OS는 미리 JVM이 필요한 heap영역을 할당한다. 객체생성이 더 빠르다(OS가 관여하지 않기 때문). 메모리할당은 메모리 배열의 일부를 차지하고 offset을 앞으로 옮기기만 하...
Process vs Thread
Process vs Thread Process PCB는 어느 프로세스의 동작을 통제함. PID, Process Priority, Process State 등을 포함한다. 다른 프로세스와 메모리를 공유하지 않는다. Thread 프로세스의 일부이고 3가지 상태를 가질수 있다 : running,ready,blocked. Thread는 프로세스에 비해...
JVM
JVM Java code나 어플리케이션을 실행하기위한 런타임 환경을 제공한다. Java bytecode를 machine language로 변환한다. JVM은 JRE(Java Run Environment)의 일부이다. JVM 작동방식 먼저 Java code가 bytecode로 컴파일된다. 이 바이트 코드는 다른 머신에서 해석된다. 바이트코드는 소스...
Elasticsearch _rollover API 사용하여, 효율적인 저장 분배
Elasticsearch _rollover API 사용하여, 효율적인 저장 분배 Skew란? 데이터가 전체 샤드에 골고루 분배되지 않는 상황 Rollover를 사용하여 해결하기 _rollover API는 임계치를 넘어가면 새로운 인덱스를 생성한다. POST _aliases { "actions": [ { "add": ...
Spark vs MapReduce
Spark이 MapReduce보다 더 빠른 이유 task start up time이 더빠름. Spark은 thread를 복제하고, MR은 새로운 JVM을 생성 Faster shuffle. 셔플과정에서 Spark은 데이터를 HDD에 한번만 넣고, MR은 2번 넣는다. Faster workflow. 전형...
Spark Architecture
Spark의 동작방식 spark-submit을 사용해서, application을 제출한다. spark-submit이 명시된 jar의 main() 함수를 실행하고, driver를 실행한다. driver는 sparkContext를 생성하고, cluster manager(eg. MESOS, YARN)에게 자원을 요청한다. cluster...
Executor 자원 결정하기
Executor 자원 결정하기 JVM heap은 64gb미만이어야한다. 40gb가 적당한것으로 보인다. 이유는 garbage collection 때문인데 만약 executor가 너무 커지면 GC가 어플리케이션 성능에 영향을 준다. executor에 할당된 core수는 4개를 넘어서는 안된다. 4 코어는 1코어의 throughput에 비해 4...