본문 바로가기

반응형

프로그래밍

spark stream 특징 정리 3회 spark stream을 개발하면서 시간 값 정의했던 부분을 정리합니다. //로그 원천의 시간값을 사용할 경우의 고려사항 //kafka로 유입되는 데이터는 5개의 파티션으로 구분되어 있으며 Spark structured stream의 kafka consumer가 가져온 데이터는 일정한 순서로 들어오지 않음. //Spark structured stream에서 60초로 trigger로 실행되고 있을때 kafka offset을 계산하는 기준시간은 10:07:59.895 ~ 10:08:58.910 로 유동적인 구간이 지정됨. 정확한 10:08:00.000 ~ 10:08:59.999 의 시간으로 처리되지 않음. //대응 방법 1 readStream.option("includeTimestamp", true) //설.. 더보기
spark stream 특징 정리 2회 spark stream을 개발하면서 적용한 코드 일부를 정리합니다. .withWatermark("current_timestamp", "1 minutes") // 지정한 시간 이후의 데이터는 삭제됨. //group by 조건에 windows를 사용할 수 있음 window($"current_timestamp", "1 minutes", "1 minutes") // -> 매 1분마다 지난 1분 데이터가 대상, window($"timestamp", "10 minutes", "5 minutes") -> 매 5분 마다 지난 10분이 대상 데이터. .trigger(Trigger.ProcessingTime("60 seconds")) //를 지정하면 실행한 시간에 관계 없이 정각을 기준으로 trigger됨 //10분 50.. 더보기
spark stream 특징 정리 1회 spark stream을 구현하면서 사용한 옵션을 정리합니다. .config("spark.ui.port", "50001") //포트 설정 .config("spark.sql.shuffle.partitions", "1") // 기본값 200개를 1개로 줄임 옵션 설명 spark.ui.port : spark driver가 뜰 UI port를 설정합니다. spark standalone 모드인 경우 default port부터 숫자가 하나씩 증가하면서 할당받습니다. 여러 개의 app을 실행하다 보면 UI Port를 할당받지 못하기도 하는데요. port를 할당받지 못해도 spark가 실행되는 데는 문제없습니다. UI 없이 그냥 job이 실행되고 잘 종료합니다. spark 실행될 때 로그를 잘 보면 port가 이미 사.. 더보기
prometheus 용량에 대해서 prometheus는 따로 설정하지 않으면 내부적으로 TSDB를 사용합니다. prometheus 옵션에서 지정된 위치에 파일로 저장하게 됩니다. 현재 약 200대의 하드웨어 모니터링과 하둡 네임 노드 데이터 노드 모니터링, 메소, kafka의 모니터링을 하고 있습니다. 10초마다 데이터를 pull 해서 저장하고 있습니다. 데이터 저장 기간은 3개월로 설정을 해둔 설정 입니다. 현재 300G를 사용하고 있습니다. 생각보다 데이터를 많이 쓰고 있어서 놀랐습니다. 얼마나 쓸지 감이 없을 때는 tsdb 저장 경로를 디폴트로 잡고 사용했는데요. 사용하다가 보니 용량을 너무 많이 쓰고 있어서 그대로 다른 디스크로 옮겨서 사용 중입니다. prometheus의 기능은 데이터 저장과 시계열 데이터 전달에 있습니다. pr.. 더보기
logstash webhdfs 사용 logstash webhdfs사용에 대해 정리합니다. webhdfs { host => "namenode 서버" port => 50070 path => "/hdfs에 저장될 위치/.log" user => "username" } host : hadoop의 namenode 서버 IP port : namenode port 주소 (디폴트) paht : hdfs에 파일을 저장할 위치, 파일 명을 포함 user : hdfs에 파일을 저장하는 user 설정 지금 하고 있는 업무 중에 logstash를 사용해서 hdfs로 실시간 전송 하는 로직이 필요해서 적용해보게 되었습니다. 하둡에 실시간으로 데이터를 저장하는 게 1.x하둡에서는 hadoop에서 지원하지 않았습니다. 지금 2.7 버전의 하둡을 사용하는데 이 버전에서는.. 더보기
logstash 시간 보정 logstash를 사용해 데이터를 수집하는 동안 시간 보정한 옵션을 정리합니다. filter { date { match => ["date","yyyy-MM-dd'T'HH:mm:ss.SSS"] target => "date_gmt" timezone => 'Asia/Seoul' } } ruby { code => "event.set('ymd', event.get('[@timestamp]').time.localtime.strftime('%y-%m-%d'))" } %{ymd} logstash 내부에서 사용하는 시간이 물리 서버의 타임존을 그대로 사용하지 않고 gmt시간을 그대로 사용하는 것으로 보여 타임존 보정을 했습니다 filter에서 타임존을 아시아/서울로 보정을 하고 ruby문법을 통해 get('[@times.. 더보기
Grafana Prometheus 옵션 설정 빅데이터 모니터링을 오픈소스로 구성하기 위한 고민을 했습니다. 제가 경험한 모니터링 환경에서 클라우데라 제품을 사용하면서 봤던 모니터링이 편하긴 했습니다. 다만 클라우데라 매니저 자체가 유료로 바뀌게 되어 이제는 오픈소스소 사용할 수 없다는 단점이 생겼습니다. 아파치 하둡을 오픈소스로 모니터링 하기 위한 방법으로 키바나 구성도 고려를 했습니다만 키바나의 경우 다른 오픈소스와의 연동을 활발히 지원하지 않기때문에 최종적으로 Grafana Prometheus 조합을 선택하게 되었습니다. Prometheus의 장점은 확장성 입니다. 오픈소스이다보니 다양한 exporter가 공개되어 있고 이를 적절히 찾아 사용하는 것으로 모니터링 환경 구성을 할 수 있다는 간편함이 있습니다. exporter 자체가 오픈소스이다보.. 더보기

반응형