빅데이터 210

NoSQL강의) mongoDB 개요 및 설명 한페이지에 끝내기(mapReduce, aggregate 예제 포함)

Humongous DB ▪ Document DB : BSON(Binary JSON) ▪ Auto Sharding ▪ Replica Set ▪ Index : Geospatial(위치정보 처리 index), Hashed, Unique, Spars, Compound - Embedded Document, Array 필드도 인덱싱 가능 - 구체(Sphere) 모델 적용한 위치 데이터 인덱싱 지원 → 지구는 둥그니까.. - Full Text Search Index(한글 형태소 분석x), elasticsearch 사용을 권장 - Index를 사용한 TTL Collection ▪ Map/Reduce, Aggregation 기능 내장 - 대부분의 NOSQL은 자체 집계 기능을 제공하지 않음 ▪ GridFS : grid ..

빅데이터/nosql 2019.07.23
NoSQL강의) Document Database 개요 및 설명

Document Database란 Document를 저장하는 데이터베이스 ▪ XML, JSON, BSON - 계층적 트리 데이터 ▪ _id : PK, RowID - 사용자가 설정 가능 ▪ Embedded Document - 여러개의 테이블을 하나의 Document 내에 모아둘 수 있음 - 조회시 한번의 조회로 필요한 데이터 획득. Join 기능을 대체 대표 사례 ▪ Mongodb ▪ CoucbDB, CouchBase Hadoop, Spark와의 통합 지원 mongoDB기반 데이터를를 hive에서 집계, spark로 집계와 같은 기능. Document Database의 특징 Array와 Embedded Document을 잘활용하는 것이 핵심 - 컬럼 없음 → Schema 없음 - Document 내에 Fi..

빅데이터/nosql 2019.07.23
NoSQL강의) DynamoDB 개요, 특징 및 설명

Amazon DynamoDB 완전히 관리(Fully managed)되는 AWS 상의 NOSQL 데이터베이스. DynamoDB 장점 ▪ EC2 + DB Engine를 올리는 전통적인 방식이 아님. 사용량만 조절하면 자동으로 늘어나고 줄어든다. 사실상 DBA가 필요없는.. ▪ 대용량, 뛰어난 확장성, 신뢰성 ▪ 10ms 미만의 빠르고 일관된 성능 ▪ Key-Value Store(Hash 기반) ▪ 이벤트 기반의 프로그래밍 지원(with serverless function Lambda trigger) ▪ 용량제한 없는 Storage 테이블 구성 요소 Item하나 최대 크기 400kb Key는 2가지(partition key:필수 , sort key:선택). Data type ▪ Key-Value - Strin..

빅데이터/nosql 2019.07.23
NoSQL강의) HBase 개요, 특징, client 설명 + Apache Phoenix

HBase의 특징 Apache HBase – Apache HBase™ Home Welcome to Apache HBase™ Apache HBase™ is the Hadoop database, a distributed, scalable, big data store. Use Apache HBase™ when you need random, realtime read/write access to your Big Data. This project's goal is the hosting of very large tables -- billions hbase.apache.org HBase 저장 아키텍처 ▪ HMaster : HRegionServer의 모니터링을 담당 ▪ HRegionServer : 데이터를 분산저장하는 ..

빅데이터/nosql 2019.07.23
NoSQL강의) Cassandra 개요 및 설명

특징 Peer to Peer - Multi Master Model(Master-Slave 구조가 아님) - 새로운 노드의 추가를 통해 수평적 확장이 손쉬움 - DHT(Disgtributed Hash Table) 기반의 링 토폴로지 지원 - 데이터의 분산과 장애 극복 기능을 지원하기 위해 Cassandra는 Gossip Protocol을 사용한다. 이를 통해 다른 노드들에 대한 상태정보와 위치 정보를 매초마다 교환한다. - Gossip을 통해서 에러탐지를 수행한다. Gossip을 일정시간 주고 받지 않는 노드는 장애 노드로 판단된다. 장애 노드가 클러스터에 돌아오면 Hinted Hand Off로 복구를 우선 수행하게 된다. - Hinted Hand Off는 쓰기를 수행하고 복제할 때 복제 대상 노드가 장애..

