Paging 기법과 주소 변환 Paging 기법에서는 프로그램을 구성하는 주소 공간이 동일한 크기의 Page 라는 단위로 잘려서, 각각의 Page가 물리적 메모리의 어디에나 올라갈 수 있다. 각각의 Page들이 어느 위치에 올라가 있는지 알기 위해서는 Page별로 주소 변환이 필요하다. Paging 기법 물리 메모리는 Frame 이라 불리는 같은 크기의 블록으로 나누어진다. 논리메모리는 Page라 불리는 같은 크기의 블록으로 나누어진다. Page Table에서 논리적인 주소에서 물리적인 주소로 주소 변환을 한다. 따라서 Page Table에서는 logical memory 의 개수만큼 entry 가 존재하게 된다. Index를 이용해서 곧바로 접근할 수 있는 자료 구조 형태이다. 각각의 Page는 Code..
전체 글
Data Engineering과 Cloud Native 기술에 대해 Dive Deep 하는 만능 플랫폼 엔지니어가 되는 것을 목표로 하고 있습니다. 경험했던 내용과 공부했던 내용을 기록합니다. 🐻❄️☁️Question: https://leetcode.com/problems/roman-to-integer/ Roman to Integer - LeetCode Can you solve this real interview question? Roman to Integer - Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, 2 is written as II in Roman numeral, just tw leetcode.com 이게 좋은 풀이인지는 모르겠는데;; 일단 쌩 구현으로 제출해서 accepted 된..
구조적 API 의 종류 Dataset DataFrame SQL Table 과 View DataFrame 과 Dataset 의 특징 공통점 : row 와 column 을 가지는 분산 테이블 형태의 컬렉션 Dataset은 결과를 생성하기 위해 어떤 데이터에 어떤 연산을 적용해야 하는지 정의하는 지연 연산의 실행 계획이며 불변성을 가진다. 스키마에 명시된 데이터 타입의 일치 여부를 컴파일 타임에 확인한다. Dataset 은 JVM 기반 언어인 scala 와 java에서만 지원하며, Dataset의 데이터 타입을 정의하려면 scala case class 나 JavaBean 을 사용해야 한다. DataFrame은 액션을 호출하면 스파크가 트랜스포매이션을 실제로 실행하고 반환함. 스키마에 명시된 데이터 타입의 일치..
Logical vs Physical Address 1. Logical Address (= Virtual Address) 프로세스마다 독립적으로 가지는 주소 공간 각 프로세스마다 0번지부터 시작 CPU가 보는 주소는 logical address 이다. 2. Physical Address 메모리에 실제 올라가는 위치 3. 주소 바인딩 : 주소를 결정하는 과정 어떤 프로그램이 물리적 메모리 어느 곳에 올라갈지를 결정한다. Symbolic Address -> Logical Address -> Physical Address *Symbolic Address : 프로그래머들이 특정 이름을 통해 변수를 지정하고 값을 저장할 때, 변수의 이름을 통해 값에 접근하게 된다. 즉 우리가 흔히 사용하는 포인터이다. 주소 바인딩..
Dataset - Java, Scala 언어에서 지원하며 정적 데이터 타입에 맞는 코드를 지원하기 위한 Spark 의 구조적 API이다. - Dataset API는 타입 안정성을 지원하므로 초기화에 사용한 class 대신 다른 class로 접근할 수 없다. ex. Dataset[Person] 구조적 스트리밍 - 스트림 처리용 고수준 API - 구조적 스트리밍을 사용하면 구조적 API 로 개발된 배치 모드의 연산을 스트리밍 방식으로 실행할 수 있음. - 데이터를 읽을 때 read 대신 readStream method 를 사용 - maxFiledsPerTrigger 옵션을 추가로 지정 우선 staticDataFrame 을 기존의 csv 파일들을 읽어서 생성한다. 구조적 스트리밍으로 실행하는 예시는 다음과 같..
·개발일기
주제 : 나의 삶 저는 항상 새로운 도전을 했고 도전을 위해 노력을 많이 했고, 가끔은 실패도 했던 삶을 살아왔던 것 같습니다. 어쩌면 도전하고 성취하는 과정에서 이루는 성취감과 성장이 제가 사는데 '도파민' 이 되었던 것 같습니다. 대학교에 입학을 하고 친구의 권유로 iOS 앱 개발 특강을 들었습니다. 처음엔 이게 개발 관련된 수업인지도 몰랐습니다. 지금 생각해보면 2달간의 질좋은 iOS 앱 개발 부트캠프 정도였던 것 같습니다. 처음으로 macOS를 접했고, imac을 사용했습니다. 새로운 것에 환장하는 저로써는 세상에 이런 분야도 있구나 신기하다 ! 라는 생각이 들었습니다. 원래는 마케팅과 광고홍보 쪽으로 나아가고 싶었으나 잘 풀리지 않았고 너무 외향적인 것(?)을 요구하는 분야라고 느껴 스트레스도 ..
스파크 기본 아키텍처 스파크는 클러스터의 데이터 처리 작업을 관리하고 조율한다. 스파크가 연산에 사용할 클러스터는 Spark Standalone Cluster Manager, Hadoop YARN, Mesos 와 같은 클러스터 매니저가 관리한다. 유저가 스파크 어플리케이션을 스파크 클러스터 매니저에 submit 하면 클러스터 매니저는 자원을 할당한다. 스파크 어플리케이션 스파크 어플리케이션은 드라이버 프로세스(Driver Process)와 다수의 익스큐터 프로세스 (Executor Process) 로 구성된다. 드라이버 프로세스는 main() 함수를 실행한다. 익스큐터 프로세스는 드라이버 프로세스가 할당한 작업을 수행한다. 그리고 진행 상황을 다시 드라이버 노드에 보고한다. 스파크 API 스파크 API ..
아파치 스파크 (Apache Spark) 란 통합 컴퓨팅 엔진이며 클러스터 환경에서 데이터를 병렬로 처리하는 '라이브러리'들의 집합이다. 1. 컴퓨팅 엔진 여기서 스파크가 '컴퓨팅 엔진' 이라는 의미는 스파크는 저장소 시스템의 데이터를 연산하는 역할만 수행하며 스파크가 직접 빅데이터들을 영구적으로 저장하는 저장소의 역할은 하지 않는다는 의미로 이해할 수 있다. 이러한 점은 Apache Hadoop 과 같은 기존의 빅데이터 플랫폼과의 차별점이 된다. Hadoop의 경우 하둡 파일 시스템과 컴퓨팅 시스템인 맵리듀스라는 두 가지 시스템이 매우 밀접하게 얽혀있어서 둘 중 하나만 단독으로 사용하기 어렵다. 반면, Spark의 경우에는 연산 작업을 수행하는 노드와 저장소를 별도로 구성할 수 있다는 장점이 있다. 2..