인프라,데이터 (49) 썸네일형 리스트형 구글 코랩에서 Pyspark 사용하기 https://spark.apache.org/downloads.html 에서 아파치 하둡 2.7과 함께 사용할 수 있는 스파크 버전을 확인한다. !apt-get install openjdk-8-jdk-headless -qq > /dev/null !wget -q https://downloads.apache.org/spark/spark-3.2.1/spark-3.2.1-bin-hadoop2.7.tgz !tar -xvf spark-3.2.1-bin-hadoop2.7.tgz !pip install -q findspark !pip install pyspark 만약 버전이 다르다면 위 코드에서 버전을 변경하면 된다. import os os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8.. 스파크 완벽 가이드 Part 2 : 구조적 API (1) 스파크 트랜스포메이션*의 처리 과정을 정의하는 분산 프로그래밍 모델입니다. 트랜스포메이션 : 지향성 비순환 그래프(DAG)로 표현되는 명령을 만들어냅니다. 액션 : 하나의 잡을 클러스터에서 실행하기 위해 스테이지와 태스크로 나누고 DAG 처리 프로세스를 실행합니다. 트랜스포메이션과 액션으로 다루는 논리적 구조가 바로 DataFrame과 Dataset입니다. 새로운 DataFrame과 Dataset을 만들려면 트랜스포메이션을 호출해야 합니다. 연산을 시작하거나 사용한 언어에 맞는 데이터 타입으로 변환하려면 액션을 호출해야 합니다. 구조적 API 비정형 로그 파일부터 반정형 CSV 파일, 파케이Parquet 파일까지 다양한 유형의 데이터를 처리할 수 있습니다. 구조적 API에는 Dataset, DataFra.. Logstash file input시 파일 열고 수정하면 데이터 중복 집계되는 이유 input { file { path => "/home/test/*.log" start_position => "beginning" } } start_position => "beginning" 으로 로그스태시가 파일을 처음부터 읽도록 설정한다. 오래된 데이터를 임포트할 때 유용하다. (매번 파일의 처음에서 읽는 게 아니다.) 로그스태시 file input 설정을 주면, 로그스태시가 시작하면서 sincedb path를 자동으로 생성한다. [INFO ] 2022-02-25 06:21:51.942 [[main]-pipeline-manager] file - No sincedb_path set, generating one based on the "path" setting {:sincedb_path=>"/usr/sha.. 스파크 완벽 가이드 Part 1 : 빅데이터와 스파크 간단히 살펴보기 책의 내용을 정리하는 글입니다. Part 1의 내용은 앞으로 이 책이 어떤 내용을 다룰지, 각 내용은 어떤 것인지에 대한 개괄적인 설명으로 구성되어 있습니다. 스파크의 등장 배경 2005년까지, 컴퓨터 프로세스는 매년 더 많은 양의 명령어를 처리할 수 있게 발전했습니다. 그 결과 애플리케이션들도 빨라졌죠. 이떄까지는 대규모의 데이터 처리를 프로세서의 성능 향상에 맡겼습니다. 하지만 2005년경, 하드웨어의 성능 향상이 멈추면서 하드웨어 개발자들은 모든 코어가 같은 속도로 동작하는 병렬 CPU 코어를 더 많이 추가했습니다. 데이터를 저장하는데 드는 비용은 14개월마다 절반으로 줄었기에, 데이터 수집 비용은 극히 저렴해졌습니다. 자연스레 사람들이 수집하는 데이터의 양은 많아졌습니다. 아파치 스파크는 데이터를.. Logstash는 로그를 왜 message라는 field로 저장할까? 요새 Fluent Bit를 써서 EKS 안의 애플리케이션 로그를 수집하고 Kinesis firehose를 버퍼로 사용한 후, 이를 Logstash에서 수집한 후 ES로 보내 Kibana에서 분석하는 환경을 구성 중이다. "log"=>"* 2022-02-16 12:38:44,245 [Timer-0] INFO |c.e.demo.SpringBootLoggerApplication: 12:38:44 ::: Hello World ::: 1"} 그 중에서 Fluent Bit는 로그 파일을 "log"라는 key에 저장해서, 기존 Logstash 설정을 사용하기 위해서는 "log" 를 "message"로 바꿔주어야 했다. { "message" => "Hello Logstash!" } 그럼 애초에 왜 Logstash는 ".. Kubernetes - Fluent Bit 로 사용자 로그 S3에 output 설정하기 부제 : 온갖 예외 케이스를 가정하여 사용자 로그의 S3 경로 잡기 1. Fluent Bit에서 S3으로 output 보내기 Fluent Bit 에서 S3 output을 쓰는 건 쉽다. [OUTPUT] Name s3 Match * bucket my-bucket region us-west-2 s3_key_format /$TAG[2]/$TAG[0]/%Y/%m/%d/$UUID.gz s3_key_format_tag_delimiters .- 이렇게 s3 output 설정을 넣어주고 butket과 key format을 지정해주면 된다. 나의 경우는 EKS 안의 애플리케이션에서 발생한 사용자 로그를 시스템 로그(var/log/containers/$podname~.log 식으로 저장되는 파드의 로그)와 분리하여 S3 .. Fluent Bit Stream Processor 사용하여 데이터 특정 조건에 따라 다른 아웃풋으로 보내기 fluent-bit.conf: | [SERVICE] Flush 5 Log_Level info Daemon off Parsers_File parsers.conf Streams_File streams.conf HTTP_Server On HTTP_Listen 0.0.0.0 HTTP_Port 2020 먼저 [SERVICE]에 Streams_File 을 기재해줍니다. streams.conf: | [STREAM_TASK] Name check_one Exec CREATE STREAM three_check WITH (tag='userlog.*') AS SELECT * FROM TAG:'userlog.*' WHERE cluster_name = " " and pod_namespace = " " and pod_name = .. Fluent Bit에서 특정 경로의 로그 파일 받아와 쿠버네티스 메타데이터 추가하기 한줄 미리보기 : 제목처럼 안 됩니다. 이거 되게 하려고 몇 시간을 허비했는지..... 저같이 '이거 설정 좀만 바꾸면 되는 거 아냐?' 하고 매달리실 분들을 위해 씁니다... 환경 : EKS (쿠버네티스 버전 1.8) fluent bit : latest fluent bit의 tail의 인풋 설정은 다음과 같은데, [INPUT] Name tail Tag kube.* Path /var/log/containers/*.log 여기서 Path를 /var/log/containers/custom-*.log 와 같이 조금이라도 바꾸면... 쿠버네티스 메타정보가 추가되지 않습니다. 시스템 로그(var/log/containers/~ 하위의 podname별로 생기는 {podname}_{namespace}_{containe.. 이전 1 2 3 4 5 6 7 다음