NoSQL강의) Column Family Database 개요 및 설명

Column Family Database는 Row 단위 저장소 - Row Key : Row식별자. Row Key값순으로 자동 정렬됨. 검색시 사용되는 기본 키 - Column : 키-값 쌍. 하나의 Row에 수백만~수억개의 칼럼을 허용한다. 항상 Timestamp 값이 함께 저장됨. - Column의 값이 다시 여러개의 Column의 Map으로 구성되어 있으면 Column Family라고 부름. - Cassandra에서는 Super Column 이라는 용어를 씀. Cassandra HBase RDB keyspace 없음 Database column family table table row key row key PK(Primary Key) column name/key column name column na..

빅데이터/nosql 2019.07.22
NoSQL강의) Redis 개요, 기본사용법, command 설명 및 Jedis 예제

Redis Key/Value database, In memory database. Message Queue, Shared Memory Data store 용도로 사용. 다양한 데이터 타입(String, Set, List 등) 지원하며 셔버 shutdown/restart 될때를 대비하여 디스크 저장기능(RDB, AOF)을 가지고 있다. Scale out을 위한 application side sharding 지원하며 Master/Slave Replication을 지원. Instagram(수만개의 단순 Key-value pair저장), 네이버 라인, Blizzard 등에서 사용 사례가 있음. 데이터별 저장 구조 Redis 기본사용법 redis 서버 구동시 protected mode를 no로 하면 bind ip..

빅데이터/nosql 2019.07.22
NoSQL강의) Key-value Database 개요 및 설명

Key-value Database 개요 Key와 Value의 쌍으로 이루어진 저장소. Key가 이미 존재하는 경우 기존 값을 덮어쓴다. Value는 BLOB(Binary Large Object) 즉, 어떤 형식(type)이든 저장 가능. 특징 - 일관성 : Eventual Consistency - 트랜잭션 : 정족수 기반임. 정족수3이면 강한 consistency를 가짐 - 조회 : 키로만 조회 가능, 대부분 secondary index 지원하지 않음 - 데이터 구조 : BLOB, JSON, XML 무엇이든 저장 가능 - 확장성 : 대부분 샤딩을 이용한 확장. 샤드키 설정 중요. 샤드노드 + RF(Replication Factor) 조정 ☞ 일관성 vs 가용성 조절 사용하기 적합한 경우 ☞ 세션정보 저장..

빅데이터/nosql 2019.07.22
NoSQL강의) NoSQL 데이터 모델 종류 및 설명

NoSQL 데이터 모델 기존 RDBMS와는 다른 관점에서 바라봐야함. NOSQL 대부분은 ACID를 지원하지 않고 원자적 트랜잭션(Atomic Transaction)을 지원한다. 가능하다면 원자성이 필요한 범위를 하나의 집합 내로 한정하는 것이 바람직. 집합 지향적으로 모델링하게 되면 자연스럽게 데이터 중복이 발생한다. 데이터 중복을 허용함으로써, 애플리케이션에서의 쿼리 효율성에 집중하도록 설계해야함. Key-Value 모델 Key를 이용해 value에 접근하는 구조. 어떠한 형태(List, Set 등)의 데이터든 저장이 가능함. 각 DB별로 value의 최고 저장 size가 있으므로 이점을 유의. Key를 기반으로 정렬/비정렬 가능한점이 다름. Document 모델 집합 구조를 문서형태로 확인 가능. ..

빅데이터/nosql 2019.07.22
NoSQL강의) NoSQL 개요 및 기본이론

