Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
hadoop 2 & Hive 
스터디 환경 구축 
with VirtualBox 
어디에도 이보다 친절한 자료는 없다! 
IT가맹점개발팀 
이태영 
2014.10.29
출처 : http://hortonworks.com/hadoop/yarn/ 
YARN의 가장 큰 특징 
Resource Manager의 분리
YARN 
Yet Another Resource Negotiator 
특징 
•JobTracker의 두 가지 역할 분리 
①Resource 관리 
②Job 상태 관리 
기존 JobTracker의 병목을 제거 
•범...
출처 : http://hortonworks.com/hadoop/yarn/
Master Node 하둡 클러스터의 Resource와 Job 관리를 함께 수행. 병목이 발생하는 지점 
Data Node 
한 노드에서 실행할 수 있는 
Map과 Reduce Task의 개수 제한. 
M/R만 처리 
...
출처 : http://hadoop.apache.org/docs/current/hadoop- yarn/hadoop-yarn-site/YARN.html 
Resource Manager 
클라이언트가 요청한 어플리케이션마다 ...
출처 : http://hadoop.apache.org/docs/current/hadoop- yarn/hadoop-yarn-site/YARN.html 
1.클라이언트가 RM에게 어플리케이션 제출 
2.NM을 통해 AM 실...
Hadoop 2.4 설치 
1.설치순서 (Windows 64bit에서만 가능) 
①CentOS 6.5 설치 
②Java 8 설치 
③구글 크롬 설치 
④리눅스 클러스터 구축 
⑤Hadoop 2.5 설치 
⑥Hive 설치...
CentOS 6.5 설치 
Master 
Slave 
Slave 
Slave 
<설치구성 목표> 
서버명 
big01 
IP 
192.168.65.101 
서버명 
big02 
IP 
192.168.65.102 
서버명...
CentOS 6.5 설치 
1. VirtualBox를 설치한다. 2. 새로 만들기(N) 버튼을 누르고 리눅스용 VM을 하나 만든다. (이름은 big01)
CentOS 6.5 설치 
1. Basic Server를 선택 2. 소프트웨어 추가를 위해 [지금 선택]을 하여 다음 버튼
CentOS 6.5 설치 
1. Basic Server를 선택 
2. 소프트웨어 추가를 위해 [지금 선택]을 하여 다음 버튼 
1. 데스크탑을 선택하여 KDE를 제외한 모든 옵션 선택
CentOS 6.5 설치 
사용자 추가 
아이디 
hadoop 
암호 
hadoop
CentOS 6.5 설치 
[NTP 서버] 아무거나 선택 후 다음
CentOS 6.5 설치 
리눅스 OS 설치는 성공
CentOS 설치가 완료된 후 게스트 확장 설치를 해준다. 
CentOS 6.5 설치
CentOS 6.5 설치
아래처럼 Building the main Guest Additions module 에러(실패)가 발생하면 
$ yum install gcc dkms make kernel-devel $ yum install kernel ...
CentOS 6.5 설치 
게스트모드 설치가 정상적으로 완료되면, 
1. 창 크기 맞게 해상도가 자유자재 설정 
2. 윈도우 OS에서 마우스로 파일 드래그&드롭 복사 
3. 윈도우 OS와 가상 VM간 클립보드 공유 가능...
CentOS 6.5 설치 
메뉴에서 클립보드 공유, Drag'n Drop을 모두 양방향으로 변경 
이제 윈도우즈와 VM간 파일을 드래그앤드롭으로 복사할 수 있고 
윈도우즈와 VM간 Ctrl+C, Ctrl+V도 자유롭게 ...
CentOS 6.5 설치 
터미널에서 setup 명령어로 진입하여 방화벽 설정의 활성화 해제
Google Chrome 설치 
1. YUM repository 설정 
[google-chrome] 
name=google-chrome 
baseurl=http://dl.google.com/linux/chrome/rpm...
Google Chrome 설치 
root 권한 필요 
# google-chrome & 
4. 구글 크롬 실행 
실행이 안되면, 이전 스크립트 명령어 재실행 
# ./install_chrome.sh 
정상적으로 완료되면,...
자바8 설치 
1. CentOS가 설치한 자바7 삭제 
# yum remove java 후 [Y/N] y 입력 
2. 자바 8 다운로드 
http://java.sun.com 접속 후 다운로드
자바8 설치 
3. 자바 8 설치 
[hadoop@big01 ~]$ cd 다운로드/ 
[hadoop@big01 다운로드]$ mv jdk-8u25-linux-x64.tar.gz ~/ 
[hadoop@big01 다운로드]$...
자바8 설치 
4. 자바 8 환경설정 
[hadoop@big01 ~]$ vi .bash_profile 
1) JAVA_HOME 설정 및 PATH 추가 
[hadoop@big01 ~]$ . .bash_profile 
2)...
리눅스 클러스터링 
설치 완료 
big02 
big03 
big04 
Master 
Slave 
Slave 
Slave 
<설치 목표> 
big01 
남은 것 
남은 것 
남은 것 
big01 설치 완료 
남은 3대는 ...
big02, big03, big04 차례로 
그.냥.복.사 
리눅스 클러스터링
어댑터2 추가 - 호스트 전용 어댑터 선택 
MAC주소를 랜덤 재할당 
big02, big03, big04 동일하게 
리눅스 클러스터링
1 
2 
3 
IP주소 영역 확인 
리눅스 클러스터링
4대 서버들을 선택(SHIFT+마우스 클릭) 
서버 시작(T) 
리눅스 클러스터링
리눅스 클러스터링 
1) DNS 변경 
(big01을 복제하였으니) big02, big03, big04 가상노드들을 
선택하여 자신의 서버명으로 변경해준다. 
setup 명령어 - 네트워크 설정 - DNS 설정 
1 
...
리눅스 클러스터링 
2) NIC 네트워크 설정 
[hadoop@big01 바탕화면]$ ifconfig 
eth0 Link encap:Ethernet HWaddr 08:00:27:CC:F1:DB 
inet6 addr: f...
리눅스 클러스터링 
2) NIC 네트워크 설정 
eth1 없다 
-rw-r--r--. 1 root root 136 2014-10-30 21:43 ifcfg-eth0 
-rw-r--r--. 1 root root 254 2...
리눅스 클러스터링 
아래처럼 ifconfig를 참고하여 NIC 설정파일들을 만든다. 
big02, big03, big04 노드들의 IP는 다음장을 참고
Master 
Slave 
Slave 
Slave 
서버명 
big01 
IP 
192.168.65.101 
서버명 
big02 
IP 
192.168.65.102 
서버명 
big03 
IP 
192.168.65.10...
리눅스 클러스터링 
TIP) 아예 NIC 디바이스명과 맥어드레스를 변경하려면? 
$ vi /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x100e (e1...
리눅스 클러스터링 
TIP) network restar시 RTNETLINK answers: File exists 에러 
[root@big01 바탕화면]# service network restart 
인터페이스 eth0 ...
리눅스 클러스터링 
3) host 설정 
# vi /etc/hosts 192.168.56.101 big01 192.168.56.102 big02 192.168.56.103 big03 192.168.56.104 big04...
리눅스 클러스터링 
5) ssh 키 배포 
[hadoop@big01 바탕화면]$ ssh big02 hadoop@big02's password: 
연결할 때마다 비밀번호를 입력해야 하므로 hadoop 계정의 ssh 키를 ...
리눅스 클러스터링 
5) ssh 키 배포 
[hadoop@big01 ~]$ cd .ssh/ 
[hadoop@big01 .ssh]$ scp id_rsa.pub /home/hadoop/.ssh/authorized_keys ...
Hadoop 2.5 설치 
1) 하둡 2.5 다운로드 http://hadoop.apache.org 접속 후 다운로드 2) 계정 홈 디렉토리로 mv $ mv hadoop-2.5.1.tar.gz ~ 3) 압축을 풀고 had...
Hadoop 2.5 설치 
$HADOOP_HOME/etc/hadoop 디렉토리 
파일명 
설명 
hadoop-env.sh 
Hadoop을 실행하는 쉘스크립트 파일 
JDK Path, Classpath, 데몬 옵션 등 설...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
hadoop-env.sh 
Hadoop을 실행하는 쉘스크립트 파일이다. 
JDK Path, Classpath, 데몬 옵션 등 설정 
export J...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
yarn-env.sh 
YARN을 실행하는 쉘스크립트 파일 
export JAVA_HOME=/home/hadoop/java 
export HADOO...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
slaves 
Data node들의 서버 지정 
파일에 slave 노드들 작성/저장 
Master 
Slave 
Slave 
Slave 
big02...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
core-site.xml 
HDFS와 MapReduce에서 공통적으로 사용할 정보들을 설정. 
hdfs-site와 mapred-site의 공통 설정...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
hdfs-site.xml 
하둡 파일시스템(HDFS)과 관련된 환경 정보를 설정 
<configuration> 
<property> 
<name>d...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
mapred-site.xml 
MapReduce의 어플리케이션 정보를 설정 
<configuration> <property> <name>mapred...
Hadoop 2.5 설치 
2. 하둡 2.5 환경설정 
파일명 
설명 
yarn-site.xml 
Resource Manager, Node Manager 정보를 설정 
<configuration> 
<property> ...
Hadoop 2.5 설치 
3. 하둡 2.5 배포 
[hadoop@big01 ~]$ cd 
[hadoop@big01 ~]$ scp -r hadoop-2.5.1 hadoop@big02:~ 
[hadoop@big01 ~]$...
Hadoop 2.5 설치 
4. 하둡 2.5 실행 
[hadoop@big01 ~]$ hadoop namenode -format 
14/10/31 21:05:45 INFO namenode.NNStorageRetention...
Hadoop 2.5 설치 
Master 
Slave 
Slave 
Slave 
big02 
big03 
big04 
big01 
4. 하둡 2.5 실행 
3) 하둡 실행 확인 
[hadoop@big01 ~]$ jps 명...
Hadoop 2.5 설치 
5. 하둡 2.5 실행 확인 
a) HDFS 확인 - http://big01:50070
Hadoop 2.5 설치 
5. 하둡 2.5 실행 확인 
b) Resource & Node Manager 확인 - http://big01:8088
Hadoop 개발 
1. 이클립스 설치 1) http://eclipse.org 에서 이클립스 다운로드 
2) 압축 풀고, 바탕화면에 링크 만들기
Hadoop 개발 
1. 자바 프로젝트 생성 
1. 프로젝트명 생성 BCHadoop 2. package 추가 word 3. 클래스 추가 WordCount
Hadoop 개발 
<?xml version="1.0" encoding="UTF-8"?> 
<project name="bc-hadoop-study" default="build"> 
<property name="major...
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
프로젝트 마우스 오른쪽 버튼 - Build Path - Configure Build Path 선택
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
Library에서 Add External Jars 선택
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
하둡 디렉토리 내에 share/hadoop 이동하면 라이브러리 묶음 존재
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
common 디렉토리 이동 후 아래 jar 파일을 선택/확인
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
hdfs 디렉토리 이동 후 전체 jar 파일을 선택/확인
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
mapreduce 디렉토리 이동 후 전체 jar 파일을 선택/확인
Hadoop 개발 
3. Hadoop 2.5 라이브러리 Build Path 추가 
tools/lib 디렉토리로 이동 후 전체 jar 파일 선택 /확인
Hadoop 개발 
4. WordCount 클래스 코딩 
public class WordCount { public static class WordCountMapper extends Mapper<Object, Text, ...
Hadoop 개발 
4. WordCount 프로젝트 빌드 
build.xml 파일을 선택, 마우스 오른쪽 버튼을 눌러 Ant Build 실행
Hadoop 개발 
4. WordCount 프로젝트 빌드 
BUILD SUCCESSFUL 나오면 당연히 빌드 성공 
이 위치에 bc-hadoop.jar 파일이 생성되었다!
Hadoop 개발 
4. WordCount 프로젝트 빌드 
[실행명령어] hadoop jar <빌드 jar 파일> <실행 Driver 클래스> <입력파일> <출력파일> 
[hadoop@big01 hadoop-2.5.0-...
Hive 설치 
1) Hive 0.13 다운로드 http://hive.apache.org 접속 후 다운로드 2) 계정 홈 디렉토리로 mv $ mv apache-hive-0.13.1-bin.tar.gz ~ 3) 압축을 풀...
Hive 아키텍처 
Meta 
Store 
Hadoop MapReduce 
Hadoop DFS 
CLI 
JDBC 
Driver 
SQL Parser 
Query Optimizer 
Physical Plan 
Execu...
Hive 특징 
1) Hive에서 사용되는 데이터는 읽기 전용 
•UPDATE와 DELETE는 사용 불가 
•INSERT는 빈 테이블에 입력, 혹은 기존 데이터를 덮어쓰는 경우만 가능 
•INSERT OVEWRITE 사...
Hive 고유한 SQL문 
1. 데이터를 업로드 하는 방법 LOAD DATA INPATH '위치' OVERWRITE INTO TABLE 테이블 PARTITION( 변수 = ' 값 ' ); 
2. External 테이블 ...
MySQL 설치 
1. MySQL 설치 
# yum install mysql-server 
2. MySQL 실행 
# service mysqld start 
PLEASE REMEMBER TO SET A PASSWORD ...
MySQL 설치 
3. root 비밀번호 변경 # mysqladmin -u root hadoop 
[root@big01 hadoop]# mysqladmin -u root password hadoop [root@big01...
MySQL-Hive 연동 
1. MySQL Connector 설치 
# yum install mysql-connector-java 
2. MySQL Connector .jar 파일 복사 
# cp /usr/share/j...
MySQL-Hive 연동 
5. hive-site.xml 설정 # yum install mysql-connector-java 
<configuration> 
<property> 
<name>javax.jdo.option...
MySQL-Hive 연동 
6. hive 서버 서비스 실행 
[hadoop@big01 hive]$ hive --service hiveserver & Starting Hive Thrift Server [hadoop@big...
Hive 예제 
1. Hive WordCount 예제 
hive> create external table alice( line string ); hive> load data inpath 'alice.txt' overwr...
끝.
Prochain SlideShare
Chargement dans…5
×

20141029 하둡2.5와 hive설치 및 예제

30 432 vues

Publié le

Hadoop 2.5 & Hive install

Publié dans : Données & analyses
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes.........ACCESS WEBSITE Over for All Ebooks ..... (Unlimited) ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • ACCESS that WEBSITE Over for All Ebooks (Unlimited) ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... DOWNLOAD FULL EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M }
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici

