본문 바로가기
728x90
반응형

전체 글50

스파크란? 스파크 vs 맵리듀스 1. 스파크란? 스파크는 클러스터 환경에서 데이터를 병렬적으로 처리하기 위한 라이브러리 집합이다. 하둡의 맵리듀스와 같은 역할을 하는 프레임워크라고 보면 되는데 다른 점이 몇가지 있다. 그리고 이 다른 점이 많은 사람들이 스파크를 쓰는 이유이다. 1) 스파크는 통합엔진이다. 스파크가 통합엔진이라는 것은 간단하게 말해 아주 다양한 라이브러리를 지원해준다는 뜻이다. 아래 그림을 보면 스파크는 spark core외에도 머신러닝을 위한 MLlib, 그래프 연산을 위한 GraphX 등 다양한 기능을 제공한다. 스파크 이전에는 이런 기능들을 쓰기 위해 각기 다른 프레임워크를 사용해야 했다(하이브, 마홋, ...). 하지만 이 모든 기능을 제공해주는 스파크가 등장하면서 사람들은 스파크 하나로 모든 것을 해결할 수 있.. 2024. 2. 10.
하둡 맵리듀스란? 맵리듀스 동작 방식 1. 맵리듀스란? 하둡의 맵리듀스는 데이터를 병렬로 처리하는 소프트웨어 프레임워크로 하둡의 핵심요소이다. 이전 포스팅에서 언급했듯이 하둡에서는 데이터들이 분산되어 디스크에 저장되어있다. 따라서 이 분산된 데이터에 연산을 할 때 어떻게 할 것인지, 그 방법이 필요한데 맵리듀스는 그에 대한 해답을 제공해준다. 맵리듀스는 분산된 데이터를 처리하는 방법은 쉽게 말해 divide and conquer 방식이다. 분산된 데이터 각각에 연산을 한 다음(맵) 그 결과를 하나로 합치는 것(리듀스)이다. 아래에 맵리듀스 애플리케이션이 어떻게 동작하는지 그림으로 설명되어있다. 여기서 프로그래머의 역할은 맵 합수와 리듀스 함수를 구현하는 것이다. 중간에 분산된 맵의 결과를 소팅하고 합쳐서 리듀스로 보내는 것은 맵리듀스 프레임.. 2024. 2. 9.
하둡 HDFS (Hadoop Distributed File System) 1. HDFS (Hadoop Distributed File System) 하둡에서 제공하는 분산 파일시스템으로 하둡에서 제공하는 여러 파일시스템 중 대표적인 파일시스템이다. 2. HDFS의 특징 1) 아주 큰 파일을 관리할 수 있다. 2) 스트리밍 방식의 데이터 접근을 지원한다. 따라서 응답시간은 느릴 수 있어도 처리량이 많다. 3) 한번 쓴 데이터는 수정할 수 없다. (append는 가능) 4) 장애 복구, 데이터 무결성 등을 지원한다. 3. HDFS 블록 HDFS는 블록 단위로 데이터를 관리한다. 블록 단위의 관리를 통해 서브시스템을 단순하게 유지하고 데이터의 복제(레플리케이션)를 용이하게 한다. HDFS에서 블록의 사이즈는 기본적으로 128MB로 비교적 크다. 블록 사이즈가 큰 이유는 서치타임과 블.. 2024. 2. 9.
하둡 YARN이란? 1. YARN (Yet Another Resource Negotiator)이란? 하둡의 클러스터 자원관리 시스템이다. 클라이언트가 서브밋한 잡에 자원(CPU, RAM 등)을 할당하고 잡을 실행시킨다. 2. YARN의 계층 구조 맵리듀스건 스파크건 하둡 위에서 도는 프로그램은 모두 YARN에 의해 관리된다. 3. YARN의 구조 YARN은 하나의 리소스 매니저와 여러 개의 노드 매니저로 이루어져있다. 리소스 매니저는 보통 HDFS의 네임노드에 있고 노드 매니저는 노드마다 한개씩 있다. 실제로 서브밋된 잡을 실행하고 모니터링 하는 일은 노드 매니저에서 일어난다. 리소스 매니저는 모든 노드 매니저리들을 모니터링하고 자원을 할당해주는 역할을 한다. 4. YARN 애플리케이션 YARN 애플리케이션은 YARN 리소.. 2024. 2. 9.
빅데이터란? 하둡(Hadoop)이란? 하둡 설치 1. 빅데이터란?빅데이터는 쉽게 말해 "기존의 전통적인 방법(RDBMS)으로는 다룰 수 없는 아주 많은 양의 데이터"를 의미한다. 왜 기존의 방법으로 다룰 수 없을까? RDBMS는 빅데이터를 다루는 데 있어 세가지 문제점을 가지고 있다. 첫 번째로 RDBMS는 scalability(확장성)이 떨어진다. 한 테이블에 몇 테라바이트가 되는 데이터를 저장하고, SQL문을 통해 저장된 데이터를 조작하거나 다른 테이블과 합치는 등의 연산을 하는 것은 불가능에 가깝다. 두 번째로 RDBMS는 어마어마한 양의 데이터를 저장하기에는 너무 비싸다. 마지막으로 RDBMS는 데이터가 엄격한 스키마를 지키기를 요구하는데 대부분의 빅데이터는 이 조건을 만족시키지 못한다. 따라서 빅데이터를 다루기 위해서는 RDBMS가 아닌 새로.. 2024. 2. 9.
파이썬 *args, **kwargs (파이썬 클린 코드 #4) 전편 ☞ 파이썬 *args, **kwargs란? 파이썬 코드를 보다보면 함수 정의의 파라미터 부분에서 *args, **kwargs를 쓰는 것을 볼 수 있다. 또 해당 함수를 호출 할 때는 아규먼트에 *, ** 연산자를 쓰는 것도 자주 볼 수 있다. 이번 포스팅에서는 *args, **kwargs가 도대체 무엇인지 알아보자. 1. *args 함수 파라미터에 *args를 쓰면 임의의 개수의 파라미터를 넘겨받을 수 있다. 즉, 아래와 같은 코드가 가능하다. def func(*args): for arg in args: print(arg) # 함수 호출 func('인자1', '인자2', 1, 2) 여기서 유의할 점은 함수가 임의의 개수의 파라미터를 받을 수 있게 해주는 연산자는 *이고, 뒤에 args는 그냥 파라미.. 2022. 10. 18.
728x90
반응형