5가지 NoSQL에 대해 알아보자 - MongoDB - Redis - hBase - Cassandra - DynamoDB 등장배경 1) 대량의 데이터를 Read/Write 할 필요성 증가 2) 지속적으로 증가하는 사용자에 대한 신속한 증가 3) 빠르게 변화하는 비즈니스에 대한 신속한 대응 4) 비정형 데이터의 폭발적 증가 관계형 데이터베이스의 한계가 커짐. 데이터는 커져만 가는데, 관계형 데이터베이스로는 저장/관리 힘듦. scale out하기에 기존 RDB(Relational Data Base)는 많은 비용을 지불해야 함. NoSQL Not Only SQL은 비관계형 데이터 스토리지 시스템, 비정형 데이터베이스들을 통칭한다. 고정된 테이블 스키마와 조인개념을 사용하지 않도록 모델링한다. ACID(원자성,..

빅데이터/nosql 2019.07.22
Java로 AWS s3에 간단히 file write하기(hadoop-aws 라이브러리 사용, NativeS3FileSystem)

S3는 Simple Storage Service의 약자로 AWS의 강력한 object storage이다. 요구사항에 따라 Java code를 사용하여 aws s3에 file을 write해야할 때가 있다. aws-java-sdk를 사용해도 되지만 apache hadoop에서 제공하는 hadoop-aws를 사용하여 간단하게 file write가 가능하다. 단계 1) 디펜던시 추가 org.apache.hadoop hadoop-aws 2.7.3 org.apache.commons commons-io ${commons-io.version} 단계 2) AWS에서 secretawsAccessKeyId, awsSecretAccessKey 발급 단계 3) 코딩 import org.apache.hadoop.conf.Conf..

빅데이터/하둡 2019.07.11
KSQL - Streaming SQL for Apache Kafka 개요 - readme 설명 번역

이 글은 KSQL github repository readme를 번역하였습니다. ☞ https://github.com/confluentinc/ksql KSQL은 아파치 카프카에서 사용가능한 스트리밍 SQL 엔진입니다. Java나 Python같은 프로그래밍 언어로 코드를 짤 필요 없이 간단하고 완전히 상호작용하는 SQL interface를 카프카를 통해 사용가능합니다. KSQL은 분산형, 확장형, 신뢰성, 실시간성이라는 특징을 가지고 있습니다. KSQL을 통해 강력한 aggregation, join, windowing, seessionization 등의 기능을 사용할 수 있습니다. 튜토리얼과 리소스를 사용하기 위해서는 이 링크(바로가기)를 누르세요. 그리고 아래 유튜브에서 KSQL demo를 확인 할 수 ..

빅데이터/Kafka 2019.07.07
(번역)Netflix에서 데이터를 통해 유연하고, 안전한 클라우드 인프라로 활용하는 방법

원 제목 : How Data Inspires Building a Scalable, Resilient and Secure Cloud Infrastructure At Netflix원 글 : https://medium.com/netflix-techblog/how-data-inspires-building-a-scalable-resilient-and-secure-cloud-infrastructure-at-netflix-c14ea9f2d00c Netflix의 개발자 문화는 Netflix의 모든 사람이 핵심 책임을 맡고 자유롭게 임무를 완수 할 수 있는 자유와 책임을 전제로 한다. 이러한 자유를 통해 팀과 개인은 혁신을 주도할 수 있으며 결과물에 대해 품질과 견고함(robustness)에 책임을 가지고 있다. Cen..

빅데이터 2019.03.22
Kafka broker와 java client의 버젼 하위호환성 정리

하위 호환성은 기술 및 컴퓨터 분야에서 새 제품이 이전 제품을 염두에 두고 만들어진 제품에서 별도의 수정 없이 그대로 쓰일 수 있는 것을 뜻한다. Kafka는 1.XX version으로 올라가기 전까지는 "one-way" 하위 호환성을 가지고 있었다. 신규 버젼의 broker는 옛날 버젼의 client를 지원했으나, 신규 버젼의 client는 옛날 버젼의 broker을 지원하지 못한다는 뜻이다. Client버젼을 높이기 위해서는 반드시 broker의 버젼을 높여야 했으므로, kafka client 업그레이드에 허들로 작용했다. 카프카 커뮤니티는 KIP-97 ticket을 통해 "two-way" 하위 호환성을 가지도록 하는 방안을 논의하였고 이후에 호환성 protocol을 정의하여 broker 버젼과 cl..

