일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 기계학습
- 빅데이터
- Python
- 데이터처리
- pandas
- R그래프
- R프로그래밍
- 딥러닝
- CNN
- 그래프시각화
- 데이터시각화
- 데이터
- NLP
- 데이터분석
- R시각화
- lstm
- HIVE
- 그래프
- word2vec
- 자연어처리
- 빅데이터처리
- Deeplearning
- 하둡
- 머신러닝
- ggplot
- Hadoop
- r
- SQL
- 주가예측
- AI
- Today
- Total
욱이의 냉철한 공부
[Hadoop, Pig] 빅데이터 Pig 이해하기 본문
빅데이터의 유형
1) 구조화 데이터
- 행과 열로 구조화 되어 있다.
- 고객데이터, 업무데이터, 거래데이터 등
- 관계 데이터베이스에 저장
- 앞으로 언급할 관계 데이터베이스 : 오라클-db, my-sql, mariai-db
2) 반구조화 데이터
- XML, JSON : 키와 값 구조로 되어있다.
- NoSQL 데이터베이스에 저장
- 앞으로 언급할 NoSQL 데이터베이스 : Mongo-db, Cassndra, Hbase
3) 비구조화 데이터 ,빅데이터
- 텍스트, 동영상, 음성
- 하둡(분산처리시스템)에 저장 및 처리
- 앞으로 언급할 하둡에코(합체)시스템 : Hive1, Hive2, Pig, Spark
하둡 이해하기
https://warm-uk.tistory.com/56?category=810504
=> 하둡에 합체되어 사용하는 Apache Pig에 대해 알아보자!
=> Pig(돼지)가 Hadoop(코끼리) 위에 올라탔다.
1. 왜 Hive말고 Pig 사용하는가? : 성능 때문이다.
- Hive의 약한 부분은 JOIN이다.
한 개의 거대한 테이블은 상관없는데 여러 개의 테이블을 조인하여 MapReduce하게 된다면 셔플링 작업에 성능적인 제한사항이 있다. 실행계획과 함께 작업을 실행하면 해결 할 수 있지만 Hive에서는 약하다. 실행계획이란 여러 개의 작업 대안 중 하나를 선택하여 최적화 하는 것이다.
즉 여러 개의 테이블을 짬뽕해서 사용 할 때는 Pig가 성능적인 면에서 더 좋다.
* Pig의 장점 : 옵티마이저 실행한다.
- 예를 들어 작업을 실행하는데 방법이 a안, b안, c안, d안이 있다고 하자.
C안이 반복적인 작업을 덜 하기 때문에 C안을 쓰는 것이 가장 효율적이라고 알려줘야 한다.
더불어 C안이 CPU를 가장 적게 사용하기 때문에 이것이 좋은 방법이라고 알려줘야 한다.
이것이 옵티마이저를 실행하는 것.
- 하지만 단점도 있다. 잘못 실행하면 반복을 많이 하고 CPU를 많이 사용하게 된다.
* Pig 사용하는 기업 : Yahoo, Zum 등
2. 하둡의 합체시스템 Pig : 절차적 데이터 처리 언어 프레임워크
- 하둡의 한계를 극복하는 합체 시스템 (코끼리와 합체하자!)
대규모의 데이터를 쉽게 분석할 수 있도록 스크립트 수준의 언어를 제공하는 분석 플랫폼
Hadoop 상에서 구동하면 스크립트가 내부적으로 MapReduce로 수행된다.
- Pig는 고수준 언어로 데이터 분석을 프로그래밍할 수 있는 방대한 양의 데이터 분석 플랫폼이며, 이를 평가할 수 있는 인프라도 함께 제공하며 큰 특징은 대규모 병렬 처리에 대응할 수 있는 구조라 대규모 데이터 처리가 용이하다는 것이다.
3. Pig 언어 : Pig Latin(피그 라틴)
- 스크립트 : 데이터 흐름을 명시적으로 보여 줄 수 있는 코드 작성
작업들 다 모아서 세트를 만든다. 한 세트로 만들어 주는 것이 스크립트이다.
- 이해하기 쉽고 유지보수가 쉽다.
- 시스템이 코드 실행을 자동으로 최적화하므로(옵티마이저) 사용자는 효율성을 생각하지 않고 프로그래밍 내용에만 집중
- Pig Latin으로 작성한 데이터 처리 프로그램은 논리적인 실행 계획으로 변환되고, 이것은 최종적으로 MapReduce 실행 계획으로 변환
- int, long, double 등 기본형 외에 Relation, Bag, Tuple과 같은 고수준 자료구조를 제공하고, Filter, Foreach, Group, Join, Load, Store 등 관계연산을 지원한다. 사용자 지정 함수도 정의 가능하다.
- R이나 스칼라하고 비슷하다. SQL하고는 전혀 다른 언어이다. 간단해서 쉬울 수도 있지만 처음 보는 언어이기 때문에 어려울 수 있다.
- HDPS 파일만 가져올 수 있다.
* 실행하는 모습
- A, B, C, D ... 이렇게 개별적으로 나누는 이유는 나중에 똑같은 작업을 다시 할 수 있기 때문이다.
- 작업이 축적되는 것이다. A가 있어야 C를 할 수 있고, C가 있어야 D를 할 수 있다.
- MapReduce를 몇 번하는지 확인 할 수 있다. 6개의 MapReduce를 동시에 수행한다.
- 여러 개의 작업을 동시에 수행 할 때 Pig가 훨씬 좋은 성능을 보여준다.
- Hive보다 더 계획적으로 MapReduce를 수행하며 여러 개의 작업을 Control 할 수 있다.
- MapReduce 작업을 개별적으로 설정할 수 있다.
4. Hive 말고 무조건 Pig를 사용하는 것이 좋은 것은 아니다. 상황에 따라 다르다.
- Hive는 편리성을 위하여 MapReduce 작업을 완전 대체하는 것이고, 개별적으로 분석하는 것이 아니라 믿고 기다리는 것이다. 완전 다 Control 하기 위해서는 Java를 배워야..
- 반면에 개별적으로 Control 하며 깊고 자세하게 성능적으로도 최적화 하면서 사용하기 위해서는 Pig
'데이터엔지니어링 > 빅데이터 : Hadoop' 카테고리의 다른 글
[Hadoop, Pig] 빅데이터 Pig로 만져보기 - R시각화 (0) | 2021.06.22 |
---|---|
[Hadoop, 하둡] 빅데이터 MAPREDUCE로 WordCount2 - R시각화 (0) | 2021.06.22 |
[Hadoop, Hive] 빅데이터 Hive로 MapReduce (0) | 2021.06.22 |
[Hadoop, Hive] 빅데이터 Hive 이해하기 (0) | 2021.06.22 |
[Hadoop, 하둡] 빅데이터 MAPREDUCE로 WordCount (0) | 2021.06.22 |