20141029 하둡2.5와 hive설치 및 예제

  1. 1. hadoop 2 & Hive 스터디 환경 구축 with VirtualBox 어디에도 이보다 친절한 자료는 없다! IT가맹점개발팀 이태영 2014.10.29
  2. 2. 출처 : http://hortonworks.com/hadoop/yarn/ YARN의 가장 큰 특징 Resource Manager의 분리
  3. 3. YARN Yet Another Resource Negotiator 특징 •JobTracker의 두 가지 역할 분리 ①Resource 관리 ②Job 상태 관리 기존 JobTracker의 병목을 제거 •범용 클러스터 API MR 외에 다양한 어플리케이션을 실행할 수 있으며, 어플리케이션 마다 자원(CPU, 메모리)를 할당
  4. 4. 출처 : http://hortonworks.com/hadoop/yarn/
  5. 5. Master Node 하둡 클러스터의 Resource와 Job 관리를 함께 수행. 병목이 발생하는 지점 Data Node 한 노드에서 실행할 수 있는 Map과 Reduce Task의 개수 제한. M/R만 처리 Hadoop 1.x 출처 : http://hadoop.apache.org/docs/current/hadoop- yarn/hadoop-yarn-site/YARN.html
  6. 6. 출처 : http://hadoop.apache.org/docs/current/hadoop- yarn/hadoop-yarn-site/YARN.html Resource Manager 클라이언트가 요청한 어플리케이션마다 자원을 관리 하둡 클러스터 내 1개 Node Manager 각 슬레이브 노드 마다 1개. 컨테이너와 자원의 상태를 RM에게 통지 Hadoop 2.x Application Master 어플리케이션의 실행을 관리하고 상태를 RM에게 통지 어플리케이션마다 1개. Container 어플리케이션을 수행하는 역할 제한된 자원을 소유하며, 상태를 AM에게 통지
  7. 7. 출처 : http://hadoop.apache.org/docs/current/hadoop- yarn/hadoop-yarn-site/YARN.html 1.클라이언트가 RM에게 어플리케이션 제출 2.NM을 통해 AM 실행 3.AM은 RM에게 자신을 등록 4.AM은 RM에게 컨테이너 할당할 공간/위치를 받음 5.AM은 NM에게 컨테이너를 실행 요청 (어플리케이션 정보를 NM에게 제공) 6.컨테이너는 어플리케이션의 상태정보를 AM에 알림 7.클라이언트는 어플리케이션의 실행정보를 얻기 위해 AM와 직접 통신 8.어플리케이션 종료되면 AM은 RM에게서 자신의 자원을 해제하고 종료 Hadoop 2.x
  8. 8. Hadoop 2.4 설치 1.설치순서 (Windows 64bit에서만 가능) ①CentOS 6.5 설치 ②Java 8 설치 ③구글 크롬 설치 ④리눅스 클러스터 구축 ⑤Hadoop 2.5 설치 ⑥Hive 설치 ⑦예제
  9. 9. CentOS 6.5 설치 Master Slave Slave Slave <설치구성 목표> 서버명 big01 IP 192.168.65.101 서버명 big02 IP 192.168.65.102 서버명 big03 IP 192.168.65.103 서버명 big04 IP 192.168.65.104
  10. 10. CentOS 6.5 설치 1. VirtualBox를 설치한다. 2. 새로 만들기(N) 버튼을 누르고 리눅스용 VM을 하나 만든다. (이름은 big01)
  11. 11. CentOS 6.5 설치 1. Basic Server를 선택 2. 소프트웨어 추가를 위해 [지금 선택]을 하여 다음 버튼
  12. 12. CentOS 6.5 설치 1. Basic Server를 선택 2. 소프트웨어 추가를 위해 [지금 선택]을 하여 다음 버튼 1. 데스크탑을 선택하여 KDE를 제외한 모든 옵션 선택
  13. 13. CentOS 6.5 설치 사용자 추가 아이디 hadoop 암호 hadoop
  14. 14. CentOS 6.5 설치 [NTP 서버] 아무거나 선택 후 다음
  15. 15. CentOS 6.5 설치 리눅스 OS 설치는 성공
  16. 16. CentOS 설치가 완료된 후 게스트 확장 설치를 해준다. CentOS 6.5 설치
  17. 17. CentOS 6.5 설치
  18. 18. 아래처럼 Building the main Guest Additions module 에러(실패)가 발생하면 $ yum install gcc dkms make kernel-devel $ yum install kernel sources $ yum install kernel-headers $ yum groupinstall "Development Tools" root 권한으로 아래 명령어로 관련 pkg 설치 후, 리부팅&게스트 모드 재설치 CentOS 6.5 설치
  19. 19. CentOS 6.5 설치 게스트모드 설치가 정상적으로 완료되면, 1. 창 크기 맞게 해상도가 자유자재 설정 2. 윈도우 OS에서 마우스로 파일 드래그&드롭 복사 3. 윈도우 OS와 가상 VM간 클립보드 공유 가능 (Ctrl+C, Ctrl+V)
  20. 20. CentOS 6.5 설치 메뉴에서 클립보드 공유, Drag'n Drop을 모두 양방향으로 변경 이제 윈도우즈와 VM간 파일을 드래그앤드롭으로 복사할 수 있고 윈도우즈와 VM간 Ctrl+C, Ctrl+V도 자유롭게 사용 가능.
  21. 21. CentOS 6.5 설치 터미널에서 setup 명령어로 진입하여 방화벽 설정의 활성화 해제
  22. 22. Google Chrome 설치 1. YUM repository 설정 [google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64 enabled=1 gpgcheck=1 # vi /etc/yum.repos.d/google-chrome.repo root 권한 필요 # yum install google-chrome-stable 2. YUM 설치 # wget http://chrome.richardlloyd.org.uk/install_chrome.sh # chmod u+x install_chrome.sh # ./install_chrome.sh 3. 구글 크롬 스크립트 다운로드 및 실행
  23. 23. Google Chrome 설치 root 권한 필요 # google-chrome & 4. 구글 크롬 실행 실행이 안되면, 이전 스크립트 명령어 재실행 # ./install_chrome.sh 정상적으로 완료되면, 시스템 메뉴 오른쪽 - 브라우저 버튼을 클릭하면 크롬이 실행
  24. 24. 자바8 설치 1. CentOS가 설치한 자바7 삭제 # yum remove java 후 [Y/N] y 입력 2. 자바 8 다운로드 http://java.sun.com 접속 후 다운로드
  25. 25. 자바8 설치 3. 자바 8 설치 [hadoop@big01 ~]$ cd 다운로드/ [hadoop@big01 다운로드]$ mv jdk-8u25-linux-x64.tar.gz ~/ [hadoop@big01 다운로드]$ cd - /home/hadoop [hadoop@big01 ~]$ tar zxvf jdk-8u25-linux-x64.tar.gz [hadoop@big01 ~]$ ln -s jdk1.8.0_25 java 모든 오픈소스 Binary들은 링크를 걸어주는게 관리측면에서 편하다.
  26. 26. 자바8 설치 4. 자바 8 환경설정 [hadoop@big01 ~]$ vi .bash_profile 1) JAVA_HOME 설정 및 PATH 추가 [hadoop@big01 ~]$ . .bash_profile 2) 프로파일 실행 [hadoop@big01 ~]$ java -version java version "1.8.0_25" Java(TM) SE Runtime Environment (build 1.8.0_25-b17) Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 3) 자바 버전 확인
  27. 27. 리눅스 클러스터링 설치 완료 big02 big03 big04 Master Slave Slave Slave <설치 목표> big01 남은 것 남은 것 남은 것 big01 설치 완료 남은 3대는 어떡해?
  28. 28. big02, big03, big04 차례로 그.냥.복.사 리눅스 클러스터링
  29. 29. 어댑터2 추가 - 호스트 전용 어댑터 선택 MAC주소를 랜덤 재할당 big02, big03, big04 동일하게 리눅스 클러스터링
  30. 30. 1 2 3 IP주소 영역 확인 리눅스 클러스터링
  31. 31. 4대 서버들을 선택(SHIFT+마우스 클릭) 서버 시작(T) 리눅스 클러스터링
  32. 32. 리눅스 클러스터링 1) DNS 변경 (big01을 복제하였으니) big02, big03, big04 가상노드들을 선택하여 자신의 서버명으로 변경해준다. setup 명령어 - 네트워크 설정 - DNS 설정 1 2 로그아웃 후 big02로 변경 확인
  33. 33. 리눅스 클러스터링 2) NIC 네트워크 설정 [hadoop@big01 바탕화면]$ ifconfig eth0 Link encap:Ethernet HWaddr 08:00:27:CC:F1:DB inet6 addr: fe80::a00:27ff:fecc:f1db/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 eth1 Link encap:Ethernet HWaddr 08:00:27:47:36:C0 inet addr:192.168.56.101 Bcast:192.168.56.255 Mask:255.255.255.0 inet6 addr: fe80::a00:27ff:fe47:36c0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 lo Link encap:Local Loopback .... NAT Host-Only (노드들간 통신용) 맥 어드레스 맥 어드레스 /etc/sysconfig/network-scripts 디렉토리 내부에 ifcfg-* 파일명으로 NIC 설정파일들이 존재 한다. 예) eth0 장치의 경우 ifcfg-eth0 (없으면 다른 파일을 복사해서 만들어주고 수정)
  34. 34. 리눅스 클러스터링 2) NIC 네트워크 설정 eth1 없다 -rw-r--r--. 1 root root 136 2014-10-30 21:43 ifcfg-eth0 -rw-r--r--. 1 root root 254 2013-10-10 23:48 ifcfg-lo [root@big01 network-scripts]# cp ifcfg-eth0 ifcfg-eth1 [root@big01 network-scripts]# vi ifcfg-eth1 DEVICE=eth0 HWADDR=08:00:27:CC:F1:DB TYPE=Ethernet UUID=c06f2b6b-efc3-4415-af28-7c51869efc8f ONBOOT=no NM_CONTROLLED=yes BOOTPROTO=dhcp DEVICE=eth1 HWADDR=08:00:27:47:36:C0 TYPE=Ethernet IPADDR=192.168.56.111 NETWORK=192.168.56.0 GATEWAY=192.168.56.1 NETMASK=255.255.255.0 ONBOOT=yes NM_CONTROLLED=yes BOOTPROTO=no eth1 생성&편집 ifcfg-eth1 수정 전 [root@big01 network-scripts]# /etc/init.d/network restart 인터페이스 eth0 (을)를 종료 중: [ OK ] 인터페이스 eth1 (을)를 종료 중: 장치 상태: 3 (연결 끊겼음) [ OK ] loopback 인터페이스 종료 중: [ OK ] loopback 인터페이스 활성화중 입니다: [ OK ] eth1 인터페이스 활성화중 입니다: [ OK ] ifcfg-eth1 수정 후
  35. 35. 리눅스 클러스터링 아래처럼 ifconfig를 참고하여 NIC 설정파일들을 만든다. big02, big03, big04 노드들의 IP는 다음장을 참고
  36. 36. Master Slave Slave Slave 서버명 big01 IP 192.168.65.101 서버명 big02 IP 192.168.65.102 서버명 big03 IP 192.168.65.103 서버명 big04 IP 192.168.65.104 리눅스 클러스터링
  37. 37. 리눅스 클러스터링 TIP) 아예 NIC 디바이스명과 맥어드레스를 변경하려면? $ vi /etc/udev/rules.d/70-persistent-net.rules # PCI device 0x8086:0x100e (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:1C:6B:E7", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0" # PCI device 0x8086:0x100e (e1000) SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="08:00:27:94:D0:C1", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1" /etc/sysconfig/network-scripts 아래 해당 NIC 스크립트 생성&설정 •/etc/sysconfig/network-scripts/ifcfg-eth0 •/etc/sysconfig/network-scripts/ifcfg-eth1 $ reboot
  38. 38. 리눅스 클러스터링 TIP) network restar시 RTNETLINK answers: File exists 에러 [root@big01 바탕화면]# service network restart 인터페이스 eth0 (을)를 종료 중: 장치 상태: 3 (연결 끊겼음) [ OK ] 인터페이스 eth1 (을)를 종료 중: [ OK ] loopback 인터페이스 종료 중: [ OK ] loopback 인터페이스 활성화중 입니다: [ OK ] eth0 인터페이스 활성화중 입니다: 활성화된 연결 상태: 활성화중 활성화된 연결 경로: /org/freedesktop/NetworkManager/ActiveConnection/5 상태: 활성화됨 연결이 활성화되었습니다 [ OK ] eth1 인터페이스 활성화중 입니다: RTNETLINK answers: File exists [ OK ] 해당 ifcfg-* 파일에 NOZEROCONF=yes 추가 후 restart
  39. 39. 리눅스 클러스터링 3) host 설정 # vi /etc/hosts 192.168.56.101 big01 192.168.56.102 big02 192.168.56.103 big03 192.168.56.104 big04 big01, big02, big03, big04 모두 적용 4) ssh 연결 확인 [hadoop@big01 바탕화면]$ ssh big02 The authenticity of host 'big02 (192.168.56.102)' can't be established. RSA key fingerprint is 09:6f:be:0b:0c:ba:3c:a7:a4:19:3c:ac:84:05:5a:ff. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'big02,192.168.56.102' (RSA) to the list of known hosts. hadoop@big02's password: 첫 접속시 인증을 받으므로, big02, big03, big04 한 번씩 접속
  40. 40. 리눅스 클러스터링 5) ssh 키 배포 [hadoop@big01 바탕화면]$ ssh big02 hadoop@big02's password: 연결할 때마다 비밀번호를 입력해야 하므로 hadoop 계정의 ssh 키를 배포한다. [hadoop@big01 ~]$ ssh-keygen -t rsa 엔터, 엔터, 엔터 +--[ RSA 2048]----+ | | | | | . | | o . . . | | S E . o | | . o o . | | o O = .| | B B.+ | | ..*==. | +-----------------+ 나오면 성공
  41. 41. 리눅스 클러스터링 5) ssh 키 배포 [hadoop@big01 ~]$ cd .ssh/ [hadoop@big01 .ssh]$ scp id_rsa.pub /home/hadoop/.ssh/authorized_keys [hadoop@big01 .ssh]$ scp id_rsa.pub hadoop@big02:/home/hadoop/.ssh/authorized_keys [hadoop@big01 .ssh]$ scp id_rsa.pub hadoop@big03:/home/hadoop/.ssh/authorized_keys [hadoop@big01 .ssh]$ scp id_rsa.pub hadoop@big04:/home/hadoop/.ssh/authorized_keys 계정의 .ssh 디렉토리의 id_rsa.pub 파일을 각 노드로 authorized_keys 파일로 배포한다. [hadoop@big01 .ssh]$ ssh big02 Last login: Fri Oct 31 00:25:10 2014 from big01 [hadoop@big01 .ssh]$ ssh big03 Last login: Fri Oct 31 00:25:11 2014 from big01 [hadoop@big01 .ssh]$ ssh big04 Last login: Fri Oct 31 00:25:18 2014 from big01 이후 마스터 노드인 big01에서 각 노드별로 ssh 접속을 할 때 묻지도 따지지도 않는다. 이것으로 클러스터링 구축 끝 -
  42. 42. Hadoop 2.5 설치 1) 하둡 2.5 다운로드 http://hadoop.apache.org 접속 후 다운로드 2) 계정 홈 디렉토리로 mv $ mv hadoop-2.5.1.tar.gz ~ 3) 압축을 풀고 hadoop 심볼릭 링크를 생성 $ ln -s hadoop-2.5.1 hadoop 4) .bash_profile에 HADOOP_HOME과 PATH 설정 1. 하둡 2.5 설치 PATH에 하둡의 bin 디렉토리와 sbin 디렉토리를 추가 뿌뿌
  43. 43. Hadoop 2.5 설치 $HADOOP_HOME/etc/hadoop 디렉토리 파일명 설명 hadoop-env.sh Hadoop을 실행하는 쉘스크립트 파일 JDK Path, Classpath, 데몬 옵션 등 설정 slaves Data node들의 서버 지정 core-site.xml HDFS와 MapReduce에서 공통적으로 사용할 정보들을 설정. hdfs-site와 mapred-site의 공통 설정 부분 hdfs-site.xml 하둡 파일시스템(HDFS)과 관련된 환경 정보를 설정 mapred-site.xml MapReduce의 어플리케이션 정보를 설정 yarn-site.xml Resource Manager, Node Manager 정보를 설정 yarn-env.sh YARN을 실행하는 쉘스크립트 파일 출처 : http://hadoop.apache.org/docs/r2.5.0/hadoop-project- dist/hadoop-common/ClusterSetup.html 2. 하둡 2.5 환경설정
  44. 44. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 hadoop-env.sh Hadoop을 실행하는 쉘스크립트 파일이다. JDK Path, Classpath, 데몬 옵션 등 설정 export JAVA_HOME=/home/hadoop/java export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop 파일 최상단에 아래 정보 추가 내용 추가한 화면 복사/붙여넣기용
  45. 45. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 yarn-env.sh YARN을 실행하는 쉘스크립트 파일 export JAVA_HOME=/home/hadoop/java export HADOOP_HOME=/home/hadoop/hadoop export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export YARN_CONF_DIR=$HADOOP_HOME/etc/hadoop 파일 최상단에 아래 정보 추가
  46. 46. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 slaves Data node들의 서버 지정 파일에 slave 노드들 작성/저장 Master Slave Slave Slave big02 big03 big04 big01 big02 big03 big04
  47. 47. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 core-site.xml HDFS와 MapReduce에서 공통적으로 사용할 정보들을 설정. hdfs-site와 mapred-site의 공통 설정 부분 <configuration> <property> <name>fs.default.name</name> <value>hdfs://big01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop/tmp/</value> </property> </configuration> 저장 완료 후 /home/hadoop/hadoop/tmp 디렉토리 생성 1)아래 내용 작성 후 저장 참고 : http://hadoop.apache.org/docs/r2.5.0/hadoop-project-dist/hadoop- common/core-default.xml
  48. 48. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 hdfs-site.xml 하둡 파일시스템(HDFS)과 관련된 환경 정보를 설정 <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>big02:50090</value> </property> <property> <name>dfs.namenode.secondary.https-address</name> <value>big02:50091</value> </property> </configuration> 1)아래 내용 작성 후 저장 참고 : http://hadoop.apache.org/docs/r2.5.0/hadoop-project-dist/hadoop- hdfs/hdfs-default.xml
  49. 49. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 mapred-site.xml MapReduce의 어플리케이션 정보를 설정 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration> 1)아래 내용 작성 후 저장 참고 : http://hadoop.apache.org/docs/r2.5.0/hadoop-mapreduce- client/hadoop-mapreduce-client-core/mapred-default.xml mapred-site.xml이 없다면 mapred-site.xml.template 복사/생성
  50. 50. Hadoop 2.5 설치 2. 하둡 2.5 환경설정 파일명 설명 yarn-site.xml Resource Manager, Node Manager 정보를 설정 <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.resource-tracker.address</name> <value>big01:8025</value> </property> ...(이어서)... 참고 : http://hadoop.apache.org/docs/r2.5.0/hadoop-yarn/hadoop-yarn- common/yarn-default.xml ...(이어서)... <property> <name>yarn.resourcemanager.scheduler.address</name> <value>big01:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>big01:8040</value> </property> </configuration> 1 2
  51. 51. Hadoop 2.5 설치 3. 하둡 2.5 배포 [hadoop@big01 ~]$ cd [hadoop@big01 ~]$ scp -r hadoop-2.5.1 hadoop@big02:~ [hadoop@big01 ~]$ scp -r hadoop-2.5.1 hadoop@big03:~ [hadoop@big01 ~]$ scp -r hadoop-2.5.1 hadoop@big04:~ [hadoop@big01 ~]$ ssh hadoop@big02 "ln -s hadoop-2.5.1 hadoop" [hadoop@big01 ~]$ ssh hadoop@big03 "ln -s hadoop-2.5.1 hadoop" [hadoop@big01 ~]$ ssh hadoop@big04 "ln -s hadoop-2.5.1 hadoop" [hadoop@big01 ~]$ scp .bash_profile hadoop@big02:~ [hadoop@big01 ~]$ scp .bash_profile hadoop@big03:~ [hadoop@big01 ~]$ scp .bash_profile hadoop@big04:~ 1) 하둡 디렉토리 배포 2) 하둡 디렉토리 심볼릭 링크 처리 3) 계정 profile 배포
  52. 52. Hadoop 2.5 설치 4. 하둡 2.5 실행 [hadoop@big01 ~]$ hadoop namenode -format 14/10/31 21:05:45 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0 14/10/31 21:05:45 INFO util.ExitUtil: Exiting with status 0 14/10/31 21:05:45 INFO namenode.NameNode: SHUTDOWN_MSG: /************************************************************ SHUTDOWN_MSG: Shutting down NameNode at big01/192.168.56.101 ************************************************************/ 1) 하둡 네임노드 포멧 [hadoop@big01 ~]$ start-all.sh This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh 14/10/31 21:06:40 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable Starting namenodes on [big01] Starting secondary namenodes [0.0.0.0] 0.0.0.0: starting secondarynamenode, logging to /home/hadoop/hadoop-2.5.1/logs/hadoop-hadoop-secondarynamenode-big01.out starting yarn daemons starting resourcemanager, logging to /home/hadoop/hadoop-2.5.1/logs/yarn-hadoop-resourcemanager-big01.out big03: starting nodemanager, logging to /home/hadoop/hadoop-2.5.1/logs/yarn-hadoop-nodemanager-big03.out big02: starting nodemanager, logging to /home/hadoop/hadoop-2.5.1/logs/yarn-hadoop-nodemanager-big02.out 2) 하둡 디렉토리 실행
  53. 53. Hadoop 2.5 설치 Master Slave Slave Slave big02 big03 big04 big01 4. 하둡 2.5 실행 3) 하둡 실행 확인 [hadoop@big01 ~]$ jps 명령어 [hadoop@big01 ~]$ jps 4085 ResourceManager 3759 NameNode 31120 DataNode 30306 SecondaryNameNode 31229 NodeManager 31025 NodeManager 30920 DataNode 30979 DataNode 31083 NodeManager
  54. 54. Hadoop 2.5 설치 5. 하둡 2.5 실행 확인 a) HDFS 확인 - http://big01:50070
  55. 55. Hadoop 2.5 설치 5. 하둡 2.5 실행 확인 b) Resource & Node Manager 확인 - http://big01:8088
  56. 56. Hadoop 개발 1. 이클립스 설치 1) http://eclipse.org 에서 이클립스 다운로드 2) 압축 풀고, 바탕화면에 링크 만들기
  57. 57. Hadoop 개발 1. 자바 프로젝트 생성 1. 프로젝트명 생성 BCHadoop 2. package 추가 word 3. 클래스 추가 WordCount
  58. 58. Hadoop 개발 <?xml version="1.0" encoding="UTF-8"?> <project name="bc-hadoop-study" default="build"> <property name="major-version" value="1" /> <property name="minor-version" value="0" /> <property name="build-number" value="0" /> <property name="version" value="${major-version}.${minor-version}.${build-number}" /> <property name="company-name" value="bc" /> <property name="project-name" value="hadoop" /> <property name="general-lib" value="${company-name}-${project-name}.jar" /> <property name="general-src" value="${company-name}-${project-name}-src.zip" /> <property name="build-Path" location="." /> <property name="src.dir.src" location="${build-Path}/src" /> <property name="src.dir.bin" location="${build-Path}/bin" /> <property name="src.dir.build" location="${build-Path}/build" /> <target name="build" depends="build-lib, build-src" /> <target name="Clean-all" depends="clean-lib, clean-src" /> <target name="clean-lib"> <delete file="${src.dir.bild}/${general-lib}" /> </target> <target name="clean-src"> <delete file="${src.dir.bild}/${general-src}" /> </target> <target name="build-lib" depends="clean-lib"> <jar destfile="${src.dir.build}/${general-lib}" basedir="${src.dir.bin}"> <manifest> <attribute name="${project-name}-Version" value="${version}" /> </manifest> </jar> </target> <target name="build-src" depends="clean-src"> <zip zipfile="${src.dir.build}/${general-src}" basedir="${src.dir.src}"> </zip> </target> </project> 2. ant 빌드파일 추가 build.xml 파일 추가 오른쪽 내용 붙여넣기
  59. 59. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 프로젝트 마우스 오른쪽 버튼 - Build Path - Configure Build Path 선택
  60. 60. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 Library에서 Add External Jars 선택
  61. 61. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 하둡 디렉토리 내에 share/hadoop 이동하면 라이브러리 묶음 존재
  62. 62. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 common 디렉토리 이동 후 아래 jar 파일을 선택/확인
  63. 63. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 hdfs 디렉토리 이동 후 전체 jar 파일을 선택/확인
  64. 64. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 mapreduce 디렉토리 이동 후 전체 jar 파일을 선택/확인
  65. 65. Hadoop 개발 3. Hadoop 2.5 라이브러리 Build Path 추가 tools/lib 디렉토리로 이동 후 전체 jar 파일 선택 /확인
  66. 66. Hadoop 개발 4. WordCount 클래스 코딩 public class WordCount { public static class WordCountMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(Object key, Text value, Context context ) throws IOException, InterruptedException { StringTokenizer itr = new StringTokenizer(value.toString()); while (itr.hasMoreTokens()) { word.set(itr.nextToken()); context.write(word, one); } } } public static class WordCountReducer extends Reducer<Text,IntWritable,Text,IntWritable> { private IntWritable result = new IntWritable(); public void reduce(Text key, Iterable<IntWritable> values, Context context ) throws IOException, InterruptedException { int sum = 0; for (IntWritable val : values) { sum += val.get(); } result.set(sum); context.write(key, result); } } ...(이어서)... ...(이어서)... public static void main(String[] args) throws Exception { Configuration conf = new Configuration(); Job job = Job.getInstance(conf, "word count"); job.setJarByClass(WordCount.class); job.setMapperClass(WordCountMapper.class); job.setCombinerClass(WordCountReducer.class); job.setReducerClass(WordCountReducer.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(IntWritable.class); FileInputFormat.addInputPath(job, new Path(args[0])); FileOutputFormat.setOutputPath(job, new Path(args[1])); System.exit(job.waitForCompletion(true) ? 0 : 1); } } 1 2
  67. 67. Hadoop 개발 4. WordCount 프로젝트 빌드 build.xml 파일을 선택, 마우스 오른쪽 버튼을 눌러 Ant Build 실행
  68. 68. Hadoop 개발 4. WordCount 프로젝트 빌드 BUILD SUCCESSFUL 나오면 당연히 빌드 성공 이 위치에 bc-hadoop.jar 파일이 생성되었다!
  69. 69. Hadoop 개발 4. WordCount 프로젝트 빌드 [실행명령어] hadoop jar <빌드 jar 파일> <실행 Driver 클래스> <입력파일> <출력파일> [hadoop@big01 hadoop-2.5.0-src]# hadoop jar /home/hadoop/workspace/BCHadoop/build/bc-hadoop.jar word.WordCount /user/hadoop/alice.txt result.txt 14/11/01 00:03:55 INFO client.RMProxy: Connecting to ResourceManager at big01/192.168.56.101:8040 14/11/01 00:03:59 WARN mapreduce.JobSubmitter: Hadoop command-line option parsing not performed. Implement the Tool interface and execute your application with ToolRunner to remedy this. 14/11/01 00:04:00 INFO input.FileInputFormat: Total input paths to process : 1 14/11/01 00:04:00 INFO mapreduce.JobSubmitter: number of splits:1 14/11/01 00:04:00 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1414758336803_0001 14/11/01 00:04:02 INFO impl.YarnClientImpl: Submitted application application_1414758336803_0001 14/11/01 00:04:02 INFO mapreduce.Job: The url to track the job: http://big01:8088/proxy/application_1414758336803_0001/ 14/11/01 00:04:02 INFO mapreduce.Job: Running job: job_1414758336803_0001 14/11/01 00:04:16 INFO mapreduce.Job: Job job_1414758336803_0001 running in uber mode : false 14/11/01 00:04:16 INFO mapreduce.Job: map 0% reduce 0% 14/11/01 00:04:27 INFO mapreduce.Job: map 100% reduce 0% [hadoop@big01 ~]$ hadoop fs -cat result.txt/part-r-00000 | head "'TIS 1 "--SAID 1 "Come 1 "Coming 1 "Defects," 1 "Edwin 1 "French, 1 "HOW 1 "He's 1
  70. 70. Hive 설치 1) Hive 0.13 다운로드 http://hive.apache.org 접속 후 다운로드 2) 계정 홈 디렉토리로 mv $ mv apache-hive-0.13.1-bin.tar.gz ~ 3) 압축을 풀고 hadoop 심볼릭 링크를 생성 $ ln -s apache-hive-0.13.1-bin hive 4) .bash_profile에 HIVE_HOME과 PATH 추가
  71. 71. Hive 아키텍처 Meta Store Hadoop MapReduce Hadoop DFS CLI JDBC Driver SQL Parser Query Optimizer Physical Plan Execution Client •Hive는 별도 환경 설정을 하지 않으면, Metastore는 derby db로 지정 •derby의 경우 파일 전체로 Lock이 되므로 다수 이용자가 동시 사용 불가 → Metastore를 RDBMS로 지정
  72. 72. Hive 특징 1) Hive에서 사용되는 데이터는 읽기 전용 •UPDATE와 DELETE는 사용 불가 •INSERT는 빈 테이블에 입력, 혹은 기존 데이터를 덮어쓰는 경우만 가능 •INSERT OVEWRITE 사용 2) Hive 서브쿼리는 FROM 절에만 사용 가능 3) 저장 프로시저 (stored procedure) 사용 불가 4) ANSI SQL만 지원하며 MySQL에 가장 유사 5) Hive의 테이블 종류 •Managed Table : Hive가 데이터의 생명 주기를 직접 제어 •External Table : Hive가 데이터의 생명 주기를 관리 안 함
  73. 73. Hive 고유한 SQL문 1. 데이터를 업로드 하는 방법 LOAD DATA INPATH '위치' OVERWRITE INTO TABLE 테이블 PARTITION( 변수 = ' 값 ' ); 2. External 테이블 생성 CREATE EXTERNAL TABLE 테이블( COLUMN STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY 'n' STORED AS TEXTFILE LOCATION 'HDFS의 파일 경로' ;
  74. 74. MySQL 설치 1. MySQL 설치 # yum install mysql-server 2. MySQL 실행 # service mysqld start PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h big01 password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/bin/mysqlbug script! [ OK ] mysqld (을)를 시작 중: [ OK ]
  75. 75. MySQL 설치 3. root 비밀번호 변경 # mysqladmin -u root hadoop [root@big01 hadoop]# mysqladmin -u root password hadoop [root@big01 hadoop]# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or g. Your MySQL connection id is 3 Server version: 5.1.73 Source distribution Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or 'h' for help. Type 'c' to clear the current input statement. mysql> exit 4. MySQL 부팅시 실행 추가 #chkconfig mysqld on [root@big01 hadoop]# chkconfig mysqld on [root@big01 hadoop]# chkconfig --list mysqld mysqld 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
  76. 76. MySQL-Hive 연동 1. MySQL Connector 설치 # yum install mysql-connector-java 2. MySQL Connector .jar 파일 복사 # cp /usr/share/java/mysql-connector-java.jar ~hadoop/hive/lib/mysql-connector-java.jar [root@big01 java]# mysql -u root -p Enter password: mysql> create database metastore; Query OK, 1 row affected (0.00 sec) mysql> use metastore; Database changed 4. Hive 유저 추가 및 권한 할당 mysql> create user 'hive'@'%' identified by 'hive'; Query OK, 0 rows affected (0.00 sec) mysql> grant all privileges on metastore.* to 'hive'@'%'; Query OK, 0 rows affected (0.00 sec) mysql> flush privileges; Query OK, 0 rows affected (0.00 sec) 귀찮으니 hive 유저의 비번도 hive, 모든 권한 할당 3. MySQL 접속 후 metastore DB 생성
  77. 77. MySQL-Hive 연동 5. hive-site.xml 설정 # yum install mysql-connector-java <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://big01/metastore?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> </property> <property> <name>hive.metastore.uris</name> <value>thrift://big01:9083</value> </property> </configuration>
  78. 78. MySQL-Hive 연동 6. hive 서버 서비스 실행 [hadoop@big01 hive]$ hive --service hiveserver & Starting Hive Thrift Server [hadoop@big01 hive]$ hive --service metastore & Starting Hive Metastore Server 7. hive 실행 [hadoop@big01 hive]$ hive Logging initialized using configuration in jar:file:/home/hadoop/apache-hive-0.13.1- bin/lib/hive-common-0.13.1.jar!/hive-log4j.properties hive> mysql> use metastore; Database changed mysql> show tables; +---------------------------+ | Tables_in_metastore | +---------------------------+ 29 rows in set (0.00 sec) mysql> 8. MySQL에서 metastore 확인 hive가 정상적으로 실행되면 metastore에는 자동적으로 테이블들이 만들어진다.
  79. 79. Hive 예제 1. Hive WordCount 예제 hive> create external table alice( line string ); hive> load data inpath 'alice.txt' overwrite into table alice; hive> create table word_hive as select word, count(1) cnt from (select explode(split(line, 's')) as word from alice) w group by word; hive> select * from word_hive limit 10; OK 1437 173 1 THE END 1 and 1 Said 1 With 1 cau 1 whole 1 (WITH ALICE'S LOVE). 1 2. 결과 확인 CTAS 쿼리 HDFS 데이터를 테이블로 로드
  80. 80. 끝.

×