Back-End
-
하둡(Hadoop) MR(MapReduce)란?Back-End/Hadoop 2024. 7. 25. 13:45
맵리듀스(MapReduce)는 하둡에서 대규모 데이터 세트를 분산 처리하기 위해 사용되는 프로그래밍 모델입니다. 이 모델은 두 가지 주요 단계인 맵(Map)과 리듀스(Reduce)로 구성됩니다. 각각의 단계가 어떻게 작동하는지, 그리고 이를 통해 데이터가 어떻게 처리되는지를 자세히 설명드리겠습니다.맵리듀스(MapReduce) 작업의 개요맵(Map) 단계:입력 데이터를 작은 조각으로 나누고, 각 조각을 병렬로 처리하여 중간 결과를 생성합니다.맵 함수는 입력 데이터를 키-값 쌍으로 변환합니다.셔플(Shuffle) 및 정렬(Sort):맵 단계에서 생성된 중간 결과를 키를 기준으로 정렬하고, 같은 키를 가진 값들을 모읍니다.이 단계는 자동으로 수행되며, 데이터가 리듀서로 전송되기 전에 일어납니다.리듀스(Redu..
-
하둡(Hadoop)으로 데이터 저장 추출해보기Back-End/Hadoop 2024. 7. 25. 13:28
하둡을 사용하여 데이터를 저장하고 추출하는 과정은 여러 단계로 나뉘며, 각 단계는 비교적 직관적입니다. 아래에서는 하둡을 사용하여 데이터를 저장하고 추출하는 과정을 단계별로 쉽게 설명하겠습니다.1. 데이터 저장1.1 데이터 준비먼저 저장할 데이터를 준비합니다. 예를 들어, 로컬 파일 시스템에 저장된 로그 파일이나 CSV 파일 등을 준비합니다.1.2 HDFS에 데이터 업로드하둡 분산 파일 시스템(HDFS)에 데이터를 저장하기 위해, 로컬 파일 시스템에 있는 데이터를 HDFS로 업로드합니다. 이를 위해 hdfs dfs -put 명령어를 사용합니다.# 로컬 파일 system_logs.csv를 HDFS의 /data 디렉토리에 업로드hdfs dfs -put /path/to/local/system_logs.csv ..
-
하둡(Hadoop)이란?Back-End/Hadoop 2024. 7. 25. 12:52
하둡(Hadoop)은 오픈 소스 분산 처리 프레임워크로, 대규모 데이터 세트를 효율적으로 저장하고 처리하기 위해 개발되었습니다. 하둡은 저렴한 하드웨어를 이용하여 대용량 데이터를 분산 처리할 수 있도록 설계되었습니다. 아래에서는 하둡의 기본 개념, 구성 요소, 장점, 그리고 사용 사례를 자세히 소개하겠습니다.하둡의 기본 개념하둡은 대규모 데이터를 처리하기 위해 두 가지 주요 기능을 제공합니다:HDFS (Hadoop Distributed File System): 대규모 데이터를 분산 저장하는 파일 시스템입니다.MapReduce: 분산 데이터 처리 모델입니다.이 두 가지 기능을 결합하여 하둡은 데이터를 저장하고 분석하는데 탁월한 성능을 발휘합니다.하둡의 주요 구성 요소HDFS (Hadoop Distribut..
-
Spring Boot: Java vs KotlinBack-End/Spring 2024. 6. 13. 19:51
Spring Boot에서 Java와 Kotlin 비교: 어떤 언어가 더 나을까요?Spring Boot는 Java 및 Kotlin 두 가지 언어를 모두 지원하는 강력한 프레임워크입니다. 각 언어는 고유한 장점과 단점을 가지고 있으며, 특정 프로젝트의 요구 사항과 개발자의 선호도에 따라 선택이 달라질 수 있습니다. 이 글에서는 Spring Boot에서 Java와 Kotlin을 비교하여, 각 언어의 장점과 단점, 그리고 어떤 상황에서 어떤 언어를 선택하는 것이 좋은지 전문가 관점에서 자세히 살펴보겠습니다.Java 개요Java는 오라클(Oracle)에서 관리하는 범용 프로그래밍 언어로, 플랫폼 독립성과 풍부한 라이브러리, 강력한 커뮤니티 지원을 특징으로 합니다. 1995년에 처음 발표된 이후로 꾸준히 인기를 유..
-
Spring Starter Web vs Spring WebFluxBack-End/Spring 2024. 6. 13. 19:43
1. 서론 (Introduction)Spring Framework 소개Spring Framework는 엔터프라이즈 애플리케이션 개발을 위한 포괄적인 프로그래밍 및 구성 모델을 제공하는 오픈 소스 애플리케이션 프레임워크입니다. 주로 자바 플랫폼을 기반으로 하지만 Kotlin과 Groovy와 같은 언어도 지원합니다. Spring Framework는 다양한 기능을 제공하지만, 그 핵심은 다음과 같습니다:의존성 주입 (Dependency Injection): 애플리케이션의 구성 요소 간의 종속성을 관리하여 코드의 유연성과 재사용성을 높입니다.AOP (Aspect-Oriented Programming): 로깅, 트랜잭션 관리, 보안 등 횡단 관심사를 모듈화하여 코드의 관심사를 분리합니다.데이터 접근 통합: JDB..
-
golang: Tee 패턴이란?Back-End/Golang 2024. 5. 15. 21:12
Tee 패턴은 하나의 입력 채널에서 읽은 데이터를 여러 출력 채널로 복사하여 동시에 여러 곳에서 사용할 수 있게 하는 패턴입니다. 이 패턴은 이름 그대로 "티" 모양처럼 데이터를 여러 갈래로 나누는 기능을 합니다. 이 패턴은 데이터를 여러 곳에서 병렬로 처리할 때 유용합니다.Tee 패턴의 구조입력 채널: 데이터를 제공하는 채널입니다.출력 채널들: 입력 채널에서 읽은 데이터를 복사하여 전달할 여러 개의 출력 채널입니다.예제 코드아래 예제에서는 tee 함수가 입력 채널에서 데이터를 읽어 두 개의 출력 채널로 복사하는 기능을 수행합니다.package mainimport ( "fmt" "sync")// tee 함수는 입력 채널에서 데이터를 읽어 여러 출력 채널로 복사합니다.func tee(done 코..
-
golang: 파이프라인(pipeline)이란?Back-End/Golang 2024. 5. 15. 20:36
파이프라인(pipeline)은 데이터를 단계별로 처리하는 시스템에서 자주 사용되는 패턴입니다. 각 단계는 특정 작업을 수행하며, 한 단계의 출력이 다음 단계의 입력이 되는 방식입니다. 파이프라인 패턴을 사용하면 복잡한 작업을 작은 단계로 나누어 처리할 수 있어 코드의 이해와 유지보수가 쉬워집니다. Go 언어에서는 고루틴과 채널을 사용하여 파이프라인을 구현할 수 있습니다.파이프라인의 구성 요소생산자(Producer): 데이터를 생성하여 파이프라인에 입력하는 역할을 합니다.처리자(Processor): 데이터를 처리하여 다음 단계로 전달하는 역할을 합니다.소비자(Consumer): 최종 데이터를 받아 처리하는 역할을 합니다.파이프라인의 기본 구조단계(Stage): 각 단계는 독립적인 고루틴으로 실행됩니다.채널..
-
golang: 배열(Array)과 슬라이스(Slice)Back-End/Golang 2024. 5. 11. 13:10
I. 정의 및 기본 개념배열(Array): 배열은 Go에서 고정된 크기의 연속적인 메모리 영역에 동일한 타입의 요소들을 순차적으로 저장하는 데이터 구조입니다. 배열의 길이는 선언 시에 정해지며, 이후에는 변경할 수 없습니다. 배열 초기화 방법1. 기본 초기화: 배열을 선언하고, Go의 기본값으로 초기화됩니다. 숫자 타입의 배열은 0, 불리언 배열은 false, 포인터와 슬라이스, 맵, 채널은 nil로 초기화됩니다.var arr1 [3]int 2. 리터럴을 사용한 초기화: 배열 선언과 동시에 특정 값으로 초기화합니다.arr2 := [3]int{10, 20, 30} 3. 인덱스 지정 초기화: 특정 인덱스에 값을 할당합니다. 할당되지 않은 인덱스는 타입의 기본값으로 초기화됩니다.arr3 := [5]int{1:..