intellij 에서 Spark를 Scala로 실행하는 도중 만난 에러Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession$ at ReadCsvGzExample$.main(ReadCsvGzExample.scala:6) at ReadCsvGzExample.main(ReadCsvGzExample.scala)Caused by: java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession$ at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java..
IstioIstio는 클라우드 네이티브 애플리케이션에서 마이크로서비스 아키텍처를 관리하기 위해 설계된 서비스 메쉬 플랫폼임.Istio는 서비스 간 통신, 트래픽 관리, 보안, 관찰 가능성 등을 지원하여 복잡한 분산 시스템의 운영을 단순화함. Istio의 기본 개념1. 서비스 메쉬서비스 메쉬는 애플리케이션 레벨에서 네트워크 통신을 관리하기 위한 레이어임.각 서비스 간 통신을 추상화하고 제어할 수 있게 함.Istio는 서비스 메쉬의 대표적인 구현체로, 서비스 간 데이터 플레인과 제어 플레인을 제공함. 2. 주요 목표A. 트래픽 관리: 서비스 간 트래픽 라우팅, 로드 밸런싱, 장애 복구 등 제어.B. 보안: 서비스 간 통신 암호화(TLS) 및 인증/인가 제공.C. 관찰 가능성: 서비스 메트릭, 로그, 트레이싱..
EKS Add-onAmazon EKS의 Add-on은 Kubernetes 클러스터에서 자주 사용되는 확장 기능이나 도구를 AWS에서 관리하고 자동으로 배포, 업데이트, 운영할 수 있도록 제공하는 서비스임.일반적으로 Kubernetes의 핵심 기능을 보완하거나 확장하기 위해 설치하는 애드온(Add-on)을 AWS 환경에 맞게 최적화하여 제공함.이를 통해 운영자는 직접 설치와 관리를 줄이고 더 안정적이고 일관된 환경을 구성할 수 있음. EKS Add-on의 주요 특징1. AWS 관리애드온 설치 및 업데이트는 AWS가 관리하므로 사용자는 Kubernetes 클러스터 관리 부담을 줄일 수 있음.최신 버전 관리 및 호환성 테스트가 AWS에 의해 이루어짐. 2. 통합 관리EKS 콘솔, CLI 또는 API를 통해 애..
EKS와 Secrets Manager 통합Amazon EKS와 AWS Secrets Manager를 통합하여 Kubernetes 클러스터에서 민감한 데이터를 안전하게 관리하는 방법은 다음과 같음.이 과정은 Kubernetes 애플리케이션에서 Secrets Manager에 저장된 비밀(예: 데이터베이스 자격 증명, API 키 등)을 안전하게 사용하도록 설정하는 단계로 구성됨. Secrets Manager에 비밀 저장1. AWS 콘솔에서 Secrets Manager로 이동.2. 비밀 생성(Create Secret) 버튼 클릭.3. 비밀 유형 선택 (예: "Other type of secrets" 또는 "Credentials for RDS database").4. 비밀 키와 값을 입력하거나 JSON 형식으로 ..
eksctl 설치 방법eksctl은 AWS Elastic Kubernetes Service(EKS)를 간편하게 관리할 수 있도록 설계된 명령줄 도구임. 사전 요구 사항eksctl을 사용하려면 다음 환경이 필요함.1. AWS CLI설치 및 구성 필요 (AWS 계정 및 인증 정보 설정) 2. kubectlKubernetes 클러스터 관리 도구 3. Go (Optional)소스에서 eksctl을 빌드하려는 경우 필요 운영 체제 호환성eksctl은 다음 운영 체제를 지원함.1. macOS2. Linux (Ubuntu, Debian 등)3. Windows (WSL 포함) 설치 방법 - Homebrew (macOS, Linux)가장 간단한 설치 방법은 Homebrew를 사용하는 것임.1. Homebrew 업데이트..
AWS EKSAmazon EKS는 AWS에서 제공하는 관리형 Kubernetes 서비스임.EKS는 사용자가 컨테이너화된 애플리케이션을 쉽게 배포, 관리, 확장할 수 있도록 지원하며, Kubernetes 클러스터를 AWS 클라우드 환경 및 온프레미스 환경 모두에서 실행할 수 있도록 설계됨. AWS EKS 주요 특징1. 관리형 Kubernetes 제어 플레인EKS는 Kubernetes 제어 플레인을 관리함.이는 API 서버, etcd 데이터 저장소, 노드 통신 등을 포함하며 AWS에서 고가용성과 보안을 유지하면서 관리됨.사용자는 워커 노드만 관리하면 됨. 2. 자동화된 업그레이드 및 패치Kubernetes 버전 업데이트 및 패치가 자동으로 이루어져 최신 상태와 보안 패치를 유지할 수 있음. 3. AWS 통합..
Amazon S3S3는 AWS의 객체 스토리지 서비스임.웹에서 대규모 데이터를 저장하고 검색할 수 있는 서비스임. Amazon S3 주요 특징1. 객체 스토리지데이터를 파일 단위로 저장하며, 각 객체는 고유의 키를 가짐2. 스케일링페타바이트 수준의 데이터까지 저장 가능3. 내구성 및 가용성99.999999999% 내구성과 99.99% 이상의 가용성을 제공함4. 글로벌 인프라전 세계 여러 리전과 가용 영역에 데이터를 분산함.5. 요금 구조저장 용량, 요청 수, 데이터 전송량 등에 따라 종량제 요금을 부과함. Amazon S3 활용 사례1. 데이터 백업 및 복구2. 대규모 데이터 레이크 운영3. 정적 웹사이트 호스팅4. 분석 워크플로우 저장소 S3AS3A는 Hadoop 환경에서 Amazon S3와 연동하기 ..
웹 통신 프로토콜웹 통신 프로토콜은 인터넷 상에서 클라이언트와 서버간에 데이터를 교환하는 규칙과 표준을 정의한 체계임.이 것은 웹의 기반 기술로, 데이터 요청과 응답이 이루어지는 방식을 정의함. 웹 통신 프로토콜의 핵심 역할1. 데이터 전송 규칙 정의클라이언트와 서버가 어떤 방식으로 데이터를 요청하고 응답할지, 데이터를 어떤 형식으로 주고받을지 명확히 정의함. 2. 데이터의 무결성과 정확성 보장데이터 전송 중 손실이나 오류 없이 정확히 전달되도록 보장함. 3. 표준화된 통신 지원다양한 기기, 운영체제, 브라우저 간의 상호운용성을 제공함. 4. 보안 및 암호화 지원HTTPS, TLS 등의 프로토콜을 통해 데이터를 암호화하고 전송 중 보안을 강화함. 주요 웹 통신 프로토콜의 계층 구조웹 통신 프로토콜은 OS..
HTTP와 HTTPS 동작방식HTTP와 HTTPS는 웹 통신 프로토콜임.각각의 동작 방식과 차이점이 있음. HTTP 기본 동작 원리HTTP는 클라이언트와 서버 간의 요청 및 응답을 통해 데이터를 주고받는 프로토콜임. HTTP 동작의 주요 과정1. 요청 및 응답 구조1.1 클라이언트 요청클라이언트는 HTTP 요청 메시지를 생성함.이 메시지는 URL, 요청 메서드(GET, POST, PUT, DELETE 등), 헤더(메타 정보), 본문(POST 요청 시 데이터 포함)으로 구성됨.1.2 서버 응답서버는 요청을 처리한 후, HTTP 응답 매시지를 보냄.응답 메시지는 상태 코드(200, 404, 500 등), 응답 헤더, 응답 본문(HTML, JSON 등)으로 구성됨. 2. 상태 코드HTTP는 상태 코드를 통해 ..
Maven 의존성Maven에서 의존성은 프로젝트를 빌드, 테스트, 배포할 때 필요한 외부 라이브러리, 프레임워크, 플러그인 등을 의미함.Maven은 이러한 의존성을 자동으로 관리하여 개발자가 직접 라이브러리를 다운로드하고 설정하는 수고를 덜어줌.의존성 관리는 Maven의 핵심 기능 중 하나로, 특히 대규모 프로젝트에서 개발의 생산성을 높이고 유지보수를 용이하게 만듦. Maven 의존성의 기본 개념Maven에서 의존성은 pom.xml 파일에 dependencies 섹션을 통해 정의됨.각 의존성은 GAV 형태로 관리됨.1. Group ID라이브러리나 프로젝트의 소속을 나타내는 식별자 2. Artifact ID특정 라이브러리를 구분하는 이름 3. Version해당 라이브러리의 버전 기본 의존성 설정 ..
Realm 개요 및 정의Realm은 모바일 애플리케이션용 데이터베이스로, 특히 iOS와 Android 환경에서 효율적으로 사용될 수 있도록 설계된 NoSQL 기반 데이터베이스 엔진임.Realm은 로컬 데이터베이스를 지원하며, SQLite와 Core Data를 대체할 수 있는 대안으로 널리 사용됨.Realm의 주요 목표는 빠른 성능, 간결한 API, 데이터의 동기화 및 보안을 제공함.Realm은 오픈 소스 프로젝트로 시작되었으며, 현재 MongoDB가 이를 인수하여 관리하고 있음.Realm의 클라우드 기능과 Realm Sync를 활용하면 클라이언트 간에 데이터를 자동으로 동기화할 수 있임.Realm의 주요 특징1. 고성능 및 빠른 속도Realm은 SQLite보다 최대 10배 빠른 성능을 제공할 수 있음.데..
Neo4jNeo4j는 그래프 데이터베이스의 대표적인 솔루션임.노드와 관계를 이용해 데이터를 저장하고 쿼리하는 데이터베이스임.관계형 데이터베이스와 달리, 데이터의 연결성을 자연스럽게 모델링하고 빠르게 탐색할 수 있도록 설계됨.이를 통해 복잡한 관계형 데이터를 다루는 데 효율적이며, 특히 소셜 네트워크 분석, 추천 시스템, 공급망 관리, 사기 탐지 등에서 뛰어난 성능을 발휘함. Neo4j의 기본 개념Neo4j의 데이터 구조는 그래프 모델을 기반으로 함. 1. 노드데이터를 표현하는 기본 단위임.예를 들어, 사람, 장소, 제품 등이 노드로 표현됨.각 노드는 속성을 가질 수 있음.예를 들어, name, age, location과 같은 키값 쌍 형태의 속성임.노드는 레이블을 사용해 카테고리화할 수 있음.예를 들어 ..
전송 계층전송 계층은 컴퓨터 네트워크의 OSI 모델과 TCP/IP 모델에서 중요한 역할을 하는 계층임.응용 프로그램 간의 통신을 책임지는 계층임.이 계층의 주요 기능은 데이터 전송의 신뢰성, 효율성, 그리고 정확성을 보장하는 것임. 핵심 기능1. 연결의 설정과 해제TCP를 예로 들면, 연결 지향적인 성격을 가지며, 데이터를 전송하기 전에 먼저 연결을 설정하고, 통신이 끝난 후에는 연결을 정리함. 2. 신뢰성 있는 통신데이터가 손상되지 않고, 정확한 순서로, 중복 없이 전동되도록 함.이는 TCP에서의 에러 검출, 순서 번호 부여, 재전송 제어 등으로 이루어짐. 3. 흐름 제어송신자와 수신자 간의 데이터 처리 속도 차이를 조절함.TCP에서는 수신자 버퍼의 여유 공간을 기반으로 송신 속도를 조절하는 슬라이딩 ..
TCP 통신TCP 통신은 네트워크에서 데이터를 신뢰성 있게 전달하기 위해 사용하는 프로토콜임.TCP는 OSI 7계층 중 전송 계층에 속하며, 주로 인터넷을 통해 데이터를 전송할 때 많이 사용됨. TCP 통신의 주요 특징과 과정1. 신뢰성 있는 데이터 전송TCP는 데이터의 정확한 전달을 보장하기 위해, 데이터가 손실되거나 순서가 뒤바뀌는 것을 방지함.이를 위해 TCP는 3-way 핸드셰이크 및 4-way 핸드셰이크를 통해 연결을 설정하고 해제함. 2. 3-way 핸드셰이크TCP 통신을 시작하기 위해서는 클라이언트와 서버가 서로 연결을 설정해야 함.이 과정은 다음과 같은 3단계를 거침 2-1. SYN클라이언트가 서버에 연결 요청을 보냄.2-2. SYN-ACK서버는 클라이언트의 요청을 받아들이며, 응답으로 연..
웹소켓웹소켓은 클라이언트와 서버 간에 양방향 통신을 실현하는 프로토콜임.일반적인 HTTP 통신과는 달리, 웹소켓은 지속적으로 연결을 유지하며 데이터를 실시간으로 주고받을 수 있음.웹소켓을 사용하면 브라우저나 애플리케이션이 서버와 지속적으로 연결을 유지해 서버가 새로운 정보를 클라이언트에 즉시 푸시할 수 있는 환경을 제공함 1. 웹소켓의 동작 방식1. 핸드셰이크웹소켓 연결을 시작할 때 클라이언트는 HTTP 요청을 통해 웹소켓 핸드셰이크를 수행함.이 과정에서 `Upgrade: websocket`이라는 헤더를 사용하여 HTTP를 웹소켓 프로토콜로 업그레이드함.서버가 이 요청을 수락하면 연결이 확립됨. 2. 양방향 통신핸드셰이크 후, 연결이 설정되면 양방향으로 데이터를 실시간으로 주고받을 수 있음.클라이언트와..
Zeppelin에서 Flink를 사용하는 방법Zeppelin에서 Flink를 사용하는 방법은 다음과 같음.Zeppelin은 여러 데이터 처리 엔진을 통합하여 사용 가능한 인터페이스를 제공함.Flink는 실시간 스트리밍 및 배치 처리 기능을 제공하는 분산 처리 엔진임.두 시스템을 연동하여 사용할 수 있음. 1. Zeppelin 설치 및 설정Zeppelin이 설치되어 있지 않은 경우, 먼저 Zeppelin을 설치해야 함.Zeppelin은 다양한 인터페이스를 통해 여러 데이터 엔진과 상호작용할 수 있는 도구임.Flink와 같은 엔진을 사용하려면 해당 플러그인을 Zeppelin에 설치하고 설정해야 함.Zeppelin 다운로드 및 설치하는 가이드는 다음과 링크를 참조하면 됨.https://zeppelin.apac..
Apache livyApache livy는 Spark 작업을 관리하고 상호작용하기 위한 REST 인터페이스를 제공하는 오픈소스 서비스임.Livy는 Apache Spark와 외부 애플리케이션 간의 통신을 간소화하며, Spark 클러스터를 관리할 수 있는 고수준의 API를 제공함.이를 통해 애플리케이션은 Spark와 보다 쉽게 통합할 수 있으며, 특히 웹 기반의 인터페이스나 애플리케이션에서 유용하게 사용됨. Apache livy의 주요 기능1. REST API 기반의 Spark 세션 관리Livy는 사용자가 REST API를 통해 Spark 세션을 생성하고 관리할 수 있도록 도와줌.Spark 세션을 생성하면 Livy는 이 세션을 백그라운드에서 관리하며, 다양한 프로그래밍 언어(Java, Scala, Pytho..
제플린 실행 프로세스제플린이 실행될 때 여러 개의 프로세스가 작동하면서 사용자의 데이터 분석을 위해 인터렉션할 수 있는 환경을 설정함.이 과정에서 가장 중요한 부분은 제플린 서버의 구동과 인터프리터 프로세스의 실행 및 관리임. 1. 제플린 서버 프로세스 시작아파치 제플린의 실행은 제플린 서버 프로세스부터 시작됨.이 프로세스는 자바로 작성된 메인 애플리케이션으로, 아파치 제플린의 핵심 기능들을 관리함. 1. 제플린 메인 프로세스 시작사용자는 bin/zeppelin.sh start 명령어를 통해 제플린 서버를 시작함.이 명령어는 기본적으로 제플린이 설치된 위치에서 ZeppelinServer 라는 Java 애플리케이션을 시작하게 함. 2. JVM 프로세스 실행ZeppelinServer는 JVM 위에서 동작함...
분산 시스템분산 시스템은 여러 개의 독립적인 컴퓨터들이 협력하여 하나의 시스템처럼 작동하는 컴퓨터 네트워크를 의미함.각 컴퓨터는 독립적으로 동작할 수 있지만, 전체적으로 하나의 일관된 목표를 위해 서로 협력하며 작업을 수행함.이는 현대의 IT 인프라에서 핵심적인 기술임.대규모 데이터 처리, 고가용성, 확장성, 성능 최적화를 위해 많이 사용됨.분산 시스템은 다음과 같은 핵심 요소와 특징을 가지고 있음. 1. 기본 개념 및 구성 요소1. 노드분산 시스템에서 노드는 독립적으로 작동하는 컴퓨터나 프로세스를 의미함.노드는 서버, 클라이언트, 혹은 데이터베이스 등으로 구성될 수 있음. 2. 네트워크분산 시스템의 노드들은 네트워크를 통해 서로 통신함.인터넷, LAN, 혹은 클라우드 네트워크를 사용할 수 있음. 3. ..
HeliumApache Zeppelin의 Helium은 Zeppelin 노트북의 기능을 확장하고 사용자 경험을 향상시키기 위해 플러그인 형태로 제공되는 프레임워크임.이를 통해 사용자는 시각화, 데이터 처리 및 변환, 인터랙티브 대시보드 등을 더 효율적으로 만들고 확장할 수 있음.Helium은 다양한 플러그인을 통해 Apache Zeppelin의 기본 기능을 보완하거나 전혀 새로운 기능을 추가할 수 있음. Helium의 구조 및 주요 개념Helium은 크게 두 가지 주요 요소로 구성됨.Visualization 플러그인과 Application 플러그인임. 1. Visualization 플러그인시각화 플러그인은 Zeppelin 노트북의 데이터 시각화 기능을 확장함.기본적으로 Zeppelin은 테이블, 파이 차..