전체 글 63

Flume을 통한 Kafka To HDFS 연계

데모 시나리오 개요 해당 시나리오는 Kafka Topic 에 적재 되어 있는 Data를 Consume 하여 HDFS 에 ORC 확장 자로 적재 하는 데모 시나리오 입니다. Apache Flume 이란 Apache Flume은 오픈소스 프로젝트로 개발된 로그 데이터를 수집 기술 입니다. 여러 서버에서 생산된 대용량 로그 데이터를 효과적으로 수집하여 HDFS과 같은 원격 목적지에 데이터를 전송하는 기능을 제공 합니다. 구조가 단순하고 유연하여 다양한 유형의 Streaming Data Flow아키텍처를 구성할 수 있습니다. Flume 구축 메뉴얼 #설치 경로 접속 $ cd /usr/local/ #플룸 설치 $ wget #압축풀기 $ tar -xvf apache-flume-1.10.1-bin.tar.gz #심볼..

Hadoop/Flume 2023.04.26

[VERTICA] Cluster 구성 시 Client에서 설정해야 할 JDBC 옵션

Vertica Cluster 구성 시 Clinet에서 설정해야 할 JDBC 옵션들이 있습니다. ConnectionLoadBalance = true Cluster 구성 시 쿼리 플랜을 각각의 노드에 Round-Robin으로 부여하기 위해서 해당 값을 true로 설정합니다. BackupServerNode = IP1:PORT1, IP2:PORT2, IP3:PORT3 Cluster 구성 시 한 노드에서 장애가 발생했을 때 다른 노드에 연결을 시도하기 위해 해당 값을 각 노드의 IP와 PORT 정보로 설정합니다. 참고자료 https://www.vertica.com/docs/9.3.x/HTML/Content/Authoring/ConnectingT..

DBMS/RDBMS 2023.04.11

[Apache Parquet] Python 사용하여 Parquet 파일 데이터 확인

Step1. Parquet 파일이 있는 서버에 conda, python 설치 Step2. conda, python 실행 Step3. Parquet 파일 확인 # import lib import pandas as pd from pyarrow.parquet import ParquetDataset # pandas로 path의 parquet파일 열기 pd.read_parquet('/path/test.parquet', engine='pyarrow', columns=['COL1']) # pyarrow로 parquet파일 row count 확인 ds = ParquetDataset('/path/test.parquet', use_legacy_dataset=False) nrows = sum(p.count_rows() fo..

Hadoop/Parquet 2023.04.11

[Vertica][VJDBC](3587) ERROR: Insufficient resources to execute plan on pool general

에러내용 [Vertica][VJDBC](3587) ERROR: Insufficient resources to execute plan on pool general 에러원인 리소스 풀(resource pool)이란 미리 서버나 스토리지 등의 자원을 확보하고 이를 사용자의 요청에 따라 제공한다는 개념 혹인 이를 확보해 놓은 가상적인 공간을 말합니다. 작업 수행시 사용 중인 user의 resource pool 값이 부족할 때 해당 에러가 발생합니다. 조치내용 리소스 풀(resource pool)의 MAXMEMORYSIZE 값을 조정했습니다. 리소스 풀(resource pool) 설정 시 배치에 대한 user, memory 사용량, 동시 쿼리 수행 수 등에 대한 배치의 전반적인 정보가 필요합니다. 이에 맞춰 us..

DBMS/RDBMS 2023.04.11

[Vertica][VJDBC](2245) ERROR : Attempted to create too many ROS container for projection

에러내용 [Vertica][VJDBC](2245) ERROR : Attempted to create too many ROS container for projection 에러원인 ContainersPerProjectionLimit 파라미터 설정값에 따라서 ROS Container 수가 초과될 경우 발생하며 기본값으로 1,024 로 설정되어 있고, 해당 수치를 초과하여 발생하는 에러입니다. 예를 들어, 1,000,000 만건의 로우를 COPY 할때 Batch size 100건으로 설정하면 1,000,000/100 = 10,000개의 ROS Container를 생성하게 되고 이럴 경우 1,024개를 초과하므로 해당 에러가 발생하게 됩니다. 조치내용 Batch size 건수를 늘려 ROS Container 생성..

DBMS/RDBMS 2023.04.11

Fluentd Web crawling

현재 테스트 서버에 아래와 같은 데모시나리오 테스트/개발 을 완료 하였습니다. 네이버 API를 사용하여 Rockplace 관련 뉴스 기사 정보를 파이썬 코드로 Web crawling 한 후 JSON형식으로 변환 합니다 그 후 플루언트디의 HTTP 통신을 통해 Kafka Topic에 해당 Data를 적재합니다. 파이썬 예제 소스 import requests import json from bs4 import BeautifulSoup from fluent import sender sender.setup('myapp', host='10.65.41.142', port=8888) url = 'https://openapi.naver.com/v1/search/news.json?' clientid = "ERgXUWS4i..

Kafka/Fluentd 2023.03.27

Web crawling

현재 테스트 서버에 아래와 같이 개발/테스트 완료 하였습니다. Naver Open API를 사용하여 네이버 뉴스의 RockPlace 관련 기사를 Logstash로 Web crawling 해준 후 Elastic Index에 적재 합니다 그 후 Kibana 에서 Index pattern을 등록해 주고 대시보드 개발을 통해 Data를 원하는 형식으로 표출 합니다. Logstash Source input { http_poller { urls => { naver => { method => get url => "https://openapi.naver.com/v1/search/news.json?query=원하는 검색 항목" headers => { "X-Naver-Client-Id" => "네이버 오픈 api 계정" ..

pySpark ( Postgresql to MariaDB )

개발 서버에 스파크(Pyspark)를 이용하여 다른 RDB 간의 테이블 데이터를 옮기는 파이프라인을 구성하였습니다. Pyspark 에서는 해당 테이블의 View를 구성하여 select, join, group by 등의 SQL을 사용하여 데이터를 필터링 할 수 있습니다. Postgresql_to_MariaDB import pyspark from pyspark.sql import SparkSession ip = "10.65.41.141" port = 5432 user = "isharkk" passwd = "rplinux" db = "testt" sp = pyspark.sql.SparkSession \ .builder \ .config("spark.driver.extraClassPath", "/root/spa..

Hadoop/Spark 2023.03.14