관리 메뉴

개발 노트

5/14 1주차 수업 본문

빅데이터 직무부트캠프 : 21.05.14~06.11

5/14 1주차 수업

hayoung.dev 2021. 5. 21. 19:54

1주차 전체 수업 내용 : 빅데이터 개념, 데이터 프로그래밍 개념

 

질문 내용

Q : 이런 일은 어디에서 다루는지 백엔드에서 다루는지?

A : 부서가 따로 있긴 한데 어떠한 부서라도 빅데이터가 필요하면 다룸. 직무를 가리지 않고 빅데이터를 사용한다. 1개의 PC가 가지고 있는 데이터는 사람의 능력으로 분석이 가능하지만, 이러한 데이터 프로그래밍은 시각화가 중요함. 직무가 따로 정해지지 않아 에러로그 등도 데이터의 한 부분이기 때문에 이것을 어떻게 가공할 것이냐가 포인트임. 물론 가공 등 데이터를 직접 다루는 건 백엔드지만 표현하는 것도 중요하기 때문에 사람들에게 설명하는 프론트도 중요함, 프론트와 백엔드 둘 다 중요하지만 백엔드가 더 중요하다 볼 수 있음.

 

 

*수업 자료는 빅데이터_개념 pdf 파일 참고

 

 

<빅데이터 개념>

 

 

빅데이터는 3V관점에 대해 기존 데이터를 다루는 기술이다. 빅데이터는 3V에 해당되는 정보인데, 여기서 3V는 volume, velocity, variety이다. 이 정보를 가공해서 새로운 것을 얻는 것이다.

 

 

[3V 설명]

- velocity의 real time : 정보가 들어옴과 동시에 처리가 되어야 함

ex) 자율주행 차에서 앞 차와의 거리유지를 센서로 읽은 다음, 바로 처리가 실시간으로 되어야 데이터의 의미가 있는 것이며 정보를 서로 주고받을 수 있어야 한다.

 

- volume : 양, 적어도 PB 단위의 양. 이 단위는 한 PC에 담기지 않을 정도의 많은 양이다.

 

- variety : 비디오, 텍스트, 엑셀 등 처럼 규칙과 하나의 데이터 형식(포맷)에 국한되지 않고 다양해야 한다. 

 

 

위의 그래프가 정보의 저장 속도(Information created)이며, 아래의 그래프가 저장장치의 발달 속도(Available storage)이다. 그래프와 같이 저장장치의 발당 속도가 정보의 저장 속도를 따라가지 못하고 있는 상황이다.

 

 

다음은 빅데이터의 예시이다. 우주 초기를 제현한 public 데이터이다.

 

 

이것은 빛의 속도로 충돌하는 입자들이다. 아주 많은 데이터로 매년 15PB의 데이터가 생성되고 있다. 그래서 31개국의 2000명의 물리학자가 분석하고 있다.

 

 

Storage, Network : 저장장치의 비용, 단위시간 당 들어오는 양. 특정시간 안에 아주 많은 데이터가 들어오므로 생성되는 속도에 맞추어 데이터가 들어와야(저장되어야) 한다. 이 부분을 구현하기가 아주 힘들다.

 

Data integrity : 많은 양의 데이터를 손상없이 오래 저장하는 무결성이 유지되어야 한다.

 

Preservation : 오랫동안 저장하는 것. 빅데이터를 저장하는 기술.

우리의 thoughput(처리량)은 디스크에 한정된다.

 

 

 

[빅데이터를 저장하는 방식 중 한가지]

Block 단위로 데이터를 저장한다. 그리고 복제하여 빅데이터를 담는다. 디스크를 여러개를 하면 용량에는 문제될 게 없다. 하지만 복제를 하며 생기는 시간의 딜레이를 생각하면 앞에서 배운 빅데이터를 실시간으로 처리해야 하는 점에 있어서는 부적절하다. 1PC보다는 괜찮은 방법이지만 아직 부족하다. 또한 네트워크가 제한되어 있다. 그리고 데이터의 relation이 있어야 하는데 포맷이 제한되는 문제가 있다. 형식에 맞추어 저장할 수 없다.

 

 

 

[MapReduce 아주 중요함!!]

MapReduce는 병렬처리 작업이다. NoSQL(빅데이터 처리를 위한 비관계형 데이터베이스 관리 시스템)에 관계가 없으며 속도 또한 그리 나쁘지 않다.

 

 

[Hadoop 시스템]

Hadoop은 unstructured(체계가 없는) 데이터까지 저장한다. Hadoop 분배처리방식으로 데이터를 저장한다.

 

[HDFS]

데이터는 수많은 node에 저장되고, master/slave 구조로 저장된다. master에는 데이터가 저장된 게 아닌 slave 노드에 관한 정보가 저장되어 있다. 또한 각 노드들은 독립되어 있다.

 

[데이터가 처리되는 과정]

데이터에서 뭘 가져오고 싶다는 쿼리를 submission에 전송 → 마스터노드로 전송 → map과정을 통해 slave에게 작업 할당(중요!!) → (slave안에 또 master-slave 구조가 있을 수 있음) → 각각의 slave에서 sub job이 실행됨 → 모든 slave가 작업을 끝냈다고 하면 reduce(중요!!)에서 작업을 전부 합쳐서 전달.

 

쿼리 대신 우리의 코드를 전송하여 map과정을 거칠 수 있다.

동시에 여러 PC에서 작업을 하는 병렬구조이다.

즉 모든 slave의 작업 양이 같아야 효율적이다.

이것을 어떻게 효율적으로 mapping하는지는 우리의 코딩 실력에 달렸다.

pySpark RDD Model & Partition에 대해 검색하면 mapping 하는 법을 배울 수 있다.

 

 

[전통적인 네트워크의 문제점]

한번에 큰 데이터가 흐를 줄 몰랐기 때문에 큰 데이터와 빛의 속도로 생성되는 데이터를 처리할 수 없다.

빅 데이터를 커버할 방화벽도 없으며 보안도 필요하다.

 

 

[왜 CMS 프로젝트가 좋은 예시인가]

빨리 만들어지고, 실시간으로 처리하며 모든게 open 되어있고, semi-structured(구조적이지 않기)이기 때문이다.

빅데이터를 다룰 때엔 infinity band를 사용한다. (검색해보기!) 특정 데이터를 수집하고, 저장하고, 가공한다.

 

 

 

<데이터 프로그래밍>

딥러닝 학습. 라벨 트레이닝, set를 만드는 게 막힘.

딥러닝, input, output을 넣으면 컴퓨터가 알아서 학습을 시켜주는 알고리즘의 수준까지 가능해짐. 

하지만 학습된 데이터를 만드는 게 어려움. 사람이 할 수 없기 때문. 데이터를 가공하는 능력은 사람도 중요함.

똑같은 데이터를 가져도 어떻게 가공하는지에 따라 결과가 다르게 나온다.

라벨 트레이닝 set를 만드는 작업이 데이터 프로그래밍이다.

이것이 돼야 머신러닝이 가능해진다. large label training

numpy는 빅데이터를 다루기 위해 만들어졌다. C언어 기반으로 만들어져 속도가 빠르다.

 

반응형

'빅데이터 직무부트캠프 : 21.05.14~06.11' 카테고리의 다른 글

5/25 2주차 과제  (0) 2021.05.27
5/18 1주차 과제  (0) 2021.05.21
1, 2주차 과제  (0) 2021.05.14