빅데이터/Kafka 2019.02.14
[Stream Process as a Platform] Netflix의 실시간 스트림 처리 플랫폼 Keystone 소개

아래 포스트는 Keystone Real-time Streaming Processing Platform(medium)을 읽고 정리한 글입니다.원글 글쓴이 : Zhenzhong Xu in Real-time Data Infrastructure team Keystone Stream Processing Platform은 넷플릭스의 Data-driven culture을 가능케한 Data backbone 이자 infrastructure의 필수적인 부분을 뜻한다. Netflix Keystone은 2015년 기준, 8,000,000tps의 데이터를 처리하고 있으며 약 1PB 양의 데이터를 처리하고 있다. 오늘날 Keystone Platform은 두가지의 핵심 서비스를 제공한다.1) Data PipelineRouting ..

빅데이터 2019.01.10
Apache Kafka에서 topic의 partition 개수 줄이는 방법?

아파치 카프카에서 topic의 partition 개수 줄이는 방법?정답 : 없다(~2.1 version)Apache Kafka는 partition number을 줄이는 것을 지원하지 않는다. Topic에 대한 data 처리량을 늘리기 위해 partition을 쉽게 늘릴 수 있지만, partition number을 줄이는 것 즉 partition 삭제에 대한 정책은 지원하지 않는다. Partition을 삭제하게되면 그 즉시 파티션에 존재하는 data가 삭제되기 때문이다. 이 때문에 partition의 삭제가 가능하기 위해서는 kafka에서 능동적으로 partition삭제에 대한 처리(data rebalancing)을 해야하는데 이는 아직(현재 version 2.1) 개발되지 않았다. LinkedIn의 Se..

빅데이터/Kafka 2018.12.26
아파치 Kafka Consumer의 데이터 처리 내부 architecture 설명 및 튜닝포인트

지난 포스트에서 Kafka producer의 데이터 처리 내부 architecture에 대해서 알아보았다. ☞ 아파치 Kafka Producer architecture 설명 포스팅 이번 포스트에서는 kafka architecture의 Consumer 내부 데이터 흐름에 대해 알아보려고 한다. Kafka Consumer 데이터 내부 처리 순서 #1 : poll(record 취득 api) 호출#2 : 가져오고자 하는 record가 Fetcher queue에 없는 경우, Fetch request를 발동하여 broker에서부터 record를 가져온다.#3 : record batch를 Fetcher queue에 저장#4 : 어디까지 읽었는지에 대한 offset을 consumer측에서 보관#5 : record ba..

빅데이터/Kafka 2018.12.24
아파치 Kafka Producer의 데이터 처리 내부 architecture 설명 및 튜닝포인트

지난 포스트에서 Kafka architecture 및 개요에 대해 알아보았다. ☞ 빅 데이터 처리를 위한 아파치 Kafka 개요 및 설명 포스팅 이번 포스트에서는 kafka architecture의 Producer 내부 데이터 흐름에 대해 알아보려고 한다. Kafka Producer 데이터 내부 처리 순서 #1 : User application thread에서 Record 추가#2 : Record Batch단위로 Record를 압축#3 : 복수의 Record Batch를 묶어 Broker로 보냄#4 : Record Batch를 각 Partition에 저장#5 : 지정시간에 request 에 대한 완료(ack)를 회신 - acks=0 : ack 응답없음(속도가장빠름, 데이터유실확률 가장 높음) - acks..

빅데이터/Kafka 2018.12.24
빅 데이터 처리를 위한 아파치 Kafka 개요 및 설명

Apache Kafka LinkedIn에서 최초로 만들고 opensource화 한 확장성이 뛰어난 분산 메시지 큐(FIFO : First In First Out) → 분산 아키텍쳐 구성, Fault-tolerance한 architecture(with zookeeper), 데이터 유실 방지를 위한 구성이 잘되어 있음→ AMQP, JMS API를 사용하지 않은 TCP기반 프로토콜 사용→ Pub / Sub 메시징 모델을 채용→ 읽기 / 쓰기 성능을 중시 → Producer가 Batch형태로 broker로 메시지 전송이 가능하여 속도 개선→ 파일 시스템에 메시지를 저장하므로, 데이터의 영속성 보장→ Consume된 메시지를 곧바로 삭제하지 않고 offset을 통한 consumer-group별 개별 consume..

