분류 전체보기 1188

[Linux] Crontab - 사용자 전체 설정 확인

개요 일반적으로 Crontab 설정 정보를 확인할 때는 현재 사용자 또는 특정 사용자 계정에서 crontab -l을 사용하여 확인한다. crontab -l 다만 서버 내 계정이 많고, 관리자 root 권한을 갖고 있다면 보다 편하게 확인할 수 있을 것 같아 방법을 정리해 둔다. /var/spool/cron/crontabs 각 사용자가 작성한 crontab 설정은 아래 경로의 파일로 저장되는데, 파일의 소유자는 생성한 사용자로, 그룹 소유자는 crontab으로 지정된다. /var/spool/cron/crontabs/ /var/spool/cron/crontabs 경로는 root 사용자만이 읽기 권한을 가지고 있다. 실제 crontab 설정은 단순히 cat 명령어 등으로 확인하면 된다. crontab -u c..

Linux 2023.03.14

[AWS] S3 Select VS Athena

개요 S3 Select과 AWS Athena는 S3 버킷에 저장된 데이터를 DB를 사용하는 것처럼 SQL을 사용하여 조회할 수 있게 해 준다. 비슷한 기능을 제공하는데 두 서비스의 차이는 어떻게 될까? 간단히 정리해 둔다. S3 Select 참고 : 2022.11.07 - [AWS] S3 Select - 객체 내 데이터 쿼리 간단한 SQL을 사용해 전체 객체를 검색하는 대신 S3 객체 콘텐츠의 하위 집합을 검색하는 S3 기능이다. CSV, JSON, Apache Parquet 형식이어야 하며, GZIP, BZIP2 방식으로 압축된 데이터 대해서도 사용할 수 있다. 서버리스 기능이므로 기능을 사용하기 위해 관리해야 하는 인프라가 없다. 다만 SELECT 문만 지원하며 FROM, WHERE, LIMITS 절..

AWS 2023.03.13

[k8s/kube-prometheus-stack] node_exporter pending 현상

현상 쿠버네티스 클러스터 내 리소스를 모니터링하기 위해 kube-prometheus-stack helm chart로 Grafana와 Prometheus를 설치해서 사용하고 있다. 다만 설치한 helm-release의 설정 변경이 필요해, 운영 환경에 적용하기 전에 테스트를 하고자 별도의 네임스페이스에 kube-prometheus-stack chart를 다른 helm-release로 설치했다. helm-release는 정상적으로 설치되었으나 다음과 같이 node_export pod가 pending 상태로 머물러 있는 것을 확인했다. 원인 node-exporter를 describe 명령으로 살펴보면 Events 항목에 아래와 같은 메시지를 확인할 수 있다. node(s) didn't have free por..

Kubernetes/삽질 2023.03.12

[AWS] Athena 개념 및 사용법

AWS Athena 표준 SQL을 사용해 AWS S3에 저장된 데이터를 분석할 수 있는 대화형 쿼리 서비스 S3에 저장된 데이터를 지정하고 표준 SQL을 사용하면 임시 쿼리를 실행하여 결과를 얻을 수 있다. 즉, S3에 저장된 데이터를 DB에 저장된 데이터처럼 다룰 수 있다. 주로 로그와 같은 대규모 데이터를 로드하고 압축을 푸는데 필요한 시간과 비용을 줄이기 위해 사용한다. 특징 Serverless 서비스를 이용하기 위해 관리할 인프라가 없다. 또한 AWS 콘솔을 통해 사용할 수 있다. 비용 실행한 쿼리에 대한 비용을 지불한다. 조금 더 정확하게는 실행한 쿼리가 스캔한 데이터의 용량만큼 비용이 청구되는데 1TB 당 5달러 정도이다. 따라서 데이터 압축이나 파티셔닝을 이용해 스캔하는 양을 줄이면 보다 효..

AWS 2023.03.11

[Trino] 쿼리 실행 모델 - 2

개요 2023.03.09 - [Trino] 쿼리 실행 모델 - 1에 이어 쿼리 실행과 관련된 개념을 마저 정리한다. Split Task는 큰 데이터 세트의 부분인 Split에서 동작한다. 분산 쿼리 계획의 가장 낮은 단계인 stage는 커넥터에서 split을 통해 데이터를 검색하고, 분산 쿼리 계획의 더 높은 단게인 중간 stage는 다른 stage에서 데이터를 검색한다. Trino가 쿼리를 스케쥴링할 때, coordinator는 커넥터에 테이블을 사용할 수 있는 모든 split 목록을 쿼리 한다. Driver Task는 하나 이상의 병렬 드라이버를 포함한다. 드라이버는 데이터에 따라 동작하고 operator를 결합해 출력을 생성한다. 생성된 출력은 task에 의해 집계된 다음 다른 stage에서 다른 ..

