HDFS append 동작방식 HDFS는 마지막 블럭에 append한다. 그리고 만약 블럭이 가득차면 새로운 블럭을 생성한다. 오직 하나의 write or append만이 특정 시점에 허용된다. 다른 인스턴스가 write or append하려면 파일을 닫아야한다. 마지막 블럭이 복제되지 않으면, append는 실패한다. append는 s...
Case Class
Case Class regular class와 몇가지 특성을 제외하고 비슷하다. immutable data를 모델링하는데 좋다. case class 정의하기 case class Book(isbn: String) val frankenstein = Book("978-0486282114") Book case class를 생성할때 new 키...
Type class pattern vs implicit class
Type class pattern vs implicit class implicit class는 보통 존재하는 타입에 대한 extention method를 제공하는데 사용된다. implicit class IntExt(val x: Int) extends AnyVal { def squared: Int = x * x } 10.squared shoul...
Python to RDD communications
PySpark Overview PySpark은 Spark의 Java API를 기반으로 구현되었다. 데이터는 Python에서 처리되고 JVM에서 cache/shuffle 된다. RDD API 실행 과정 Python driver program에서, SparkContext는 Py4J 라이브러리를 사용하여 JavaSparkContext를 사용하는...
Certificate Authority
SSL certificates 세가지 안전한 커뮤니케이션을 위한 원칙 존재한다. Data Encryption Data Integrity Data Authenticity : 의도하고 있는 대상과 커뮤니케이션 하고 있는가 SSL은 Data Authenticity를 고려하기 위해 존재한다. SSL certificate은 Certific...
Constructor
Super() 키워드가 자동으로 호출되는 경우 Java에서는 자식 클래스가 생성될때, 상위 클래스의 모든 생성자가 먼저 호출된다. 자동으로 호출되는 경우는, 상위 클래스에서 parameterized constructor가 선언되어있지 않은경우 이다. Private Constructor 사용하는 경우 class내에 있는 static f...
Data Processing Architecture
Data Processing Architecture Lambda Architecture traditional batch 파이프라인을 fast real-time stream pipeline을 결합하기 위해서 사용하는 data processing을 위한 deployment model. Data Sources 데이터가 동시에 batch layer...
Citus
Citus란? 여러 머신에 쿼리하고 데이터를 분산할수 있도록 하는 PostgreSQL의 extension. sharding과 replication을 사용해서 수평확장한다. 언제 사용하는가? 1. Multi-Tenant Database 모든 tenant에 빠른 쿼리가능 database에 sharding logic이 있음 단일 노드 P...
Message Queue 사용이유
Message Queue를 사용하는 이유? 1. Performance 개선 메시지를 컨슈밍하고 프로듀싱하는 endpoint들이 서로 통신하는것이 아니라, queue를 통해서 통신한다. producer는 consumer가 처리할때까지 기다릴 필요없이 publish가능하고, consumer는 데이터가 있을때 컨슈밍할수 있다. producer와 cons...
Kinesis
Kinesis Amazon Kinesis는 Amazon의 Kafka Amazon은 자체 생태계가 있음 Elastic MapReduce(EMR) S3 Elasticsearch Service / CloudSearch DynamoDB Amazon RDS ElastiCache...