전체 글

전체 글

    [Spark] Array[Struct]의 값을 집계하는 방법 (aggregate 활용)

    https://spark.apache.org/docs/latest/api/sql/#aggregate Spark SQL, Built-in Functions Spark SQL, Built-in Functions Docs » Functions ! expr - Logical not. Examples: > SELECT ! true; false > SELECT ! false; true > SELECT ! NULL; NULL Since: 1.0.0 expr1 != expr2 - Returns true if expr1 is not equal to expr2, or false otherwise. Arguments: ex spark.apache.org Spark SQL의 AGGREGATE 펑션을 사용하면 Array 내의 ..

    [Kubernetes] #2 Kubernetes Architecture

    [Kubernetes] #2 Kubernetes Architecture

    CKA 자격증 준비 과정에서 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 수강하고 정리한 내용입니다. 대부분의 자료는 해당 강의의 자료이며, 이외 레퍼런스는 관련 내용 상단에 표기하였으니 참고 바랍니다. 1. Cluster Architecture 쿠버네티스는 컨테이너선과 이를 통제하는 컨트롤 타워로 구성된 선단에 비유할 수 있는데요, 실제 컨테이너(애플리케이션)이 올라가는 Worker Node와 주요 구성 요소를 배포하고 제어하는 역할을 하는 컨트롤 플레인(Control Plane)이 포함된 Master Node로 구성되어 있습니다. Master Node의 컨트롤 플레인은 현재의 상태(current state)를 사용자가..

    [Kubernetes] #1 Kubernetes(쿠버네티스) 개요 및 가상화 기술

    [Kubernetes] #1 Kubernetes(쿠버네티스) 개요 및 가상화 기술

    CKA 자격증 준비 과정에서 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 수강하고 정리한 내용입니다. 대부분의 자료는 해당 강의의 자료이며, 이외 레퍼런스는 관련 내용 상단에 표기하였으니 참고 바랍니다. 1. Kubernetes(쿠버네티스)란? Kubernetes : 컨테이너 오케스트레이션 도구 * 컨테이너 : 가상화 기술의 일종으로, 애플리케이션 실행 환경을 OS 레벨로 가상화하여 격리시키는 것 (e.g. 도커) * 오케스트레이션 : 컴퓨터 자원과 애플리케이션, 서비스에 대한 자동화된 설정, 관리 및 제어체계 즉, 다시 말해 Kubernetes란 컨테이너화된 애플리케이션에 대한 자동화된 설정, 관리, 제어체계입니다. K..

    [Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub)에 Random Port 설정하기

    JupyterHub에서 Spark 사용하기 [배경] 이전 포스팅(쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기)에서 설명했듯이, 단순히 JupyterHub를 구성하면 끝나는 것이 아니라, JupyterHub에서 Spark를 사용해야 합니다. 기본적으로 쿠버네티스 환경의 JupyterHub Helm은 호스트 네트워크(Host Network, Pod이 올라간 노드의 네트워크)를 사용하지 않는 것을 전제로 하는데요. 그래서 새로운 계정이 접속해서 노트북 Pod(singleuser)을 만들 때마다 Port를 무조건 8888로 할당하게 설정되어 있습니다. 호스트 네트워크를 사용하지 않기 때문에 한 노드에 여러 개의 Pod이 생성되어 모두 8888 포트를 사용하더라도, 실제 노드의 8..

    [Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기

    [Kubernetes] 쿠버네티스(Kubernetes)에서 주피터허브(JupyterHub) 구성하기

    쿠버네티스에 JupyterHub 구성하기 [배경] 회사에서 쿠버네티스(Kubernetes)를 이용해서 분석 환경을 구성하고 있습니다. 회사에서는 쿠버네티스를 Iaas(Infra as a service)를 제공하고, 각 팀에서는 본인의 팀 상황에 맞게 환경을 구축하는거죠. 제가 소속된 팀에서는 최근 JupyterHub를 도입하기로 결정했는데요. 그 이유는 3가지가 있습니다. Spark를 편리하게 사용하기 위해 노트북 환경이 필요함. 보안 설정을 위해 이미지를 따로 빌드해야 함. VSCode에서 SSH로 연결해서 사용 가능하도록 각자의 Instance(Pod)을 따로 구성해야 함. Spark를 사용하기에는 Zeppelin이 더 편리한 부분이 있지만 특히 보안 이슈와 VSCode 접근 목적으로 결국 Jupyt..

    [Vue] #1 Vue 2 시작하기

    Vue CLI Vue CLI는 npm(Node Package Manager)를 통해서 설치해야 합니다. 따라서 node, npm을 먼저 설치해봅시다. 참고로 node와 npm은 아래 설명을 참고하면 됩니다. Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, Non 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. node, npm, yarn 설치 (macOS) node, npm 설치 brew install node node -v npm -v yarn 설치 brew install yarn yarn -v vue cli 설치..

    [회사 생활] 2021년 회고 - 첫 퇴사와 두 번의 이직

    [회사 생활] 2021년 회고 - 첫 퇴사와 두 번의 이직

    4월이 되어서야 작년을 회고한다는 것이 우습기는 하지만.. 2021년은 특히 다사다난 했던 해였어서 늦게나마 적어보려고 합니다. 번아웃을 겪기도 했고 첫 이직이자 두 번의 이직을 겪기도 했습니다. 1. 첫 직장 첫 직장인 넥슨은 저에게 너무나도 감사하고 좋은 곳이었습니다. 비슷한 연차의 동료들과 함께 배우고 성장할 수 있었고, 10년차가 넘어서도 누구보다 노력하는 리더들을 보고 배울 수 있었고요. 게임 회사의 데이터 분석 본부에서, 어느 팀보다도 사업/운영/개발팀들과 가깝게 일해볼 수 있었던 기회이기도 했으며 많은 게임의 데이터들을 접해보고, 고민하고, 분석하며 데이터 분석가로서 성장할 수 있었던 너무나 감사한 기회였다고 생각합니다. 다만 제가 원하는 방향성은 데이터 분석가와는 조금 달랐던 것 같습니다...

    [Leetcode] 01. Add Two Numbers (Medium)

    [Leetcode] 01. Add Two Numbers (Medium)

    # Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next #최종 제출 class Solution: def addTwoNumbers(self, l1: Optional[ListNode], l2: Optional[ListNode]) -> Optional[ListNode]: result = ListNode() curr_node = result while True: next_val, curr_node.val = divmod(curr_node.val+l1.val+l2.val, 10) curr_node.next = ListNode(val=ne..

    [파이썬 클린코드] #1 클린 코드의 중요성

    클린 코드란? 품질 좋은 소프트웨어를 개발하고 견고하고 유지보구가 쉬운 시스템을 만들고 기술 부채를 회피하는 것 코드를 포매팅하고 구조화하여도 클린 코드의 요건을 충족시켰다고 말할 수 없다. 클린코드는 그 이상의 유지보수성이나 소프트웨어 품질에 관한 것을 말한다. 클린 코드의 중요성 민첩한 개발과 지속적인 배포 가능 프로젝트를 일정하게 예측 가능한 속도로 지속적으로 배포하려고 한다면 유지보수가 가능한 좋은 코드를 갖는 것이 필수적임 그렇지 않으면 새로운 기능을 추가할 때마다 리팩토링을 하고 기술 부채를 해결하기 위해 멈춰야 한다. 프로젝트 코딩 스타일 가이드 준수 코딩 가이드라인은 품질 표준을 지키기 위한 최소한의 요구사항 좋은 코드 레이아웃에서 가장 필요한 특성은 일관성 코드가 일관되게 구조화되어 있으..

    [Ray] 1. Python - Ray의 기본 개념과 Tasks

    1. Ray란? Ray를 테스트 해볼 수 있는 환경을 구성하였으니 Ray를 사용해봐야 합니다. Ray는 아직까지 국내에서는 활성화된 라이브러리가 아니라서 자료를 찾아보기 어려운데요, 가장 공부해보기 좋은 자료는 Ray 공식 문서입니다. docs.ray.io/en/master/ray-overview/ A Gentle Introduction to Ray — Ray v2.0.0.dev0 .rst .pdf to have style consistency --> docs.ray.io 공식 문서에 따르면 Ray는 "분산 애플리케이션을 구축하기 위해 간단하고 범용적인 API를 제공"을 미션으로 합니다. 그리고 그 미션을 달성하기 위해 아래 3가지 목표가 있습니다. Providing simple primitives fo..