Data Engineering/Zeppelin

Data Engineering/Zeppelin

[Zeppelin] Maven 의존성

Maven 의존성Maven에서 의존성은 프로젝트를 빌드, 테스트, 배포할 때 필요한 외부 라이브러리, 프레임워크, 플러그인 등을 의미함.Maven은 이러한 의존성을 자동으로 관리하여 개발자가 직접 라이브러리를 다운로드하고 설정하는 수고를 덜어줌.의존성 관리는 Maven의 핵심 기능 중 하나로, 특히 대규모 프로젝트에서 개발의 생산성을 높이고 유지보수를 용이하게 만듦. Maven 의존성의 기본 개념Maven에서 의존성은 pom.xml 파일에 dependencies 섹션을 통해 정의됨.각 의존성은 GAV 형태로 관리됨.1. Group ID라이브러리나 프로젝트의 소속을 나타내는 식별자 2. Artifact ID특정 라이브러리를 구분하는 이름 3. Version해당 라이브러리의 버전 기본 의존성 설정 ..

Data Engineering/Zeppelin

[Zeppelin] Realm

Realm 개요 및 정의Realm은 모바일 애플리케이션용 데이터베이스로, 특히 iOS와 Android 환경에서 효율적으로 사용될 수 있도록 설계된 NoSQL 기반 데이터베이스 엔진임.Realm은 로컬 데이터베이스를 지원하며, SQLite와 Core Data를 대체할 수 있는 대안으로 널리 사용됨.Realm의 주요 목표는 빠른 성능, 간결한 API, 데이터의 동기화 및 보안을 제공함.Realm은 오픈 소스 프로젝트로 시작되었으며, 현재 MongoDB가 이를 인수하여 관리하고 있음.Realm의 클라우드 기능과 Realm Sync를 활용하면 클라이언트 간에 데이터를 자동으로 동기화할 수 있임.Realm의 주요 특징1. 고성능 및 빠른 속도Realm은 SQLite보다 최대 10배 빠른 성능을 제공할 수 있음.데..

Data Engineering/Zeppelin

[Zeppelin] Neo4j

Neo4jNeo4j는 그래프 데이터베이스의 대표적인 솔루션임.노드와 관계를 이용해 데이터를 저장하고 쿼리하는 데이터베이스임.관계형 데이터베이스와 달리, 데이터의 연결성을 자연스럽게 모델링하고 빠르게 탐색할 수 있도록 설계됨.이를 통해 복잡한 관계형 데이터를 다루는 데 효율적이며, 특히 소셜 네트워크 분석, 추천 시스템, 공급망 관리, 사기 탐지 등에서 뛰어난 성능을 발휘함. Neo4j의 기본 개념Neo4j의 데이터 구조는 그래프 모델을 기반으로 함. 1. 노드데이터를 표현하는 기본 단위임.예를 들어, 사람, 장소, 제품 등이 노드로 표현됨.각 노드는 속성을 가질 수 있음.예를 들어, name, age, location과 같은 키값 쌍 형태의 속성임.노드는 레이블을 사용해 카테고리화할 수 있음.예를 들어 ..

Data Engineering/Zeppelin

[Zeppelin] 전송 계층

전송 계층전송 계층은 컴퓨터 네트워크의 OSI 모델과 TCP/IP 모델에서 중요한 역할을 하는 계층임.응용 프로그램 간의 통신을 책임지는 계층임.이 계층의 주요 기능은 데이터 전송의 신뢰성, 효율성, 그리고 정확성을 보장하는 것임. 핵심 기능1. 연결의 설정과 해제TCP를 예로 들면, 연결 지향적인 성격을 가지며, 데이터를 전송하기 전에 먼저 연결을 설정하고, 통신이 끝난 후에는 연결을 정리함. 2. 신뢰성 있는 통신데이터가 손상되지 않고, 정확한 순서로, 중복 없이 전동되도록 함.이는 TCP에서의 에러 검출, 순서 번호 부여, 재전송 제어 등으로 이루어짐. 3. 흐름 제어송신자와 수신자 간의 데이터 처리 속도 차이를 조절함.TCP에서는 수신자 버퍼의 여유 공간을 기반으로 송신 속도를 조절하는 슬라이딩 ..

Data Engineering/Zeppelin

[Zeppelin] 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서버는 클라이언트의 요청을 받아들이며, 응답으로 연..

Data Engineering/Zeppelin

[Zeppelin] 웹소켓

