[입 개발] Redis 6.0 – ThreadedIO를 알아보자.
안녕하세요. 입개말만 하는 CharSyam 입니다. 이번에 Redis Version 6.0.x 가 출시되었습니다. Redis 5.0에서도 Stream 등 새로운 기능이 들어왔었는데, 이번 6.0에서도 ACL 및 여러가지 기능들이 들어왔습니다. 그 중에서도 많은 사람들이 관심있어 하는 것이 바로 ThreadedIO 입니다. Redis를 쓰는 사람들은...
View Article[Tip] HBase Asynchbase 의 Defer를 Future로 변경하기
OpenTSDB에서 만든 Asynchbase는 Future가 아닌 Defer를 이용합니다. 이를 Future로 바꾸는 함수는 다음과 같습니다. 이 때 주의할 것은 HBase는 protobuf-java 2.5.0을 쓰고 있기 때문에, 현재 다른 library에서 다른 protobuf-java 버전을 쓰면 문제가 발생할 수 있습니다. import...
View Article[Tip] Finatra Default HttpClient 사용하기
Finatra 에서 Default HttpClient 사용하기. dest가 실제로 접속할 호스트로 설정되는 부분이다. hostname인줄 알고 했다가 계속 실패함. 이렇게 하고 HttpClient를 inject 하면 해당 설정을 이용한 걸고 injection이 되게 됨. object DruidHttpClientModule extends...
View Article[Tip] Spring Boot 2.1.0 에서의 CORS 설정
뭔가 내가 손대면 안되는 건지… 인터넷에서 찾으면 꽤 많은 방법이 나온다. 좀 예전 글이긴 하지만 다음 문서를 보면 XML로 설정하는 방법 아니면 addCorsMappings 을 override 하는 방법 @Override public void addCorsMappings(CorsRegistry registry) {...
View Article[입개발] Druid에서 transform 시 알아야 할 팁.
Apache Druid 는 빠른 속도로 데이터를 Aggregation 할 수 있는 툴이지만, 처음 사용하면 이것저것 미묘하게 힘든 부분들이 있다. 다음과 같은 걸 기억해두자. transform에서 오래걸렸던 부분은 컬럼명은 더블 쿼터로 “__time” 이런식으로 그리고 날짜 포맷부분등은 리터럴이라 쿼터로 ‘yyyy-MM-dd’ 형식으로 감싸야 한다는 것이다....
View Article[책 리뷰] 파이썬 알고리즘 인터뷰
개인적으로 먼저 고백하자면, 나는 알고리즘 인터뷰를 그렇게 좋아하지 않는다.(내가 좋은 결과를 본적이 없어서 그렇다 크하하하…) 2012년에 아마존 RDS팀과 트위터 캐시팀과 면접을 본적이 있는데, 아마존은 전화면접에서…(생애 첫 해외 면접이었던…), 트위터는 On-site 인터뷰(본사에서 직원들과 하루종일 보게 되는… 이 날, 5번의 면접과 1번의 점심...
View Article[입 개발] Spark에서 Parquet 파일 Custom Schema 로 읽어들이기
최근(?)에 다음과 같은 에러를 많이 보았습니다. scala> val df = spark.read.parquest("s3://bucket-name/path/") org.apache.spark.sql.AnalysisException: Parquet type not supported: INT32 (UINT_8); at...
View Article[입 개발] Redis 장애 종류 정리
간단하게 자주 발생하는 Redis 장애를 정리해봅니다. 뭐, 크게 아래의 분류를 넘어가는 일이 거의 없던걸로 기억합니다. 장애 분류소분류내용메모리메모리 RSS 관리Redis는 In-Memory 솔루션이기 때문에 실제 물리 메모리보다 많은 메모리를 사용하게 되면, Swap으로 인해서 성능이 극심하게 떨어지게 된다. 즉 RSS 메모리 관리를 잘해야만...
View Article[입 개발] AWS S3 503 Slow Down과 AWS S3 Versioning은 관계가 있다.
S3 버킷에서 파티션된 접두사마다 초당 3,500개의 PUT/COPY/POST/DELETE 및 5,500개의 GET/HEAD 요청을 전송할 수 있습니다. 그리고 이 한계를 넘으면 503 Slow Down 이 발생하면서 에러가 리턴되는데…… 작업을 하다보면 위의 이슈를 만나게 되는 경우가 종종 생깁니다. 그런데 AWS S3 Versioning에 따라서 해당...
View Article[책 리뷰] 실전 대비 C 알고리즘 인터뷰 –길벗
해당 리뷰는, 길벗 전문서 리뷰어로 당첨되어서 진행된 리뷰입니다. 최근 들어서 “코딩 인터뷰” 를 보는 회사들이 많이 있습니다. 그리고 이를 준비할 수 있는 인터넷 사이트들도 늘어나고 있습니다. 재미있는건 이런 걸 공부할 수 있는 사이트들이, 해당 플랫폼도 제공하는 경우가 많다는 거죠. 국내에서는...
View Article[입 개발] HikariCP 는 왜 나를 물먹이는가…
HikariCP는 왜 저를 물먹이는걸까요?… 정답은 제가 못나서 입니다. 흑흑흑, 오늘은 HikariCP를 사용하다가 겪는 일반적인 상황과는 전혀 상관없이 그냥 제가 겪은… 삽질을 공유하려고 합니다. HikariCP를 아주 특이하게 사용하고 있었습니다. 그런데, 문제는 제가 자바맹이라서 HikariCP에 대한 지식이 일도 없다는 거죠. 히카리는 빛이라는...
View Article[입 개발] Kafka 와 Spark Structured Streaming 에서 checkpoint 에서 아주 과거의 Offset이 있으면...
최근에 Kafka와 Spark Structured Streaming 코드를 작성할 일이 있어서 작업을 하는데, 이상한 에러를 만났습니다. 그렇습니다. 여러분 저는 Spark Structured Streaming 이 처음이라… 흑 초초보의 슬픔이네요. 에러는 다음과 같았습니다. empty 인 DataFrame을 쓸 수 없다는 것인데요. 21/03/05...
View Article[입 개발] Spark Structured Streaming 에서 Offset 은 어떻게 관리되는가(아주 간략한 버전)?
DStream 만 열심히 쓰다가, Structured Streaming 을 강제로 써야할 일이 생겼습니다. 그런데 DStream을 쓸 때는 Offset 을 명확하게 가져오거나 볼 수 있었는데, Structured Streaming 을 보니, 아는게 없었습니다. -_-;;; 분명히 까만건 글씨고 하얀건 바탕인데… 먼저 Structured Streaming...
View Article[입 개발] rclone mount 빌드 방법
어쩌다보니 rclone 이라는 프로젝트를 윈도우에서 빌드해야할 일이 생겼습니다. rclone/rclone: “rsync for cloud storage” – Google Drive, S3, Dropbox, Backblaze B2, One Drive, Swift, Hubic, Wasabi, Google Cloud Storage, Yandex Files...
View Article[입 개발] EMR에서는 sc.addFile, Databricks에서는 그냥 dbfs 폴더를 이용하자.
기존에 특정 파일을 Spark 클러스터에서 쓰기 위해서는 다음과 같은 방법을 이용했습니다. S3에 파일을 올리고 이를 addFile 한 후 해당 경로에 있다고 하고 사용하는 방식입니다. EMR val FileName = "FileName.dat" val S3_PATH = s"s3://abcd/efg/hijk/$FileName"...
View Article[입 개발] Databricks Terrafrom Provider Install
curl https://raw.githubusercontent.com/databrickslabs/databricks-terraform/master/godownloader-databricks-provider.sh | bash -s -- -b $HOME/.terraform.d/plugins
View Article[입 개발] Databricks Terraform Provider databricks_aws_s3_mount 와 resource...
databricks terraform proivder 에서 databricks_aws_s3_mount 인데 datatbricks_s3_mount 라고 문서에 오타나있음.databricks_dbfs_file 에서 0.2.9 까지는 다음과 같은 옵션이 필수(content_b64_md5) resource "databricks_dbfs_file"...
View Article[입 개발] Redis가 maxmemory 보다 더 썼다가 OOM 에러를 던져요!!!
Redis를 운영하다보면 항상 어려운 문제는 memory 관리입니다. In-Memory Cache 다 보니, 메모리 보다 더 많은 데이터를 써서 swap이 발생하면 해당 메모리 page를 접근할 때 마다 swap out 이 발생해서, 속도에 엄청난 영향을 주게 됩니다. 또한 더 많은 메모리를 쓰면, 메모리 문제로 장애가 발생할 수 가 있습니다. 그런데 오늘...
View Article[입개발] Spark Kafka Streaming 에서의 BackPressure 에 대한 아주 간단한 정리.
Kafka Streaming 처리를 할 때, 자주 문제가 되는 부분은 보통 다음과 같은 것들이 있습니다. 잘못된 입력의 데이터갑자기 들어온 많은 양의 데이터 잘못된 입력의 데이터는 각자 잘 알아서 처리를 하면되지만? 갑자기 들어오는 많은 양의 데이터는 어떻게 해야할까요? 간단한 방법은 처리하는 서버 대수를 늘리는 것입니다. 그런데 평소에는 2대면 충분한데,...
View Article[입 개발] bits로 시간을 얼마나 표현할 수 있을까?
갑자기 bit를 얼마나 할당하는가에 따라서 얼만큼의 시간을 표현할 수 있을까라는 생각이 들었습니다. 흔히 unix timestamp 라고 해서 1970년 1월 1일 0시 부터 현재까지를 Second 단위로 표현한 것입니다. unix timestamp 는 4 bytes 로 표현되고, 이를 2038년 1월 19일 03:14:07 에 overflow 가 난다고...
View Article