빅데이터/Kafka 2018.12.24
Hadoop에서 hadoop job은 어떻게 각 data node에서 job을 수행할까?

Hadoop에서 가장 많이 쓰이는 명령어로 아래와 같이 job을 수행하는 것이 있다. /bin/hadoop jar [jar file] [arguments..]상기와 같이 jar를 실행하게되면 hadoop은 어떤 node로 어떤 job을 보내게 되는걸까? Client 혹은 interface server에서 hadoop jar와 함께 command를 입력Client는 실행에 대한 신규 application Id를 발급받. 그리고 jar file은 HDFS의 job resource로 복사(by default 10 on large clusters)Cluster(각 데이터노드)에서 실행됨. (다만 hadoop config에 local 설정을 하게 되면 해당 호스트에서 실행됨)

빅데이터/하둡 2018.12.17
모든 것을 측정하는 방법 - Bigdata시대에 부족한 data로 예측하기

이 포스트는 모든 것을 측정하는 방법을 읽고 정리한 글입니다. 해당 서적 : How to Maesure Anything(amazon.com) 근사값 밖에 구할 수 없는 상황에서는 완벽한 정확성을 추구하는 것보다 가능한 수준의 정밀도로 만족하는 것이 지식인에게 필요한 태도이다. - 아리스토텔레스(BC. 384 - BC. 322) 왜 측정이 필요한가?모든 것은 측정 가능하다. 대체로 측정 불가능하다고 여겨지는 많은 문제들이 간단한 측정 방법을 통해 해결될 수 있다. 특히 사업 경영에서 흔히 접하는 '보이지 않는' 것들에 대해 측정이 가능하다. 다음과 같은 것들이 일반적으로 생각되는 보이지 않는 것들의 예이다. # IT 프로젝트가 실패할 위험# 수집한 정보의 가치# 품질# 대중적 이미지 위의 예들은 사업의 의..

빅데이터 2018.12.16
Hdfs dfs 명령어 정리 및 설명(ls, cat, du, count, copyFromLocal 등)

Hadoop을 적절히 사용하기 위해서는 hdfs 명령어를 알아야 한다. 아래에 정리를 해 보았다. ※ 2.6.0 version을 기준으로 정리함 Hadoop 명령어 Hadoop filesystem command를 사용하기 위함. Usage : hdfs dfs [GENERIC_OPTIONS] [COMMAND_OPTIONS] HDFS 명령어 File System(FS) shell은 Hadoop Distributed File System(HDFS)를 여타 파일시스템처럼 관리하기 위한 목적으로 command를 사용할 수 있다. Hadoop-2.6.0에서는 총 33개의 HDFS 명령어를 지원한다. 1) appendToFile Local 파일들을 hdfs에 append 저장하기 위한 목적 Usage: hdfs df..

빅데이터/하둡 2018.12.11
JVM에서 MapReduce를 간편하게 쓸수 있는 오픈소스 라이브러리 Cascading

CascadingCascading은 opensource library로서 JVM에서 쉽게 bigdata처리를 가능캐 한다. 오픈소스이며 apache license를 보유하고있다. # Website : https://www.cascading.org/ # Github : https://github.com/Cascading/cascading # twitter : https://twitter.com/Cascading Source-pipe-sink 패러다임을 채용하여 객체지향 프로그래밍 언어에서도 data처리를 직관적으로 구현할 수 있다. 기존에 많이 사용하던 MapReduce code와 비교해보자. Old MapReduce code Bigdata를 다룰 때 맵리듀스(MapReduce)는 흩어져 있는 데이터를 수..

빅데이터 2018.11.19
Spring boot scheduler를 활용한 kafka producer/consumer 예제

