본문 바로가기

Publivate

(214)
저장소와 검색 [데이터 중심 애플리케이션 설계 3장] 로그 구조 저장소: 쓰기에 좋은 구조 LSM 트리: SS 테이블을 여러개로 구성된 인덱스 구조 SS 테이블: merge sort 방식으로 순차적으로 쌓인 키를 컴팩션 시 정렬하여 저장 순차적으로 write하기 때문에 속도가 빠르다. 페이지를 사용하지 않아 오버헤드가 적어 압축률이 좋다. 컴팩션 과정이 있기 때문에 성능에 영향을 줄 수가 있다. 페이지 지향 저장소: 읽기에 좋은 구조 B 트리: 고정 크기의 블록이나 페이지로 나누고 한 페이지에서 다음 페이지를 참조한다. B 트리의 쓰기는 디스크 상의 페이지를 덮어쓴다. 이것은 문제 발생 시 위험한 동작으로 WAL(Write-ahead log)를 추가해서 문제 발생 이후에도 복구가 가능하도록 한다. (copy-on-write scheme 방식도 있음) WAL..
[Go] http request header에서 Host 값 변경하기 request, err := http.NewRequest(http.MethodPost, url, input) request.Header.Set("Content-Type", "application/json") request.Header.Set("Host", host)보통 http request를 보낼 때 header를 조정해야 하는 경우가 있다. go 에서 전송을 하는데, 자꾸 응답이 정상적으로 오지 않았다. Host를 변경해야 해서 위처럼 변경한 상태이다. 실제로 코드 상에서 response와 request에서 header의 Host값이 변경된 값으로 보인다. 하지만 전송 시점에 변경되는 것으로 보인다. request.Host = host그래서 위처럼 직접 변경을 해줘야 된다.
[Mac] shift - space 한영 변환 (xcode 설치 안 하고) ~/Library/Preferences/com.apple.symbolichotkeys.plist 파일에서 60 > value > parameters > 3번째 값을 131072로 변경하면 된다. 근데 plist파일을 일반적으로 수정할 수가 없어서 xcode나 plistedit을 설치하라고 한다. 근데 xcode는 너무 무겁고.. PlistEdit은 trial 버전이라 굳이 이렇게까지 해야하나 싶다. 찾아보니 기본적으로 제공되는 유틸이 있다. plutil -convert json ~/Library/Preferences/com.apple.symbolichotkeys.plist plutil -convert xml ~/Library/Preferences/com.apple.symbolichotkeys.plist ..
[Spark/hdfs] 데이터노드 디스크 확보 에러 발생 An error occurred while calling None.org.apache.spark.api.java.JavaSparkContext. : org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /user/.sparkStaging/application_1681262849232_2058/hive-site.xml could only be written to 0 of the 1 minReplication nodes. There are 1 datanode(s) running and 1 node(s) are excluded in this operation. hdfs 용량 확인 hdfs dfs -df -h hdfs 로그 삭제 hdfs ..
[Spark/Yarn] 특정 실행중인 job(애플리케이션) 죽이기 1. 실행 중인 job 확인 yarn application -list yarn application -appState RUNNING -list | grep "applicationName" 2. 실행 중인 job 죽이기 yarn application -kill application_1681262849232_2072
[Kubeflow/kserve] taints, tolerations 사용 시 에러 taint: 오점, 오명 toleration: 용인, 관용 특정 노드(node)에 특정 파드(pod)를 배포하기 위해서 알아보다 taints와 tolerations를 사용하라는 내용을 찾게 되었다. 익숙치 않는 단어라 검색해보니 위에 처럼 나와있다... (노드를 오염시켜 접근이 불가하지만 관용으로 접근한다는 건가..) 기능은 노드에 taints를 걸면 특정 조건(equal, exsist)이 맞을 경우 noSchedule, noExecute 등을 지정할 수 있다. 간단히 말해서 특정 값이 있는 경우에만 배포를 할 수 있다. (https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) 그리고 파드에 해당 조건을 주는 것이 to..
데이터 모델 및 질의 언어 [데이터 중심 애플리케이션 설계 2장] 관계형 모델 스키마 변경이 힘들고 실제 데이터와 애플리케이션 과의 차이가 발생하여 임피던스 불일치 발생 최근에는 json등을 지원함 mysql에서는 alter 명령어 수행 시 비용이 큼 다대일과 다대다 관계 관계형 모델에서는 다대다 관계를 일대다 관계로 풀어서 해결한다. 일대다 관계는 문서 모델에서의 트리 구조로 표현 가능 관계형 모델에서는 일대다의 반대인 다대일도 id기반으로 쉽게 해결가능 문서 모델에서는 다대일 관계는 적합하지 않음 (join 필요) NoSQL 문서 데이터베이스 조인이 미흡하다 관계형 DB의 쓰기 스키마와 반대되는 읽기 스키마 지역성 활용 가능 (관계형은 조인을 해야해서 전체 검색이 필요함) 그래프 데이터베이스 다른 데이터베이스와의 차이 다대다 관계에 적합 특정 조건을 찾을 때까지 반..
신뢰성, 확장성, 유지보수성 [데이터 중심 애플리케이션 설계 1장] 신뢰성: 하드웨어나 소프트웨어 결함, 심지어 인적 오류(human error) 같은 역경에 직면하더라도 시스템은 지속적으로 올바르게 동적(원하는 성능 수준에서 정확한 기능을 수행)해야 한다. 올바르게 동작이라는 것은 “무언가 잘못되더라도 지속적으로 올바르게 동작함”을 의미한다. 잘못될 수 있는 일은 결함(fault)라고 부른다. 결함에 대처할 수 있는 시스템을 내결함성(fault-tolerant) 또는 탄력성(resilient)를 지녔다고 말한다. 결함은 장애와 다르다. 장애는 서비스 자체가 멈추는 것이고 결함이 발생해도 장애는 발생하지 않도록 해야 한다. 확장성: 시스템의 데이터 양, 트래픽 양, 복잡도가 증가하면서 이를 처리할 수 있는 적절한 방법이 있어야 한다. 트위터 홈 타임라인 구현 방식 모든 ..