Apache Hadoop Study 손시운 2017. 01. 11. Department of Computer Science, Kangwon National University
빅데이터 빅데이터란? 기존의시스템에서는관리하기어려운복잡한형태의대용량데이터 또는이러한데이터를처리하기위한기술 빅데이터의정의 : 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 사용 640 2017-01-11 4
기존대용량파일시스템 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 의의사코드 단어 개수 as 2 do 2 i 2 not 1 say 1 2014-01-03 11
맵리듀스개요 (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) 맵리듀스구성요소 입력 출력 map <k1, v1> list(<k2, v2>) reduce <k2, list(v2)> list(<k3, v3>) 입력은반드시 ( 키, 값 ) 으로구성 각데이터를 mapper에있는 map함수를호출해처리 mapper는 <k2, v2> 형태의리스트로변환 키값 (k2) 가같은경우, 새로운 <k2, list(v2)> 의형태로재구성 reducer에의해 <k3, v3> 의형태로로재구성 MapReduce 프레임워크는자동으로모든결과값을모아파일에기록 2014-01-03 15
맵리듀스개요 (6/6) 맵리듀스를이용해프로그램확장 Word Count Word Count 를위한 map 과 reduce 함수의의사코드 2014-01-03 16
YARN 출처 : 최범균, 하둡 2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014. 하둡 1 MR 시스템의몇가지단점 클러스터의자원배분과 Job 관리를함께수행. 클러스터에서병목지점이됨. 한노드에서실행할수있는 Map 과 Reduce 용태스크개수가제한됨. 즉, 노드에여유자원이있어도그자원을활용하지못하는상황이발생. MR 만실행가능. 2017-01-11 17
YARN 출처 : 최범균, 하둡 2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014. YARN: Yet Another Resource Negotiator 주요특징 MR1 시스템의잡트래커가하던두가지역할 ( 자원관리, Job 상태관리 ) 를 ResourceManager 와 ApplicationMaster 로분리 기존잡트래커에몰리던병목을제거 범용컴퓨팅클러스터 맵리듀스외에다양한어플리케이션을실행할수있으며, 어플리케이션마다자원 (CPU, 메모리 ) 을할당받음 2017-01-11 18
YARN 출처 : 최범균, 하둡 2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014. YARN 의구조 어플리케이션마다자원을할당하고, App Master 를관리한다. 클러스터에 1 개 노드의컨테이너를관리하고자원상태를 RM 에통지. 노드당 1 개 어플리케이션의실행을관리하고, 상태를 RM 에통지어플리케이션당 1 개 어플리케이션을실행. 제한된자원을가지고, 상태를 AM 에통지 2017-01-11 19
YARN 출처 : 최범균, 하둡 2 YARN 짧게보기, http://www.slideshare.net/madvirus/2-yarn, 2014. 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
하둡클러스터설정 독립실행 (Standalone) 모드 사용자의 H/W 정보없이최소한의환경설정만요구 로컬머신에서만실행 가상분산 (Pseudo-distributed) 모드 클러스터가한대로구성되어모든데몬이실행 코드디버깅시독립실행모드에서의기능을보완 완전분산 (Fully-distributed) 모드 분산저장및연산이가능한모든기능이갖추어진클러스터를구성 2017-01-11 21
준비물 MS Windows 7 이상 Oracle VirtualBox 5 이상 https://www.virtualbox.org/wiki/downloads 미리설치할것 네임노드보조네임노드 VM (CentOS) 데이터노드 01 데이터노드 02 VM (CentOS) VM (CentOS) CentOS 7 x86_64 DVD 이미지파일 https://www.centos.org/download/ DVD ISO VirtualBox 호스트서버 (Windows) 2017-01-11 22
가상머신설치 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 <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> 2017-01-11 94
하둡환경설정 hadoop-env.sh $ vi hadoop-env.sh # 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/" 2017-01-11 95
하둡환경설정 hdfs-site.xml $ vi hdfs-site.xml <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> 2017-01-11 96
하둡환경설정 mapred-site.xml $ cp mapred-site.xml.template mapred-site.xml $ vi mapred-site.xml <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> 2017-01-11 97
하둡환경설정 slaves $ vi slaves SN01 SN02 2017-01-11 98
하둡환경설정 yarn-site.xml $ vi yarn-site.xml <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> 2017-01-11 99
하둡배포 모든데이터노드에게네임노드에서환경설정한하둡을배포 $ 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 export HADOOP_HOME=/home/hadoop/hadoop export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin $ source ~/.bashrc 2017-01-11 101
하둡실행 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 명령어 http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/filesystemshell.html 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
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