Kafka는 분산 메시징 플랫폼으로 폭넓은 확장성과 우수한 성능을 가진다. Kafka의 간단한 사용을 위해 Spring boot를 사용하여 consumer, producer개념을 익힐 수 있다. Spring boot의 scheduler기능을 통해서 producer가 kafka에 topic을 내려 주면, subscribe하고 있는 consumer가 해당 메시지를 받는 형태로 만들 것이다. Architecture Spring boot scheduler와 kafka의 연동 구성도 Kafka 설치 Kafka의 설치과정은 아래 posting에서 확인할 수 있다. Macbook에 Kafka 1분만에 설치하기(바로가기) Project directory 프로젝트 directory는 intellij의 spring boo..

빅데이터/Kafka 2018.11.06
Macbook에 Kafka 1분만에 설치하기

Kafka는 분산 메시징 플랫폼으로 폭넓은 확장성과 우수한 성능을 가진다. Kafka의 간단한 사용을 위해 local computer인 Macbook에 Kafka를 설치해보자. 1. Homebrew 설치Homebrew는 macOS 용 패키지 관리자로서 간단하면서도 강력한 기능을 가진다. 이미 Homebrew를 가지고 있는 사용자라면 바로 2번으로 넘어가도 좋다. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" 상기 명령어를 terminal에 입력하면 순식간에 설치가 완료된다. 2. Zookeeper 설치Zookeeper는 kafka를 구동하기 위한 필수불가결한 존재이다. Kaf..

빅데이터/Kafka 2018.11.06
Kafka opensource 분석을 통한 replication assignment 로직 확인

Replication과 partition 개념은 Apache Kafka에서 fault tolerance 동작을 위한 핵심개념이다. 각 broker에 어떻게 partition들이 replication 되는지 github에 올라가 있는 Kafka의 opensource를 분석하여 알아 보자. Partition과 Replication # Partition : 어떤 토픽에 대해서 producer/consumer가 병렬처리방식으로 분산저장되는 단위 # Replication : 높은 가용성(High Availibility)을 얻기 위해 각각의 partition을 각기 다른 브로커에 복제하는 역할 Kafka에서 Topic을 생성하게 되면, 설정 한 partition, replication의 각각 개수에 따라 parti..

빅데이터/Kafka 2018.09.28
가격 최적화를 위해 맞춤형 회귀 분석 모델을 활용한 airbnb

Introairbnb는 게스트와 호스트의 연결해주는 서비스이다. 호스트는 자신의 집의 전체 혹은 일부를 website에 올려놓으면 게스트는 호스트에게 연락하여 계약이 이루어지는 방식이다. 여기서 중요한 포인트는 airbnb는 제공자(호스트)/소비자(게스트)로 이루어진 two-sided marketplace이기 때문에, 가격이 적절하지 않으면 예약율이 떨어지게 된다. airbnb의 플랫폼 사업이라는 특성상 호스트, 게스트의 균형을 맞추는 것이 중요했다. airbnb는 위와 같은 문제를 풀기 위해 적절한 가격책정을 위해 빅데이터를 통한 분석을 사용하였고 해당 결과에 대한 논문(Customized Regression Model for Airbnb Dynamic Pricing)을 발표하였다. 관련 논문 - Ho..

빅데이터 2018.09.19
HDFS(Hadoop Distributed File System) 아키텍쳐 개요 및 설명

IntroductionHDFS(Hadoop Distributed File System)는 분산 파일시스템을 하드웨어에 저장하고, 읽는 역할을 한다. 여타 다른 분산 파일 시스템과 비슷해 보이지만, HDFS는 아래와 같은 특징을 가진다. # Highly fault-tolerant# Deployed on low-cost hardware 상기와 같은 두개의 장점으로 인해 HDFS는 대용량 데이터에 대해 저장 및 조회 용으로 적절하게 사용 가능하다. HDFS의 GoalHardware Failure1개의 node가 365일 중 하루동안 고장이 난다고 가정하자, HDFS의 data node가 1000대라면, 확률적으로 하루에 3대가 고장난다. HDFS는 이러한 물리적 고장에 대해서 신속한 detection과 aut..

빅데이터 2018.09.17