Trino 2023.03.10

[Trino] 쿼리 실행 모델 - 1

개요 Trino에서 쿼리 실행과 관련된 개념을 정리해 둔다. 구문(Statement) ANSI SQL 표준으로 정의된 구문. 절(clause), 표현식(expression), 조건자(predicate)로 구성된다. Trino는 ANSI 호환 SQL 구문을 실행하며, 구문이 실행되면 Trino Worker에 배포되는 쿼리 플랜에 따라 쿼리를 생성한다. Query Trino는 구문(Statement)을 쿼리로 변환하고 분산 쿼리 계획을 생성한다. 분산 쿼리 계획은 Trino 워커에서 동작하는 상호 연결된 stage로 구현된다. 구문(Statement)이 Trino에게 전달되는 SQL 텍스트라면 쿼리는 구문을 실행하기 위해 인스턴스화된 구성과 구성 요소라고 할 수 있다. 쿼리는 stage, task, spli..

Trino 2023.03.09

[Trino] Data Sources

개요 Trino가 데이터를 다룰 때 사용하는 개념에 대해 정리한다. Connector 데이터베이스 드라이버와 유사하게 Trino를 Hive나 관계형 데이터베이스에 맞게 조정한다. 즉, 데이터 소스에 접근할 수 있는 인터페이스이다. Trino의 SPI(Service Provider Interface)를 구현한 것으로 표준 API를 사용해 리소스와 상호작용할 수 있도록 한다. Trinn은 여러 내장 커넥터를 포함하고 있어 다양한 데이터 소스의 데이터에 접근할 수 있다. Catalog Connector를 사용하여 Catalog 속성 파일로 구성된 데이터 소스 테이블 모음을 제공하는 하나 이상의 스키마가 포함되어 있다. Trino에서 SQL을 실행하는 것은 하나 이상의 카탈로그에 대해 SQL을 실행하는 것이다...

Trino 2023.03.08

[Trino] 서버 유형

Trino 클러스터 Trino 클러스터는 Coordinator와 여러 대의 Worker로 구성된다. 사용자 또는 클라이언트는 Coordinator와 연결하고, Coordinator은 Worker와 함께 동작하며 Catalog에서 구성된 데이터 소스에 접근한다. 이 글에서는 Coordinator와 Worker에 대한 개념을 정리해둔다. Coordinator 구문 분석, 쿼리 계획 및 Trino worker node 관리를 담당하는 서버 클러스터라면 하나씩 존재하는 마스터 서버에 해당한다. 클라이언트가 실행할 구문을 제출하기 위해 접속하는 노드이다. 모든 Trino에는 하나 이상의 Worker와 Coordinator가 존재해야 하며, 개발 또는 테스트 환경에서는 단일 인스턴스가 두 역할을 모두 수행하도록 구..

Trino 2023.03.07

[Trino] example-http 커넥터 연결

example-http 커넥터 example-http connector는 http를 통해 쉼표로 구분된 데이터, 즉 CSV 파일을 읽을 때 사용할 수 있다. CSV 데이터가 많은 경우, example-http를 이용해 쿼리를 작성하고 처리할 수 있다. 커넥터의 소스는 trino-example-http 디렉터리에 위치해 있다. 이 글에서는 example-http 커넥터를 이용해 예시 데이터를 로드해보려고 한다. 예시 데이터 데이터 URL : https://github.com/trinodb/trino/tree/master/plugin/trino-example-http/src/test/resources/example-data 예시 데이터가 있는 Github 디렉터리로 이동하면 여러 개의 CSV 파일과 exam..

Trino 2023.03.06

[Superset] Trino 연결

개요 2023.02.21 - [Superset] 설치 및 실행 2023.02.22 - [Superset] DB 연결 (MySQL) 2023.03.02 - [Trino] 설치/구성/실행 2023.03.04 - [Trino] MySQL Connector 추가 위 글에서 Superset과 Trino를 설치해 보고 각각의 소프트웨어로 MySQL Database에 연결해 보았다. 이 글에서는 Trino와 Superset을 연결하여 사용할 수 있도록 구성해보고자 한다. Superset에서도 직접 MySQL에 접근할 수 있지만, 구성 테스트이므로 Trino를 통해서 MySQL에 접근할 것이다. 요구 사항 Trino 352 이상의 버전이 필요하다. 이 글에서 설치된 Trino는 407이므로 이상 없이 진행할 수 있다...

Apache Superset 2023.03.05