웹소켓웹소켓은 클라이언트와 서버 간에 양방향 통신을 실현하는 프로토콜임.일반적인 HTTP 통신과는 달리, 웹소켓은 지속적으로 연결을 유지하며 데이터를 실시간으로 주고받을 수 있음.웹소켓을 사용하면 브라우저나 애플리케이션이 서버와 지속적으로 연결을 유지해 서버가 새로운 정보를 클라이언트에 즉시 푸시할 수 있는 환경을 제공함 1. 웹소켓의 동작 방식1. 핸드셰이크웹소켓 연결을 시작할 때 클라이언트는 HTTP 요청을 통해 웹소켓 핸드셰이크를 수행함.이 과정에서 `Upgrade: websocket`이라는 헤더를 사용하여 HTTP를 웹소켓 프로토콜로 업그레이드함.서버가 이 요청을 수락하면 연결이 확립됨.  2. 양방향 통신핸드셰이크 후, 연결이 설정되면 양방향으로 데이터를 실시간으로 주고받을 수 있음.클라이언트와..

Data Engineering/Zeppelin

[Zeppelin] Zeppelin에서 Flink를 사용하는 방법

Zeppelin에서 Flink를 사용하는 방법Zeppelin에서 Flink를 사용하는 방법은 다음과 같음.Zeppelin은 여러 데이터 처리 엔진을 통합하여 사용 가능한 인터페이스를 제공함.Flink는 실시간 스트리밍 및 배치 처리 기능을 제공하는 분산 처리 엔진임.두 시스템을 연동하여 사용할 수 있음. 1. Zeppelin 설치 및 설정Zeppelin이 설치되어 있지 않은 경우, 먼저 Zeppelin을 설치해야 함.Zeppelin은 다양한 인터페이스를 통해 여러 데이터 엔진과 상호작용할 수 있는 도구임.Flink와 같은 엔진을 사용하려면 해당 플러그인을 Zeppelin에 설치하고 설정해야 함.Zeppelin 다운로드 및 설치하는 가이드는 다음과 링크를 참조하면 됨.https://zeppelin.apac..

Data Engineering/Zeppelin

[Zeppelin] Apache livy

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..

Data Engineering/Zeppelin

[Zeppelin] 제플린 실행 프로세스

제플린 실행 프로세스제플린이 실행될 때 여러 개의 프로세스가 작동하면서 사용자의 데이터 분석을 위해 인터렉션할 수 있는 환경을 설정함.이 과정에서 가장 중요한 부분은 제플린 서버의 구동과 인터프리터 프로세스의 실행 및 관리임. 1. 제플린 서버 프로세스 시작아파치 제플린의 실행은 제플린 서버 프로세스부터 시작됨.이 프로세스는 자바로 작성된 메인 애플리케이션으로, 아파치 제플린의 핵심 기능들을 관리함. 1. 제플린 메인 프로세스 시작사용자는 bin/zeppelin.sh start 명령어를 통해 제플린 서버를 시작함.이 명령어는 기본적으로 제플린이 설치된 위치에서 ZeppelinServer 라는 Java 애플리케이션을 시작하게 함. 2. JVM 프로세스 실행ZeppelinServer는 JVM 위에서 동작함...

Data Engineering/Zeppelin

[Zeppelin] 분산 시스템

분산 시스템분산 시스템은 여러 개의 독립적인 컴퓨터들이 협력하여 하나의 시스템처럼 작동하는 컴퓨터 네트워크를 의미함.각 컴퓨터는 독립적으로 동작할 수 있지만, 전체적으로 하나의 일관된 목표를 위해 서로 협력하며 작업을 수행함.이는 현대의 IT 인프라에서 핵심적인 기술임.대규모 데이터 처리, 고가용성, 확장성, 성능 최적화를 위해 많이 사용됨.분산 시스템은 다음과 같은 핵심 요소와 특징을 가지고 있음. 1. 기본 개념 및 구성 요소1. 노드분산 시스템에서 노드는 독립적으로 작동하는 컴퓨터나 프로세스를 의미함.노드는 서버, 클라이언트, 혹은 데이터베이스 등으로 구성될 수 있음. 2. 네트워크분산 시스템의 노드들은 네트워크를 통해 서로 통신함.인터넷, LAN, 혹은 클라우드 네트워크를 사용할 수 있음. 3. ..

박경태
'Data Engineering/Zeppelin' 카테고리의 글 목록