하둡 (Hadoop) 및 관련기술 훑어보기

  • 9,784 views
Uploaded on

하둡 관련 기술 발표 자료 (나 처럼 관련 지식이 없는 사람들을 위한 기술 소개 자료)

하둡 관련 기술 발표 자료 (나 처럼 관련 지식이 없는 사람들을 위한 기술 소개 자료)

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
9,784
On Slideshare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
277
Comments
1
Likes
24

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Hadoop & 관련 기술 훑어 보기 최범균 (2013-12-02)
  • 2. 목표 ● 하둡 및 관련 기술들 개요 수준으로 알아보기 ○ 깊게 파기 위한 사전 준비 (이런 게 있다…) ■ 용어/이름 정도는 알고 가자 ○ 각 기술들의 정확한 동작 원리 등은 앞으로 파야 함 ● 훑어볼 것들 ○ ○ ○ ○ ○ Hadoop (HDFS, MR) Pig / Hive Flume / Sqoop Oozie HBASE
  • 3. 시작은 Hadoop 부터 ● 두 가지 목적 ○ 정말 매우 큰 데이터를 저장할 수 있어야 하고 ○ 그 데이터를 이용해서 연산을 수행할 수 있어야 함 ● 이를 위한 두 가지 ○ HDFS(Hadoop Distributed File System) ○ MapReduce (2버전에는 YARN)
  • 4. HDFS: 분산 파일 시스템 접근할 데이터 노드 문의 네임노드 Heart Beat, 블록 정보 전송 하둡 클라이언트 파일 읽기/쓰기 파일(블록)-데이터노드 메타 정보 SPOF 데이터 노드 데이터 노드 데이터 노드 파일 쓰기 시에 데이터 노드 간 블록 복사
  • 5. MapReduce 1: 병렬 연산 수행 잡(Job) 실행 요청 잡 클라이언트 복사 - 잡 파일 - 잡 스플릿 정보 잡트래커 잡 정보 조회 잡 파일 조회 HDFS 잡을 태스크로 분리 작은 규모는 네임노드 프로세 스와 동일 노드 위치 주기적 상태 보고 태스크 할당 받음 태스크 트래커 프로세스 생성 맵: 파일 읽기 리듀스: 결과 저장 태스크JVM 데이터노드 프로세스와 동일 노드
  • 6. MapReduce 1 흐름 태스크JVM 맵 실행 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 맵 결과 태스크JVM 맵 실행 맵 결과 맵 결과 병합 태스크JVM 리듀스 실행
  • 7. HDFS/MR과 관련된 난관 ● 맵리듀스 프로그램을 직접 하려면 머리 빠짐 ● 외부 데이터를 하둡에 밀어넣기 위해 코드 만 들기 귀찮다. ● 데이터 처리 흐름을 직접 만들자니, 귀찮다. ● 서비스 어플리케이션의 데이터 보관소로 사 용하고 싶다.
  • 8. HDFS/MR 관련 기술들 상황 기술 MR을 쉽게 Pig: 전용 스크립트로 데이터 처리 Hive: SQL을 이용한 데이터 처리 데이터 이동을 쉽게 Flume: 로그를 HDFS에 복사 Sqoop: RDB와 HDFS간의 데이터 복 사 데이터 처리 흐름을 쉽 게 Oozie NoSQL처럼 HBASE
  • 9. Pig ● 분석 위한 고수준 언어 지원 (Pig Latin) ○ ○ ○ ○ ○ HDFS 파일을 PigStorage()로 추상화해서 접근 AVG, COUNT, MAX, SUM, ... JOIN, DISTINCT, GROUP, ORDER BY ... FOREACH, CASE, FILTER, ... LOAD, STORE로 HDFS 파일 접근 ● 대용량 데이터셋 분석 플랫폼 ○ 스크립트를 MR로 변환해서 하둡에서 실행 ● 스크립트 실행 방식 ○ grunt: 대화형 쉘에서 스크립트 입력 ○ script: 스크립트 파일을 실행
  • 10. Pig vs MR MR public class WordCount { public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { String line = value.toString(); StringTokenizer tokenizer = new StringTokenizer(line); while (tokenizer.hasMoreTokens()) { word.set(tokenizer.nextToken()); output.collect(word, one); } } } public static class Reduce extends MapReduceBase implements Reducer<Text, IntWritable, Text, IntWritable> { public void reduce(Text key, Iterator<IntWritable> values, OutputCollector<Text, IntWritable> output, Reporter reporter) throws IOException { int sum = 0; while (values.hasNext()) sum += values.next().get(); output.collect(key, new IntWritable(sum)); } } public static void main(String[] args) throws Exception { JobConf conf = new JobConf(WordCount.class); conf.setJobName("wordcount"); conf.setOutputKeyClass(Text.class); conf.setOutputValueClass(IntWritable.class); conf.setMapperClass(Map.class); conf.setCombinerClass(Reduce.class); conf.setReducerClass(Reduce.class); conf.setInputFormat(TextInputFormat.class); conf.setOutputFormat(TextOutputFormat.class); FileInputFormat.setInputPaths(conf, new Path(args[0])); FileOutputFormat.setOutputPath(conf, new Path(args[1])); JobClient.runJob(conf); } Pig A = load './input.txt'; B = foreach A generate flatten(TOKENIZE((chararray)$0)) as word; C = group B by word; D = foreach C generate COUNT(B), group; store D into './wordcount'; }
  • 11. Hive ● 마치 RDBS처럼 ○ SQL과 매우 유사한 HQL ○ DB/테이블 제공 ● 데이터 보관/쿼리 실행을 하둡에서 ○ HDFS에 데이터 보관 ○ HQL을 MR로 변환해서 실행 ● 별도의 RDB에 DB/테이블 메타정보 저장 ● 제약 ○ 행 단위 수정/삭제 불가 (HDFS 파일의 제약) ○ 트랜잭션 X
  • 12. Hive의 구성 메타스토어 CLI Hive Web Interface Hive JDBC Driver Driver Session, Compiler Execution Engine Hive Server Hive Thrift Client 하둡 클러스터
  • 13. Sqoop ● RDBMS와 HDFS/Hive/HBase 간 데이터 이 동을 처리해주는 도구 ○ MR을 생성해서 하둡을 통해 실행 하둡 클래스터 Sqoop (CLI 도구) MR 태스크 데이터 복사 메타 정보 로딩 RDB HDFS Hive HBase
  • 14. Flume ● 로그를 하둡에 보관하기 위한 목적으로 사용 ● 일반적인 구성 Agent Agent Agent Agent Agent tail, syslog 등에서 로그 수집 하둡 클러스터 (HDFS, HBASE)
  • 15. Oozie ● Hadoop 관련 워크플로우 엔진 ○ 워크플로우 정의 (XML) ■ 작업 (Hive, Pig, Sqoop 등을 이용한 작업 정의) ■ 작업 간 의존(실행 순서) 설정 ○ 워크플로우 실행 및 모니터링 Oozie 클라이언트 Oozie 서버 CLI, Java API, Rest API 웹브라우저(읽기 전용) RDB 하둡 클러스터
  • 16. HBase ● 실시간 서비스 위한 하둡 기반 데이터 저장소 클러스터 코디네이터 ROOT 테이블 위치 조회 Zookeeper Client - 한 개 이상의 리전을 가짐 - 클라이언트의 읽기/쓰기 요 청 처리 - 리전은 메모리에 일정 크기 데이터 보관 (캐시 효과) HMaster Region Server Region Server 하둡 클러스터 HDFS 리전 관리 Region Server - 커밋 로그 보관 - 데이터 보관
  • 17. HBase ● 주요 특징 ○ ○ ○ ○ ○ ○ 데이터를 HDFS에 저장 컬럼 기반 형태의 NoSQL DB 데이터 크기가 커지면 자동 분리(auto sharding) 높은 쓰기 처리량 rowkey 기반 접근 행 단위 Consistency 보장 ■ 즉, 여러 행에 대한 트랜잭션 보장 없음
  • 18. 정리 Oozie (워크플로우) 데이터 적재 Flume (로그 복사) Sqoop (RDB 복사) 데이터 처리 Pig (스크립트) 하둡 클러스터 (HDFS/MR) Hive (SQL) HBase 클러스터 (NoSQL)
  • 19. 기타: 관련 기술 너무 많음 ^^; ● ● ● ● ● SQL on Hadoop: Impala, Tajo, Dremel Machine Learing, 검색: Mahout, Elastic Search 분산 코디네이터: Zookeeper Streaming 분석: Storm, S4 등 배포판 ○ NDAP (NexR Data Analysis Platform) ○ CHD (Cloudera’s Distribution including Apache Hadoop) ○ HDP (Hortonworks Data Platform) ● 시각화: D3