지구정복
[Hadoop] 02/16 | 빅데이터 개념과 하둡, 하둡설치, 맵리듀스사용(wordcount), 하둡저장소 만들기, 복습 본문
[Hadoop] 02/16 | 빅데이터 개념과 하둡, 하둡설치, 맵리듀스사용(wordcount), 하둡저장소 만들기, 복습
nooh._.jl 2021. 2. 16. 17:52하둡 사용에 앞서 가상머신에서 새로운 리눅스 서버를 만들도록 한다.
1. 리눅스 설치(가상머신 서버이름 Hadoop으로)
2. 리눅스 업데이트(yum update)
3. jdk(yum jdk)
4. c드라이브 virtual machine폴더에서 Hadoop폴더 압축하기(나중에 복습용)
1. 빅데이터의 개념과 하둡
데이터분석 - 통계관련 - 표본집단
빅데이터 - 저장관련 - 모집단
빅데이터 데이터분석 - 저장 / 통계 관련 - 모집단
-빅데이터관련 할 수 있는 것들
1. 빅데이터 플랫폼 구축 - 저장 관련
정형 - 관계형 데이터베이스
반정형 - 몽고DB (json)
비정형 - 하둡
- 하둡 안에는 분석라이브러리도 포함되어 있다.
* 에코시스템 : 하둡에 저장되어 있는 데이터를 효율적 처리해주는 시스템
2. 빅데이터 분석시스템 구축 - 분석 관련
3. 빅데이터 운영시스템 구축 - 모니터링 관련
1.1. 빅데이터 개념과 속성
개념
순수 빅데이터 개념은 대용량의 정형, 비정형화된 데이터를 뜻한다.
더 확장하면 대량의 데이터를 효율적으로 처리, 분석하는 기술이며
빅데이터에서 의미 있는 정보를 도출하는 것을 의미한다.
속성
- 규모 : 데이터의 크기
- 다양성 : 다양한 종류의 데이터를 수용하는 속성
- 속도 : 데이터를 빠르게 처리하고 분석할 수 있는 속성
- 정확성 : 데이터에 부여할 수 있는 신뢰 수준
- 가치 : 빅데이터를 저장하려고 IT인프라 구조 시스템을 구현하는 비용
데이터 종류
정형 : 고정된 필드에 깔끔하게 정리되어 저장된 데이터 (관계형 데이터베이스, 엑셀 등)
반정형 : 고정된 필드에 저장되어 있지만 메타데이터나 스키마 등을 포함하는 데이터 (xml, html 등)
비정형 : 고정된 필드에 저장되어 있지 않은 데이터 (텍스트문서, 이미지, 동영상, 음성 데이터, 각종 로그 등)
시간이 지날수록 비정형 데이터가 기하급수적으로 증가하고 있음.
빅데이터 처리 과정
수집, 저장, 처리 과정이 가장 중요하며 오래걸린다. 저장, 처리 과정은 하둡에서 처리할 수 있고
수집은 자바나 파이썬 등의 언어로 처리할 수 있다.
분석은 R이나 파이썬 등으로 처리하고
표현은 데이터 시각화 툴을 이용한다.
처리
- 하둡
- 분산시스템에서 대용량 데이터 처리 분석을 지원하는 오픈 소스 소프트웨어 프레임워크
- 구글이 개발한 맵리듀스를 오픈 소스로 구현한 결과물
- 주요 구성요소로는 하둡 분산 파일 시스템인 HDFS, 분산 컬럼 기반 데이터베이스인 HBase, 분산 컴퓨팅지원
프레임워크인 맵리듀스 포함
2. 하둡 설치 및 환경변수 설정
* 하둡 구성요소 (하둡 설치는 리눅스나 유닉스에서 깔린다)
1. HDFS(분산파일저장 시스템)
2. MapReduce(분석라이브러리) - yarn이라 표현
* 하둡 설치
1. 클라우드
- 클라우데라(하둡 전문 클라우드, 이미 설치되어 있는 것을 가져다 사용)
https://kr.cloudera.com/about.html
- 아마존, 네이버클라우드
2. 직접설치
https://hadoop.apache.org/
1. 하둡 설치하기
하둡 standalone 설치하기
- 준비(리눅스설치, 리눅스 업데이트, jdk 설치)
- selinux설정 및 유저 생성
- 하둡 다운로드
- 환경설정
jdk 위치
hadoop 위치
먼저 리눅스서버에서 네트워크 설정을 해주기 위해 selinux 설정을 수정해준다.
[root@localhost ~]# vi /etc/sysconfig/selinux
[root@localhost ~]# reboot
리부팅완료되면 새로운 유저를 만든다.
[master@localhost ~]$ su - root
암호:
[root@localhost ~]# adduser hadoop
[root@localhost ~]# passwd hadoop
hadoop 사용자의 비밀 번호 변경 중
새 암호:
잘못된 암호: 암호는 8 개의 문자 보다 짧습니다
새 암호 재입력:
passwd: 모든 인증 토큰이 성공적으로 업데이트 되었습니다.
[root@localhost ~]# exit
[root@localhost ~]# exit
새로만든 hadoop이란 유저로 로그인한다.
하둡 사이트 가서 다운로드 받는다.
우클릭해서 링크복사한다.
리눅스에서 하둡을 설치하고 압축을 풀어준다.
[hadoop@localhost ~]$ wget https://downloads.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
[hadoop@localhost ~]$ tar xvf hadoop-3.2.2.tar.gz
자바의 경로와 하둡의 경로를 알고 있어야한다.
#자바 실제 경로 확인
[hadoop@localhost ~]$ whereis java
java: /usr/bin/java /usr/lib/java /etc/java /usr/share/java /usr/share/man/man1/java.1.gz
[hadoop@localhost ~]$ ls -ld /usr/bin/java
lrwxrwxrwx. 1 root root 22 2월 16 18:21 /usr/bin/java -> /etc/alternatives/java
[hadoop@localhost ~]$ ls -ld /etc/alternatives/java
lrwxrwxrwx. 1 root root 73 2월 16 18:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64/jre/bin/java
자바경로 : /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64
하둡경로 : /home/hadoop/hadoop-3.2.2
2. 환경변수 설정하기
[hadoop@localhost ~]$ vi .bash_profile
아래 빨간색 4줄을 작성해준다.
#환경변수 적용하고 제대로 설정되었는지 확인하기
[hadoop@localhost ~]$ source .bash_profile
[hadoop@localhost ~]$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.275.b01-1.el8_3.x86_64
[hadoop@localhost ~]$ echo $HADOOP_HOME
/home/hadoop/hadoop-3.2.2
[hadoop@localhost ~]$ echo $PATH
/home/hadoop/.local/bin:/home/hadoop/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/home/hadoop/hadoop-3.2.2/bin:/home/hadoop/hadoop-3.2.2/sbin
3. 맵리듀스 - wordcount(단어개수) 사용하기
1. 단어 개수 출력하는 라이브러리 사용
[hadoop@localhost ~]$ cd hadoop-3.2.2/
[hadoop@localhost hadoop-3.2.2]$ ls share/hadoop/mapreduce/
#NOTICE.TXT의 단어개수를 세어보자.
[hadoop@localhost hadoop-3.2.2]$ mkdir input
[hadoop@localhost hadoop-3.2.2]$ cp NOTICE.txt input/
#hadoop의 사용법 확인하기
[hadoop@localhost hadoop-3.2.2]$ hadoop --help
#wordcount 실행하기
[hadoop@localhost hadoop-3.2.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount input/NOTICE.txt output
#실행결과 확인
[hadoop@localhost hadoop-3.2.2]$ cat output/part-r-00000
각 단어들의 개수를 확인할 수 있다.
필요한 단어만 추출해서 개수출력
먼저 방금 결과를 지우고 특정단어를 찾아서 개수를 확인하자.
#기존 결과 삭제
[hadoop@localhost hadoop-3.2.2]$ rm -r output/
#url에 대한 단어만 찾기
[hadoop@localhost hadoop-3.2.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep input/NOTICE.txt output 'http://[a-z]+'
#결과 확인
[hadoop@localhost hadoop-3.2.2]$ cat output/part-r-00000
4. 하둡 저장소 만들고 사용하기
1. Pseudo 서버 설정
먼저 리눅스서버에서 방화벽 설정을 해준다.
[hadoop@localhost hadoop-3.2.2]$ su - root
암호:
[root@localhost ~]# cd /usr/lib/firewalld/services/
[root@localhost services]# cp http.xml hadoop.xml
[root@localhost services]# vi hadoop.xml
[root@localhost services]# firewall-cmd --permanent --zone=public --add-service=hadoop
success
[root@localhost services]# firewall-cmd --reload
success
[root@localhost services]#
이렇게 리눅스에 방화벽설정은 끝났고 다음으로 하둡도 설정해준다.
[root@localhost services]# cd
[root@localhost ~]# exit
logout
[hadoop@localhost hadoop-3.2.2]$ cd
[hadoop@localhost ~]$ cd hadoop-3.2.2/etc/hadoop/
[hadoop@localhost hadoop]$ vi hadoop-env.sh
JAVA_HOME 경로를 적어준다.
[hadoop@localhost hadoop]$ vi core-site.xml
[hadoop@localhost hadoop]$ mkdir /home/hadoop/hadoop-3.2.2/tmp
[hadoop@localhost hadoop]$ vi hdfs-site.xml
[hadoop@localhost hadoop]$ cd
#하둡 시작하기
[hadoop@localhost ~]$ start-dfs.sh
하지만 현재 ssh의 암호를 없애야지 시작이 가능하다.
#ssh localhost에 접속하려면 암호를 물어본다. 이 암호를 제거해보자.
[hadoop@localhost ~]$ ssh localhost
hadoop@localhost's password:
Activate the web console with: systemctl enable --now cockpit.socket
Last login: Tue Feb 16 20:40:58 2021
[hadoop@localhost ~]$ exit
[hadoop@localhost ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[hadoop@localhost ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@localhost ~]$ chmod 0600 ~/.ssh/authorized_keys
#ssh localhost 암호 사라졌는지 확인하기
[hadoop@localhost ~]$ ssh localhost
다음으로 포맷을 시켜주고 하둡을 시작한다.
포맷은 처음 하드를 설치하고 깨끗하게 처음부터 시작하는 것과 같다.
#현재 hdfs를 환경변수로 선언했기때문에 바로 사용할 수 있다.
[hadoop@localhost ~]$ hdfs namenode -format
#jps (job process state)
[hadoop@localhost ~]$ jps
#하둡 시작하기
[hadoop@localhost ~]$ start-dfs.sh
#다시 jps를 치면 하둡이 시작된 것을 확인할 수 있다.
[hadoop@localhost ~]$ jps
데이터가 들어오면 name node에서 각 data node가 켜져있는지 확인하고 분산해서 데이터를 저장시켜준다.
만약 data node가 다운되었다면 예비 노드인 secondary가 실행된다.
하둡을 종료할 때는 아래와 같다.
[hadoop@localhost ~]$ stop-dfs.sh
Stopping namenodes on [localhost]
Stopping datanodes
Stopping secondary namenodes [localhost.localdomain]
[hadoop@localhost ~]$ jps
10052 Jps
2. 웹에서 하둡 상태 확인하기
다시 하둡을 시작하고 리눅스에서 브라우저를 킨다. (하둡을 시작한 상태여야 한다.)
localhost:9870 으로 검색하면 현재 하둡서버의 상태를 확인할 수 있다.
위에 초록색 탭에서 하둡에 대한 노드, 스냅샷, 파일시스템 내부 등등을 확인할 수 있다.
윈도우 웹브라우저에서도 확인할 수 있다. 리눅스 서버의 IP를 확인하고 포트번호는 9870이다.
3. 하둡 저장소 사용하기
명령어는 hdfs dfs -명령어 를 사용한다.
- 디렉터리 만들기
[hadoop@localhost ~]$ hdfs dfs -mkdir /user
브라우저에서 확인하면 만들어진 것을 알 수 있다.
user안에 또 디렉터리를 만들어보자.
[hadoop@localhost ~]$ hdfs dfs -mkdir /user/hadoop
- 파일 집어넣고 내용 확인하기
#파일 복사해서 집어넣기
[hadoop@localhost ~]$ hdfs dfs -put ./hadoop-3.2.2/etc/hadoop/hadoop-env.cmd /user/hadoop
#복사 잘 되었는지 확인
[hadoop@localhost ~]$ hdfs dfs -ls /user/hadoop
Found 1 items
-rw-r--r-- 1 hadoop supergroup 3999 2021-02-17 00:34 /user/hadoop/hadoop-env.cmd
#복사한 파일 내용 확인
[hadoop@localhost ~]$ hdfs dfs -cat /user/hadoop/hadoop-env.cmd
- 파일 삭제하기
#파일 삭제
[hadoop@localhost ~]$ hdfs dfs -rm /user/hadoop/hadoop-env.cmd
Deleted /user/hadoop/hadoop-env.cmd
#잘 삭제되었는지 확인
[hadoop@localhost ~]$ hdfs dfs -ls /user/hadoop
- wordcount 사용하기
[hadoop@localhost ~]$ hdfs dfs -put ./hadoop-3.2.2/NOTICE.txt /user/hadoop
#기존 output 디렉터리 삭제
[hadoop@localhost ~]$ rm -r hadoop-3.2.2/output/
#맵리듀스의 wordcount 사용
[hadoop@localhost ~]$ hadoop jar ./hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar wordcount /user/hadoop/NOTICE.txt /output
#output디렉터리는 hadoop 안에 생겼다.
[hadoop@localhost ~]$ hdfs dfs -ls /
Found 2 items
drwxr-xr-x - hadoop supergroup 0 2021-02-17 00:44 /output
drwxr-xr-x - hadoop supergroup 0 2021-02-17 00:31 /user
#실행결과 확인하기
[hadoop@localhost ~]$ hdfs dfs -cat /output/part-r-00000
- 하둡 서버안에 있는 파일을 리눅스 서버로 가지고 나오기
[hadoop@localhost ~]$ hdfs dfs -get /output ./output
[hadoop@localhost ~]$ ls
hadoop-3.2.2 hadoop-3.2.2.tar.gz output 공개 다운로드 문서 바탕화면 비디오 사진 서식 음악
5. 복습하기
기존 리눅스서버를 끄고 라이브러리를 제거한다.
맨 처음 압축해놓은 다른 hadoop을 불러온다.
1. 실습하기
* 하둡을 다시 설치
* 하둡 서버 안에 /user/hadoop 디렉터리 만들기
* NOTICE.txt 가져와서 wordcount로 http://로 시작하는 단어의 개수를 파악
#기본 준비(리눅스업데이트, jdk설치)
[master@localhost ~]# su - root
[root@localhost ~]# yum update
[root@localhost ~]# yum -y install java-1.8.0-openjdk-devel
#리눅스 네트워크설정
[root@localhost ~]# vi /etc/sysconfig/selinux
[root@localhost ~]# reboot
#유저 생성
[master@localhost ~]$ su - root
[root@localhost ~]# adduser hadoop
[root@localhost ~]# passwd hadoop
[root@localhost ~]# exit
[master@localhost ~]$ exit
#사용자변경(hadoop 사용자로)
#하둡 설치
[hadoop@localhost ~]$ wget https://downloads.apache.org/hadoop/common/hadoop-3.2.2/hadoop-3.2.2.tar.gz
[hadoop@localhost ~]$ tar xvf hadoop-3.2.2.tar.gz
#환경변수 설정
[hadoop@localhost ~]$ vi .bash_profile
[hadoop@localhost ~]$ source .bash_profile
#리눅스 방화벽 설정
[hadoop@localhost hadoop-3.2.2]$ su - root
[root@localhost ~]# cd /usr/lib/firewalld/services/
[root@localhost services]# cp http.xml hadoop.xml
[root@localhost services]# vi hadoop.xml
[root@localhost services]# firewall-cmd --permanent --zone=public --add-service=hadoop
[root@localhost services]# firewall-cmd --reload
[root@localhost services]#
#하둡 설정
[hadoop@localhost ~]$ cd hadoop-3.2.2/etc/hadoop/
[hadoop@localhost hadoop]$ vi hadoop-env.sh
[hadoop@localhost hadoop]$ vi core-site.xml
[hadoop@localhost hadoop]$ mkdir /home/hadoop/hadoop-3.2.2/tmp
[hadoop@localhost hadoop]$ vi hdfs-site.xml
#ssh localhost 암호 제거
[hadoop@localhost ~]$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
[hadoop@localhost ~]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
[hadoop@localhost ~]$ chmod 0600 ~/.ssh/authorized_keys
#하둡 namenode 포맷하기
[hadoop@localhost ~]$ ssh localhost
[hadoop@localhost ~]$ hdfs namenode -format
#하둡 시작하기
[hadoop@localhost ~]$ start-dfs.sh
#하둡 저장소에 디렉터리 만들기
[hadoop@localhost ~]$ hdfs dfs -mkdir /user
[hadoop@localhost ~]$ hdfs dfs -mkdir /user/hadoop
#NOTICE.txt 복사해오기
[hadoop@localhost ~]$ hdfs dfs -put ./hadoop-3.2.2/NOTICE.txt /user/hadoop
#맵리듀스 사용
[hadoop@localhost ~]$ hadoop jar ./hadoop-3.2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.2.jar grep /user/hadoop/NOTICE.txt /output 'http://[a-z]+'
#실행결과 확인
[hadoop@localhost ~]$ hdfs dfs -cat /output/part-r-00000
'데이터 엔지니어링 정복 > Hadoop Ecosystem' 카테고리의 다른 글
[Virtual Machine 구성] CentOS 설치 및 환경구성, 가상서버 복제, 클라우데라 매니저 설치 (0) | 2021.05.03 |
---|---|
[BigData Architecture] 빅데이터 소프트웨어 및 하드웨어 아키텍처 (0) | 2021.05.03 |
[Virtual Machine 구성] VirtualBox 설치하기, 네트워크 설정, 가상서버 이미지 설치, 파일럿PC 호스트 파일 수정, 클라우데라 매니저 접속하기 (0) | 2021.05.02 |
[BigData] 개념, 특징, 활용, 빅데이터 프로젝트 (0) | 2021.05.02 |
[Hadoop] 02/17 | 하둡과 맵리듀스, yarn의 개념, yarn 사용하기 (0) | 2021.02.17 |