일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Decision Tree
- 랜덤포레스트
- 리눅스 환경변수
- Spark 튜닝
- BFS
- 추천시스템
- 앙상블
- git init
- airflow 정리
- 알고리즘
- 의사결정나무
- 오라클 데이터 처리방식
- 네트워크
- enq: FB - contention
- SQL
- 데이터분석
- 배깅
- eda
- Linux
- 데이터 분석
- Collaborative filtering
- Oracle ASSM
- CF
- 통계분석
- Python
- Oracle 논리적 저장 구조
- git 기본명령어
- git stash
- Spark Data Read
- Spark jdbc parallel read
- Today
- Total
목록분류 전체보기 (85)
[Alex] 데이터 장인의 블로그
저번 글에 이어서 GC에 대해 공부해보고자 한다. 2022.12.19 - [Hadoop & Spark] - [JVM] 기본 개념 정리 Garbage Collector Heap 영역에서 동적으로 할당된 객체 중 사용하지 않은 객체을 탐지하여 해제하는 기능. 한정된 Heap 메모리를 효율적으로 사용하기 위한 방법. 자바 이전에는 프로그래머가 모든 프로그램 메모리를 관리했다고 한다. 하지만 자바에서는 JVM이 가비지 컬렉션이라는 프로세스를 통해 프로그램 메모리를 관리한다. 가비지 컬렉션은 자바 프로그램에서 사용되지 않는 메모리를 지속적으로 찾아내서 제거하는 역할을 한다. 단점 : GC 작업은 순수 오버헤드로 프로그램이 해야할 일을 하지 못하도록 하는 순간이다. Mark and Sweep Java가 채택하고 있..
현대 사회에서는 인터넷에 연결되는 공유기의 숫자가 기하 급수적으로 올라갔다. 42억개의 ip 주소가 거의 동이 나버린 상태이다. 근본적인 해결책. 1. 인터넷 주소를 나타내는 체계를 바꿈. -> IPv4 -> IPv6 체계로 변경하여 더 많은 ip를 사용할 수 있도록 한다. 2. 공유기로 대표 ip 주소를 할당, IPv4 체계에서의 활동 ip수를 낮춘다. 공유기[라우터] 공유기는 라우터라고 칭한다. 집안의 모든 전자기기가 하나의 IP를 가지고 있다면, IPv4 체계 하에서 인터넷 주소의 수가 부족하게 될 것이므로 공유기는 대표 ip주소를 가지고, ip주소의 숫자를 아낄 수 있는 대표적인 방법. IP address : 인터넷을 사용하기 위한 컴퓨터의 ip 주소. 예시) 통신을 위해서는 서버 - 클라이언트는..
NAT (공유기 = 라우터) NAT가 보통 게이트웨이 역할을 하는데, 해당 라우터 안에서 관리하는 IP 대역은 아래와 같이 나타낸다. 192.168.0.X [네트워크 ID].[호스트 ID] 만약 내부망 NAT에 여러 대의 PC가 연결되어 있다고 가정해보자. 각각의 IP(Private IP)는 다음과 같다. PC#1 : 192.168.0.1 PC#2 : 192.168.0.2 PC#3 : 192.168.0.3 ... PC#255 : 192.168.0.255 Unicast 만약 내부망의 서버끼리 통신한다면. 예시) PC#1 -> PC#2 | 192.168.0.1 -> 192.168.0.2 통신 주체 각각 내부망 NAT에 연결되어 있는 주체 서버가 통신하는 경우는 유니캐스트라 말할 수 있다. Broadcast ..
Data Ingestion 단계에서 튜닝이 필요한 이유 . 내가 겪어본 케이스 중에서는 Data Ingestion 단계에서부터 튜닝이 필요한 경우는 다음과 같다. 1. Spark Job의 Task 중 데이터를 메모리에 올리는 시간이 생각보다 오래 걸린다. (비용, 쉬는 자원 발생) 때문에 병렬로 데이터를 한꺼번에 빠르게 가져와야 구동 시간을 그만큼 줄일 수 있다. 2. Data Ingestion 를 수행하는 task가 하나의 executor에 몰려서 GC Time (정확히 꼽자면 Major GC가 극악으로 발생하여 어마어마한 Job 실행시간을 늘려버리는 경우가 발생한다.) 이 케이스는 간헐적으로 발생하는 케이스였어서 배치로 실행시킨 spark job 이 이런 경우를 보였을때는 진짜 멘붕 그 자체 였다....
오라클의 논리적인 저장구조 논리적 구조 : BLOCK < EXTENT < SEGMENT < TABLESPACE 출처 https://www.youtube.com/watch?v=Z-xgqtUJDes https://velog.io/@bae12/Oracle-DB Tablespace 오라클 Database에서 Data들이 저장되는 가장 큰 영역(MS SQL에서 DB개념) 데이터베이스는 하나 또는 다수의 테이블스페이스라는 논리적 공간으로 이루어진다. 하나의 테이블스페이스는 하나의 데이터베이스에 속해야 한다. 하나의 테이블스페이스는 한 개 또는 다수의 데이터 파일로 이루어 진다. 테이블 스페이스를 생성하여 테이블이 저장될 공간을 할당하고 테이블을 생성한다. 지정한 크기보다 데이터가 많으면 죽고, 많이 남으면 공간이 ..
자바 컴파일 과정 자바 컴파일러는 .java 로 작성된 파일을 읽어 Class화 한다. Class 화 한다는 것은 바이트 코드로 변환하여 클래스 로더에 의해 JVM에 들어와 메모리 공간을 만들어주고 컴퓨터가 이해할 수 있는 기계어로 만든다는 것. 즉, 클래스 로더에 의해 클래스 파일 내 내용이 JVM 안의 메모리로 올라가고(Method Area), 기계어로 변환도 해주는 역할을 수행한다. JVM 이란? 이렇게 자바 바이트 코드화 된 반기계어는 아직 '컴퓨터'가 읽을 수 없는 바이트 코드를 뜻하며, JVM이 이 바이트 코드를 완전한 기계코드로 바꿔준다. JVM은 자바 가상머신으로 자바 프로그램을 실행시켜주는 가상 컴퓨터라고 생각하면 된다. Method Area에 배치된 자바 .class파일의 byte 코드..
동기적 코드 아래 코드는 '짜여진' 순서대로 실행된다. 때문에 식사 완료가 되기 전 mealtime 시간동안 '블로킹'이 발생하게 되고, 이로써 최종 코드 delivery("C", 1) 구동시간까지 지연시간이 발생하게 된다. import time def delivery(name, mealtime): print(f"{name}에게 배달 완료!") time.sleep(mealtime) print(f"{name} 식사 완료, {mealtime}시간 소요...") print(f"{name} 그릇 수거 완료") def main(): delivery("A", 1) delivery("B", 1) delivery("C", 1) if __name__ == "__main__": start = time.time() prin..