Upload
others
View
5
Download
0
Embed Size (px)
Citation preview
Department of Computer Science, Kangwon National University
Apache Hadoop Study
손시운2017. 01. 11.
빅데이터
빅데이터란?– 기존의시스템에서는관리하기어려운복잡한형태의대용량데이터
– 또는이러한데이터를처리하기위한기술
빅데이터의 정의: 3V– 크기(Volume)
테라바이트단위의대용량데이터
– 다양성(Variety) 반정형또는비정형데이터
– 속도(Velocity) 대용량데이터를처리하는빠른속도
2017-01-11 2
Apache Hadoop
하둡(Apache Hadoop)– 가장대표적인빅데이터기술
– 대용량데이터의일괄처리(batch processing)를위한오픈소스분산플랫폼
– HDFS와맵리듀스로구성
특징– 접근성(Accessible): 범용 PC들로구성된클러스터및클라우드컴퓨팅서비스에서실행
– 견고성(Robust): H/W의빈번한고장을가정하여설계하여, 대응이가능
– 확장성(Scalable): 클러스터에단순히컴퓨터(node)를추가하여확장
– 단순성(Simple): 효과적인병렬코드를빠르게작성
2017-01-11 3
HDFS의구조
HDFS: 대용량의 데이터를분산환경에저장및관리
블록구조파일시스템– 저장하는파일이특정사이즈의블록으로나눠져분산된서버에복제하여저장
– 기본 128MB 사용
2017-01-11 4
640
기존대용량파일시스템
DAS(Direct-attached Storage)– 서버에직접연결된스토리지(storage)이며, 외장형하드디스크와유사– 여러개의하드디스크를장착할수있는외장케이스를이용하는방식사용
NAS(Network-attached Storage)– 일종의파일서버. 별도의운영체제를사용하며, 파일시스템을안정적으로공유– 주로첨부파일이나이미지같은데이터를저장하는데사용
SAN(Storage Area Network)– DAS의단점을극복하기위해개발– DBMS와 같이안정적이고빠른접근이필요한데이터를저장하는데사용
2017-01-11 5
HDFS 구성요소
네임노드(NameNode): Master 역할– 하둡의가장필수적인하둡데몬
– HDFS의모든메타데이터를관리
– 클라이언트가 HDFS에저장된파일에접근할수있게함– 단점: 단일실패지점보유
데이터노드(DataNode): Slave 역할– 블록으로나눠진데이터를저장
– 주기적으로네임노드에게하트비트(heartbeat)와블록리포트(block report)를전송
2017-01-11 6
HDFS 구성요소
2017-01-11 7
HDFS 구성요소
보조네임노드(Secondary NameNode): Stand-by Master 역할– 주기적으로 HDFS 메타데이터의스냅샷을저장
– 네임노드에오류가발생할경우네임노드의역할을대신수행
2017-01-11 8
HDFS 메커니즘
Writing to Cluster
2017-01-11 9
HDFS 메커니즘
Reading from Cluster
2017-01-11 10
맵리듀스개요(1/6)
프로그램확장 – Word Count(계속)– 단일시스템에서 Word Count의의사코드
2014-01-03 11
단어 개수
as 2do 2i 2
not 1say 1
맵리듀스개요(2/6)
프로그램확장 – Word Count– 분산된시스템에서 Word Count 의사코드
– 위코드를구현할경우 2가지단점이발생 중앙서버에접근하는컴퓨터에의해병목현상이발생
Word Count 결과가메모리에저장
2014-01-03 12
맵리듀스개요(3/6)
맵리듀스정의– 구글에서정보검색을위한데이터가공을목적으로개발된분산환경에서의병렬데이터처리기법이자프로그래밍모델
맵리듀스시스템구성
2017-01-11 13
클라이언트
잡트래커
태스크트래커
맵맵맵
리듀스리듀스리듀스
데이터노드
태스크트래커
맵맵맵
리듀스리듀스리듀스
데이터노드
태스크트래커
맵맵맵
리듀스리듀스리듀스
데이터노드
맵리듀스개요(4/6)
맵리듀스구성요소(계속)– mapper
입력데이터를필터링
reduce가처리할수있는형태로변형
– reducer 값을받아통합
2014-01-03 14
맵리듀스개요(5/6)
맵리듀스구성요소
– 입력은반드시 (키, 값)으로구성
– 각데이터를 mapper에있는 map함수를호출해처리– mapper는 <k2, v2>형태의리스트로변환
– 키값(k2)가같은경우, 새로운 <k2, list(v2)>의형태로재구성
– reducer에의해 <k3, v3>의형태로로재구성
– MapReduce 프레임워크는자동으로모든결과값을모아파일에기록
2014-01-03 15
입력 출력
map <k1, v1> list(<k2, v2>)reduce <k2, list(v2)> list(<k3, v3>)
맵리듀스개요(6/6)
맵리듀스를 이용해프로그램확장 – Word Count– Word Count를위한 map과 reduce 함수의의사코드
2014-01-03 16
YARN
하둡1 MR 시스템의몇가지단점
2017-01-11 17
출처: 최범균, 하둡2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014.
한 노드에서 실행할 수 있는 Map과Reduce용 태스크개수가제한됨.
즉, 노드에 여유 자원이 있어도그 자원을활용 하지못하는상황이발생.
MR만실행가능.
클러스터의자원배분과 Job 관리를함께수행. 클러스터에서병목지점이됨.
YARN
YARN: Yet Another Resource Negotiator
주요특징– MR1 시스템의잡트래커가하던두가지역할(자원관리, Job 상태관리)를 ResourceManager와
ApplicationMaster로분리 기존잡트래커에몰리던병목을제거
– 범용컴퓨팅클러스터 맵리듀스외에다양한어플리케이션을실행할수있으며, 어플리케이션마다자원(CPU, 메모리)을할당받음
2017-01-11 18
출처: 최범균, 하둡2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014.
YARN
YARN의 구조
2017-01-11 19
출처: 최범균, 하둡2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014.
어플리케이션마다자원을할당하고, App Master를관리한다.클러스터에 1개
노드의 컨테이너를 관리하고 자원 상태를 RM에통지. 노드당 1개
어플리케이션의실행을관리하고, 상태를 RM에통지어플리케이션당 1개
어플리케이션을실행. 제한된자원을가지고, 상태를 AM에 통지
YARN
YARN의 실행흐름– 1.클라이언트가 RM에어플리케이션제출
– 2. NM를 통해 AM를 실행
– 3. AM은 RM에 자신을등록– 4. AM은 RM을 통해어플리케이션을실행할컨테이너할당을요청함
– 5. AM은 NM에게할당된컨테이너를실행하라고요청함 (AM은어플리케이션실행에필요한정보를 NM에제공)
– 6.컨테이너에서실행되는어플리케이션은상태정보를 AM에전송
– 7.클라이언트는어플리케이션실행상태정보를얻기위해 AM와 직접통신
– 8.어플리케이션이종료되면 AM은 RM에서자신을제거하고셧다운됨
2017-01-11 20
출처: 최범균, 하둡2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014.
하둡클러스터설정
독립실행(Standalone) 모드– 사용자의 H/W 정보없이최소한의환경설정만요구
– 로컬머신에서만실행
가상분산(Pseudo-distributed) 모드– 클러스터가한대로구성되어모든데몬이실행– 코드디버깅시독립실행모드에서의기능을보완
완전분산(Fully-distributed) 모드– 분산저장및연산이가능한모든기능이갖추어진클러스터를구성
2017-01-11 21
준비물
MS Windows 7 이상
Oracle VirtualBox 5 이상– https://www.virtualbox.org/wiki/Downloads– 미리설치할것
CentOS 7 x86_64 DVD 이미지파일– https://www.centos.org/download/– DVD ISO
2017-01-11 22
호스트서버(Windows)
VirtualBox
VM(CentOS)
VM(CentOS)
VM(CentOS)
네임노드보조네임노드
데이터노드01 데이터노드02
가상머신설치
MN서버
2017-01-11 23
VirtualBox 실행
[새로만들기(N)] 클릭
2017-01-11 24
MN서버가상머신생성
이름및운영체제– 이름: MN– 종류: Linux– 버전: Red Hat (64-bit)
[다음(N)] 클릭
2017-01-11 25
MN서버가상머신생성
메모리크기– 추천메모리크기로...
다음(N) 클릭
2017-01-11 26
MN서버가상머신생성
하드디스크– [지금새가상하드디스크만들기(C)] 체크
[만들기] 클릭
2017-01-11 27
MN서버가상머신생성
하드디스크파일종류– [VDI (VirtualBox 디스크이미지)] 체크
다음(N) 클릭
2017-01-11 28
MN서버가상머신생성
물리적하드드라이브에저장– [동적할당(D)] 체크
[다음(N)] 클릭
2017-01-11 29
MN서버가상머신생성
파일위치및크기– 기본값으로...
[만들기] 클릭
2017-01-11 30
MN서버가상머신생성
생성완료
2017-01-11 31
MN서버에 CentOS 이미지파일연결
MN 가상머신우클릭 > [설정]
2017-01-11 32
MN서버에 CentOS 이미지파일연결
[저장소] > [컨트롤러: IDE]의 [비어있음]을클릭
[광학드라이브] 오른쪽의 CD 아이콘클릭
[가상광학디스크파일선택] 클릭 > 다운로드받은 CentOS 이미지파일선택
2017-01-11 33
MN서버의네트워크어댑터설정
[네트워크] 탭– [어댑터 1]는 NAT로설정, [어댑터 2]는호스트전용어댑터로설정
2017-01-11 34
MN서버 CentOS 설치
MN 실행– [Install CentOS Linux 7] 실행
설치과정– [한국어] 체크– [계속진행] 클릭
2017-01-11 35
MN서버 CentOS 설치
[소프트웨어 선택] 클릭
2017-01-11 36
MN서버 CentOS 설치
소프트웨어 선택– 기본환경에서 [GNOME 데스크탑] 체크 > 선택한환경의기능에서 [개발용도구] 체크– [완료] 클릭
2017-01-11 37
MN서버 CentOS 설치
설치대상– 변경없이 [완료] 클릭
2017-01-11 38
MN서버 CentOS 설치
네트워크 & 호스트이름– 이더넷 (enp0s3)의네트워크를켬으로변경
– 호스트이름을 MN으로수정후 [적용]
[완료] 클릭
[설치시작] 클릭
2017-01-11 39
MN서버 CentOS 설치
[ROOT 암호] 클릭
2017-01-11 40
MN서버 CentOS 설치
ROOT 암호– 루트계정의암호를입력
– 실습에서는간단히 “1234”를사용
[완료] 클릭
2017-01-11 41
MN서버 CentOS 설치
사용자생성– 성명에 hadoop을입력
– [이사용자를관리자로합니다] 체크– 암호입력– 실습에서는 “hadoop”을사용
[완료] 클릭
2017-01-11 42
MN서버 CentOS 설치
설치중...
2017-01-11 43
MN서버 CentOS 설치
설치가완료되면자동으로재부팅
2017-01-11 44
MN서버네트워크설정
hadoop 계정으로로그인– 우측상단의메뉴를클릭 > 설정아이콘클릭
2017-01-11 45
MN서버네트워크설정
하드웨어 > [네트워크] 클릭
2017-01-11 46
MN서버네트워크설정
[이더넷 (enp0s8)] 클릭 > 우측하단의설정아이콘클릭
2017-01-11 47
MN서버네트워크설정
수동 IP 설정– IPv4에서네트워크를켬으로변경
– IP 할당방식을 [수동]으로변경
– 주소에 192.168.56.100을입력– 네트마스크에 255.255.255.0을입력
– 게이트웨이에 192.168.56.1을입력
– 네임서버에 168.126.63.1을입력
[적용] 클릭
2017-01-11 48
가상머신설치
SN01
2017-01-11 49
VirtualBox 실행
[새로만들기(N)] 클릭
2017-01-11 50
SN01 서버가상머신생성
이름및운영체제– 이름: SN01– 종류: Linux– 버전: Red Hat (64-bit)
[다음(N)] 클릭
2017-01-11 51
SN01 서버가상머신생성
메모리크기– 추천메모리크기로...
다음(N) 클릭
2017-01-11 52
SN01 서버가상머신생성
하드디스크– [지금새가상하드디스크만들기(C)] 체크
[만들기] 클릭
2017-01-11 53
SN01 서버가상머신생성
하드디스크파일종류– [VDI (VirtualBox 디스크이미지)] 체크
다음(N) 클릭
2017-01-11 54
SN01 서버가상머신생성
물리적하드드라이브에저장– [동적할당(D)] 체크
[다음(N)] 클릭
2017-01-11 55
SN01 서버가상머신생성
파일위치및크기– 기본값으로...
[만들기] 클릭
2017-01-11 56
SN01 서버가상머신생성
생성완료
2017-01-11 57
SN01 서버에 CentOS 이미지파일연결
SN01 가상머신우클릭 > [설정]
2017-01-11 58
SN01 서버에 CentOS 이미지파일연결
[저장소] > [컨트롤러: IDE]의 [비어있음]을클릭
[광학드라이브] 오른쪽의 CD 아이콘클릭
[가상광학디스크파일선택] 클릭 > 다운로드받은 CentOS 이미지파일선택
2017-01-11 59
SN01 서버의네트워크어댑터설정
[네트워크] 탭– [어댑터 1]는 NAT로설정, [어댑터 2]는호스트전용어댑터로설정
2017-01-11 60
SN01 서버 CentOS 설치
SN01 실행– [Install CentOS Linux 7] 실행
설치과정– [한국어] 체크– [계속진행] 클릭
2017-01-11 61
SN01 서버 CentOS 설치
[소프트웨어 선택] 클릭
2017-01-11 62
SN01 서버 CentOS 설치
소프트웨어 선택– 기본환경에서 [최소설치] 체크 > 선택한환경의기능에서 [개발용도구] 체크– [완료] 클릭
2017-01-11 63
SN01 서버 CentOS 설치
설치대상– 변경없이 [완료] 클릭
2017-01-11 64
SN01 서버 CentOS 설치
네트워크 & 호스트이름– 이더넷 (enp0s3)의네트워크를켬으로변경
– 호스트이름을 SN01로수정후 [적용]
[완료] 클릭
[설치시작] 클릭
2017-01-11 65
SN01 서버 CentOS 설치
[ROOT 암호] 클릭
2017-01-11 66
SN01 서버 CentOS 설치
ROOT 암호– 루트계정의암호를입력
– 실습에서는간단히 “1234”를사용
[완료] 클릭
2017-01-11 67
SN01 서버 CentOS 설치
사용자생성– 성명에 hadoop을입력
– [이사용자를관리자로합니다] 체크– 암호입력– 실습에서는 “hadoop”을사용
[완료] 클릭
2017-01-11 68
SN01 서버 CentOS 설치
설치중...
2017-01-11 69
SN01 서버네트워크설정
루트계정으로로그인– $ yum install -y net-tools
2017-01-11 70
SN01 서버네트워크설정
정적 IP 할당– $ vi /etc/sysconfig/network-scripts/ifcfg-enp0s8– BOOTPROTO, ONBOOT 항목수정
– IPADDR, NETMASK, GATEWAY 추가
2017-01-11 71
SN01 서버네트워크설정
네트워크재시작– $ service network restart
MN서버에게 ping– $ ping 192.168. 56.100
2017-01-11 72
가상머신설치
SN02
2017-01-11 73
SN01 서버복제
SN01 서버종료– $ shutdown -h now
2017-01-11 74
SN01 서버복제
서버복제– SN01 서버우클릭 > [복제] 클릭
2017-01-11 75
SN01 서버복제
새머신이름– SN02 입력– [모든네트워크카드의 MAC 주소초기화] 체크
[다음] 클릭
2017-01-11 76
SN01 서버복제
복제방식– [완전한복제] 체크
[복제] 클릭
2017-01-11 77
SN02 서버실행
서버실행후루트계정로그인– 현재호스트명이 SN01이므로변경
2017-01-11 78
호스트명변경
호스트명을 SN02로 변경– $ hostnamectl set-hostname SN02
로그아웃하면 SN02로 변경되어있음
2017-01-11 79
SN02 서버네트워크설정
정적 IP 할당– $ vi /etc/sysconfig/network-scripts/ifcfg-enp0s8– IPADDR 수정
2017-01-11 80
SN02 서버네트워크설정
네트워크재시작– $ service network restart
MN 서버에게핑– $ ping 192.168.56.100
2017-01-11 81
하둡설치
2017-01-11 82
호스트명추가
모든서버에서 /etc/hosts 파일수정– $ sudo vi /etc/hosts– 192.168.56.100 MN– 192.168.56.101 SN01– 192.168.56.102 SN02
2017-01-11 83
SSH 공개키배포
모든서버에서 SSH 공개키생성– $ ssh-keygen -t rsa
[Enter], [Enter], ...
2017-01-11 84
SSH 공개키배포
키배포– $ scp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys– $ scp ~/.ssh/id_rsa.pub SN01:~/.ssh/authorized_keys– $ scp ~/.ssh/id_rsa.pub SN02:~/.ssh/authorized_keys
2017-01-11 85
SSH 공개키배포
SSH 확인– $ ssh MN– $ ssh SN01– $ ssh SN02– MN, SN01, SN02에 ssh로접근했을때, 암호없이로그인해야함
2017-01-11 86
Java 설치
모든서버에서 Java 설치– $ sudo yum install -y java-1.8.0-openjdk-devel.x86_64
모든서버에서 Java 환경변수등록– $ vi ~/.bashrc– export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/"– export PATH=$PATH:$JAVA_HOME/bin/:– $ source ~/.bashrc
2017-01-11 87
하둡다운로드
하둡홈페이지접속후 [Releases] 클릭
2017-01-11 88
하둡다운로드
필요한버전의 tarball을 받기위해 [binary] 클릭– 이문서는 Hadoop 2.6.5 사용
2017-01-11 89
하둡다운로드
Apache에서 추천하는 미러사이트의경로확인– http://apache.tt.co.kr/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
2017-01-11 90
하둡다운로드
MN 서버에서하둡다운로드– wget http://apache.tt.co.kr/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz
하둡압축해제– $ tar -zxf hadoop-2.6.5.tar.gz
2017-01-11 91
하둡홈디렉터리
2017-01-11 92
하둡환경설정
2017-01-11 93
하둡환경설정
core-site.xml– $ vi core-site.xml
2017-01-11 94
<configuration><property>
<name>fs.defaultFS</name><value>hdfs://MN:9000</value><final>true</final>
</property><property>
<name>hadoop.tmp.dir</name><value>/home/whadoop/hadoop-${user.name}</value>
</property></configuration>
하둡환경설정
hadoop-env.sh– $ vi hadoop-env.sh
2017-01-11 95
# export JAVA_HOME=${JAVA_HOME}export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.111-2.b15.el7_3.x86_64/"
하둡환경설정
hdfs-site.xml– $ vi hdfs-site.xml
2017-01-11 96
<configuration><property>
<name>dfs.namenode.name.dir</name><value>${hadoop.tmp.dir}/dfs/name</value><final>true</final>
</property>
<property><name>dfs.datanode.data.dir</name><value>${hadoop.tmp.dir}/dfs/data</value><final>true</final>
</property>
<property><name>dfs.replication</name><value>2</value>
</property>
<property><name>dfs.namenode.acls.enabled</name><value>true</value>
</property></configuration>
하둡환경설정
mapred-site.xml– $ cp mapred-site.xml.template mapred-site.xml– $ vi mapred-site.xml
2017-01-11 97
<configuration><property>
<name>mapreduce.framework.name</name><value>yarn</value>
</property>
<property><name>mapred.system.dir</name><value>${hadoop.tmp.dir}/mapred/system</value><final>true</final>
</property>
<property><name>mapred.local.dir</name><value>${hadoop.tmp.dir}/mapred/local</value><final>true</final>
</property><property>
<name>mapreduce.tasktracker.taskcontroller</name><value>org.apache.hadoop.mapred.LinuxTaskController</value>
</property>
<property><name>mapreduce.tasktracker.group</name><value>hadoop</value>
</property></configuration>
하둡환경설정
slaves– $ vi slaves
2017-01-11 98
SN01SN02
하둡환경설정
yarn-site.xml– $ vi yarn-site.xml
2017-01-11 99
<configuration><property>
<name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property>
<property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property><name>yarn.resourcemanager.address</name><value>MN:8032</value>
</property><property>
<name>yarn.resourcemanager.scheduler.address</name><value>MN:8030</value>
</property><property>
<name>yarn.resourcemanager.resource-tracker.address</name><value>MN:8031</value>
</property></configuration>
하둡배포
모든데이터노드에게 네임노드에서 환경설정한하둡을배포– $ while read line; do– > scp -r ~/hadoop-2.6.5 ${line}:~/;– > done < ~/hadoop-2.6.5/etc/hadoop/slaves
하둡심볼링링크생성(모든노드에서작업)– $ ln -s ~/hadoop-2.6.5 ~/hadoop
2017-01-11 100
하둡환경변수등록
Java 및하둡의환경변수등록– $ vi ~/.bashrc
– $ source ~/.bashrc
2017-01-11 101
export HADOOP_HOME=/home/hadoop/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
하둡실행
HDFS format– $ hdfs namenode -format
2017-01-11 102
하둡실행
HDFS 및 YARN 구동– $ start-dfs.sh #네임노드에서만– $ start-yarn.sh #네임노드에서만– $ jps #모든노드에서
2017-01-11 103
하둡사용하기
HDFS
2017-01-11 104
HDFS 명령어
Usage: hdfs dfs [generic options]– [-appendToFile <localsrc> ... <dst>]– [-cat [-ignoreCrc] <src> ...]– [-checksum <src> ...]– [-chgrp [-R] GROUP PATH...]– [-chmod [-R] <MODE[,MODE]... | OCTALMODE> PATH...]– [-chown [-R] [OWNER][:[GROUP]] PATH...]– [-copyFromLocal [-f] [-p] [-l] <localsrc> ... <dst>]– [-copyToLocal [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]– [-count [-q] [-h] <path> ...]– [-cp [-f] [-p | -p[topax]] <src> ... <dst>]– [-createSnapshot <snapshotDir> [<snapshotName>]]– [-deleteSnapshot <snapshotDir> <snapshotName>]– [-df [-h] [<path> ...]]– [-du [-s] [-h] <path> ...]– [-expunge]– [-get [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]– [-getfacl [-R] <path>]– [-getfattr [-R] {-n name | -d} [-e en] <path>]
– [-getmerge [-nl] <src> <localdst>]– [-help [cmd ...]]– [-ls [-d] [-h] [-R] [<path> ...]]– [-mkdir [-p] <path> ...]– [-moveFromLocal <localsrc> ... <dst>]– [-moveToLocal <src> <localdst>]– [-mv <src> ... <dst>]– [-put [-f] [-p] [-l] <localsrc> ... <dst>]– [-renameSnapshot <snapshotDir> <oldName> <newName>]– [-rm [-f] [-r|-R] [-skipTrash] <src> ...]– [-rmdir [--ignore-fail-on-non-empty] <dir> ...]– [-setfacl [-R] [{-b|-k} {-m|-x <acl_spec>} <path>]|[--
set<acl_spec> <path>]]– [-setfattr {-n name [-v value] | -x name} <path>]– [-setrep [-R] [-w] <rep> <path> ...]– [-stat [format] <path> ...]– [-tail [-f] <file>]– [-test -[defsz] <path>]– [-text [-ignoreCrc] <src> ...]– [-touchz <path> ...]– [-usage [cmd ...]]
2017-01-11 105
http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/FileSystemShell.html
HDFS 간단한예제
e.g. 파일저장및가져오기
2017-01-11 106
Name Node Web UI
http://192.168.56.100:50070/
2017-01-11 107
하둡사용하기
맵리듀스
2017-01-11 108
예제: Word Count
Word Count– 문서집합에포함된단어의개수를집계
2017-01-11 109
예제: Word Count
맵리듀스입력파일저장– $ hdfs dfs -mkdir /input– $ hdfs dfs -put hadoop/LICENSE.txt /input– $ hdfs dfs -ls /input
2017-01-11 110
예제: Word Count
Word Count 실행– $ hadoop jar hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.5.jar wordcount /input
/output
2017-01-11 111
예제: Word Count
Word Count 결과확인– $ hdfs dfs -ls /output– $ hdfs dfs -tail /output/part-r-00000
2017-01-11 112
Word Count 구현
Mapper
2017-01-11 113
Word Count 구현
Reducer
2017-01-11 114
Word Count 구현
main 메서드
2017-01-11 115
Word Count 구현
소스코드를 저장할디렉터리생성$ mkdir ~/wordcount$ cd ~/wordcount
소스코드구현
컴파일– mkdir classes– javac -classpath /home/hadoop/hadoop/share/hadoop/common/hadoop-common-
2.6.5.jar:/home/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.5.jar:/home/hadoop/hadoop/share/hadoop/common/lib/commons-cli-1.2.jar -d classes/ WordCount.java
– jar cvf WordCount.jar classes/*
실행– hadoop jar ./WordCount.jar WordCount /input /output2
2017-01-11 116
Resource Manager Web UI
http://192.168.56.100:8088/
2017-01-11 117
부록
SSH 접속이오래걸리는문제– vi /etc/ssh/sshd_config– UseDNS no– service sshd restart
yum에서 ErrNo 12 문제– yum clean all– yum update
File /input/LICENSE.txt._COPYING_ could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and 2 node(s) are excluded in this operation.– sudo service firewalld stop
2017-01-11 118