하둡(hadoop) : 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프레임워크로서 하둡은 분산 파일 시스템인(Hadoop Distributed File System)에 데이터를 저장하고 분산 처리 시스템인 맵리듀스를 이용해서 데이터를 처리합니다.
수십 테라바이트 또는 페타 바이트 이상의 대용량 파일을 분산된 서버에 저장하고, 저장된 데이터를 빠르게 처리할 수 있게하는 분산 파일 시스템.
ㅇ데이터의 종류 3가지?
1. 정형화된 데이터 : emp테이블과 같은 rdbms에 저장된 테이블 형태의 데이터
2. 반정형화된 데이터 : 웹로그와 sns 데이터, html, json 파일
3. 비정형화된 데이터 : 동영상, 이미지, 텍스트 데이터
정형화된 데이터는 rdbms(오라클, 마리아디비) database에 저장하고 관리하며 검색하고 반정형화된 데이터와 비정형화된 데이터는 주로 하둡에 저장하고 데이터 분석을 합니다.
Relation Database Management System
rdbms 제품 | 비 rdbms 제품 |
oracle, msSQL, mySQL <- 유료 mariadb, porsgrSQL <- 무료 |
하둡, 스칼라 |
ㅇ현업에서 하둡 사용 예(아프리카tv)
1. 채팅방 글 데이터(비정형 데이터)를 전부 하둡에 저장합니다.
2. 특정 단어를 자주 사용하는 채팅방의 형태를 분석한다.
3. 머신러닝을 사용해서 채팅 데이터를 학습 시키고 특정 단어를 사용하거나 불건전한 대화를 이끌 가능성(확률)이 높은 방을 미리 예측하고 확률이 높은 것만 사람이 모니터링 합니다. 그리고 채팅방을 자동 폐쇄시킵니다.
ㅇ하둡이 나온 배경지식?
구글에서 구글 서버에 쌓여지는 수많은 빅데이터들을 구글에서도 처음에는 rdbms(오라클)에 입력하고 데이터를 저장하려고 시도했으나 너무 데이터가 많아서 실패하고 자체적으로 빅데이터를 저장할 기술을 개발했습니다. 그리고 대외적으로 이 기술에 대한 논문을 발표했습니다.
이 논문을 더그커팅이라는 사람이 읽고 자바로 구현했습니다.
하둡은 자바로 만들어졌습니다. 자바를 가지고 빅데이터를 검색하기가 어려워 자바를 몰라도 하둡의 데이터를 쉽게 다룰 수 있도록 NoSQL이라는 기술이 나오면서 SQL과 같은 언어로 빅데이터를 다룰 수 있게 되었습니다.
ㅇNoSQL(Not Only SQL)
NoSQL은 전통적인 RDBMS와 다른 DBMS를 지칭하기 위한 용어. 자바를 몰라도 하둡에 저장된 데이터를 검색하고 다룰 수 있는 언어.
우리가 배울 NoSQL?
1. Hive(facebook/meta) -> SQL과 완전 똑같음
2. PIG (yahoo) -> SQL과 비슷하면서 다름
3. 몽고디비 -> SQL과 완전히 다름
하둡 ---------> NoSQL
노란코끼리 HIVE(벌떼), PIG(돼지), mongo db, Tajo(타조)
ㅇ하둡의 장점
1. 공짜
2. 분산처리 가능
-> 여러대의 노드(컴퓨터)를 묶어서 마치 하나의 서버처럼 보이게 하는 기법.
예를 들어 우리반 컴퓨터(한 대의 메모리가 8기가) 30대를 다 묶어서 분산처리파일 시스템을 구성했으면 마치 30대의 컴퓨터를 하나의 컴퓨터처럼 사용할 수 있습니다. 240기가의 메모리와 30개의 cpu를 다 사용할 수 있게 됩니다.
ex. 2008년 뉴욕타임즈는 130년 분량의 신문기사 1100만 페이지를 하둡을 이용해서 단 하루만에 pdf로 변환했습니다. 이때 든 비용은 200만원 밖에 안들었습니다. 만약에 하둡이 아닌 일반 서버로 처리했다면 14년이 걸렸을 것으로 예상했습니다.
39 하둡 생태계 시스템 구조
야후의 경우 약 5만대의 서버(컴퓨터)를 연결해서 하둡을 운영하고 있고 페이스북은 약 1만대 이상의 컴퓨터를 연결해 하둡을 운영하고 있음.
ㅇ하둡 구성도
1. 네임 노드 : 메타 데이터가 위치하는 곳
메타데이터 : emp.csv와 같은 데이터가 데이터 노드들 중에서 어느 컴퓨터에 있다라는 위치정보에 대한 데이터
2. 보조 네임노드 : 주기적으로 네임노드의 메타 데이터를 백업하면서 혹시 네임노드가 다운되었을 때 네임노드의 역할을 하는 컴퓨터
3. 데이터 노드 : emp.csv와 같은 데이터를 저장하는 컴퓨터들. 원본 1개에 백업본 2개를 항상 유지합니다.
만약 컴퓨터 8대를 하둡 파일 시스템으로 구성한다면 네임노드 1대, 보조 네임노드 1대, 6대의 데이터 노드들로 구성되는 것입니다.
40 하둡 설치
https://hadoop.apache.org/releases.html
1. 하둡을 설치하기 위해서 필요한 파일을 리눅스 서버에 올립니다.
centos에 하둡 설치파일.zip 압축을 풀면 아래의 3개의 파일이 있습니다.
아래의 3개의 설치 파일을 모바텀으로 /root 밑에 올립니다.
1) jdk-7u60-linux-i586.gz : 자바 설치 파일(하둡이 자바로 이루어져 있어 먼저 설치해야 합니다.)
2) hadoop-1.2.1.tar.gz : 하둡설치파일
3) protobuf-2.5.0.tar.gz : 서버간의 통신을 위한 프로그램 설치 파일입니다.
cf. 하둡 설치의 큰 그림
java설치 : 하둡이 자바로 만들어져 있어서 자바를 설치해야함
↓
keygen 생성 : 여러 컴퓨터들을 묶어서 마치 하나의 컴퓨터처럼 보이게 하는게 하둡의 목표이므로 컴퓨터들끼리 서로 데이터를 전송할 때 접속을 먼저 해야하는데 접속할 때 패스워드를 물어보는데 매번 패스워드를 물어보면 운영이 안됨. 그래서 패스워드를 암호화해서 저장해놓고 패스워드 없이 접속할 수 있게 셋팅해주는 작업
↓
하둡 설치 : 하둡설치는 아주 간단한데 그냥 4개의 파일 내용만 수정하면 됨.
hadoop-env.sh : 자바 홈디렉토리와 hadoop 홈디렉토리가 어딘지 지정
core-site.xml : 하둡의 네임노드가 어느 서버인지를 지정
mapred-site.xml : java로 만들어진 mapreduce 프레임워크와 관련된 정보를 지정하는 파일
hdfs-site.xml : 하둡 파일 시스템임 HDFS(Hadoop Distributed File System)와 관렴된 정보를 저장하는 파일
현재 우리는 하둡 1버전을 설치할거기 때문에 자바를 1.7로 내림
하둡 2버전 부터는 자바 1.8이기 때문에 굳이 자바를 다운그레이드할 필요 없음!
먼저 모바텀을 이용해서 설치파일을 리눅스 시스템 /root 밑에 올립니다.
/root에 파일이 올라와 있는지 확인합니다.
[root@localhost ~]# ls -l *.gz
-rw-r--r--. 1 root root 63851630 3월 22 14:55 hadoop-1.2.1.tar.gz
-rw-r--r--. 1 root root 143607445 3월 22 14:55 jdk-7u60-linux-i586.gz
-rw-r--r--. 1 root root 2401901 3월 22 14:55 protobuf-2.5.0.tar.gz
2. 네트워크 설정을 변경합니다.
먼저 인터넷이 가능한지 확인합니다. firefox 를 열어서 네이버에 접속해봅니다.
아이피 주소를 확인합니다.
[root@localhost ~]# ifconfig
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.2.15 netmask 255.255.255.0 broadcast 10.0.2.255
inet6 fe80::38e0:da80:ba87:b80 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:6d:ee:f1 txqueuelen 1000 (Ethernet)
RX packets 152186 bytes 218694024 (208.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 14922 bytes 1260041 (1.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:af:40:8b txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3. hostname 을 변경합니다.
[root@localhost ~]# vi /etc/hosts
저장하고 vi편집기 나오면 됨!
[root@localhost ~]# hostnamectl set-hostname centos
[root@localhost ~]# hostname
centos
[root@localhost ~]# su -
마지막 로그인: 화 3월 22 14:55:53 KST 2022 gateway에서 시작 일시 pts/0
[root@centos ~]#
hostname이 바뀐 것을 확인할 수 있음.
네트워크 서비스를 재시작 합니다.
[root@centos ~]# service network restart
Restarting network (via systemctl): [ OK ]
혹시 여기서 네트워크를 다시 시작했는데 ok 가 안나오면 인터넷 연결이 끊겼는지 확인해보세요.
service network restart 명령어를 수행했을때 자꾸 인터넷이 끊어진다면 인터넷이 자동연결되게 설정하세요.
ifconfig 날려보면 연결을 확인할 수 있음.
4. 방화벽을 해지 합니다.
[root@centos ~]# iptables -F
[root@centos ~]# iptables -L
5. ld-linux.so.2 를 설치 합니다.
[root@localhost ~]# yum install ld-linux.so.2
complete!
방금 네트워크 통신을 원활하게 하기 위한 소프트웨어를 설치함.
6. 자바를 설치 합니다.
기존 자바 버전을 확인하면 1.8입니다.
[root@centos ~]# java -version
openjdk version "1.8.0_262"
OpenJDK Runtime Environment (build 1.8.0_262-b10)
OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)
1.7로 다운그레이드 할 겁니다.
[root@centos ~]# cd ~
[root@centos ~]# pwd
/root
[root@centos ~]# mkdir -p /u01/app/java
[root@centos ~]# mv /root/jdk-7u60-linux-i586.gz /u01/app/java/
[root@centos ~]# cd /u01/app/java/
[root@centos java]# tar xvzf jdk-7u60-linux-i586.gz #압축해제
[root@centos java]# chown -R root:root jdk1.7.0_60 #소유자 root로 변경
oracle 유져로 접속합니다.
[root@centos java]# su - oracle
마지막 로그인: 월 3월 21 12:24:54 KST 2022 일시 pts/0
(base) [oracle@centos ~]$
vi .bash_profile(환경설정 file)로 들어가서 java가 설치된 곳(자바가 설치되어 있어야 하둡이 설치됨), 실행파일 path, class파일 path 내용을 추가합니다.
맨 밑에 아래의 내용을 추가합니다.
#===============================================================
export JAVA_HOME=/u01/app/java/jdk1.7.0_60 # 자바 설치 위치
export PATH=/u01/app/java/jdk1.7.0_60/bin:$PATH # 자바 실행파일이 bin에 있다는 걸 알려줌
export CLASSPATH=.:/usr/java/jdk1.7.0_60/lib:$CLASSPATH # 자바 코드를 컴파일 하려면 class파일의 위치를 알아야함.
#===============================================================
아래의 코드로 .bash_profile 을 실행해 변경내용 반영함.
(base) [oracle@centos ~]$ source .bash_profile
. <- 점은 숨김파일을 의미함.
리눅스 터미널에서 숨김파일을 보고 싶다면 ls -al 을 해야 볼 수 있음.
자바 1.7버전으로 변경된 것을 확인할 수 있음!
(base) [oracle@centos ~]$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) Client VM (build 24.60-b09, mixed mode)
7. protobuf 를 설치 합니다.
protocol buffer 프로그램을 설치해야합니다. 서로 통신하기 위한 프로그램입니다.
다시 root 로 접속합니다.
(base) [oracle@centos ~]$ su -
암호:
마지막 로그인: 화 3월 22 15:05:54 KST 2022 일시 pts/0
[root@centos ~]# cp -v /root/protobuf-2.5.0.tar.gz /usr/local/
`/root/protobuf-2.5.0.tar.gz' -> `/usr/local/protobuf-2.5.0.tar.gz'
-v 옵션을 cp되는 과정을 보여달라는 뜻.
[root@centos ~]# ll #ls -l 별칭, cp가 잘 됐는지 확인
[root@centos ~]# tar xvfz protobuf-2.5.0.tar.gz # 압축해제
[root@centos ~]# cd protobuf-2.5.0 #디렉토리 위치로 이동
[root@centos protobuf-2.5.0]# ./configure #configure 파일 실행(./)
[root@centos protobuf-2.5.0]# make
[root@centos protobuf-2.5.0]# make install
[root@centos protobuf-2.5.0]# protoc --version
libprotoc 2.5.0
버전 확인하고 reboot 해줍니다.
[root@centos protobuf-2.5.0]# reboot
reboot 후에는 oracle 유져로 putty 로 접속합니다.
8. keygen 생성
하둡은 SSH 프로토컬을 이용해 하둡 클러스트간의 내부 통신을 수행한다.
하둡을 다 설치하고 나서 하둡을 시작하는 명령어인 start-all.sh 쉘 스크립트를 수행하면 네임노드가 설치된 서버에서
데이터 노드가 설치된 서버로 접근해 데이터 노드와 테스크 트래커를 구동하게 된다.
그런데 이때 ssh 를 이용할 수 없다면 하둡을 실행할 수 없다.
네임노드에서 공개키를 설정하고 이 공개키(authorized_keys) 를 다른 데이터 노드에 다 복사해줘야한다.
이 키를 가지고 있으면 ssh 로 다른 노드에 접속할때 패스워드 없이 접속할 수 있다.
ㅇSSH설정
SSH란 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜 -> 네트워크 통신언어
## 공개키 생성
":" 나오는 부분에서는 그냥 엔터 3번 치면 됨.
(base) [oracle@centos ~]$ rm -rf .ssh
(base) [oracle@centos ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/oracle/.ssh/id_rsa):
Created directory '/home/oracle/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/oracle/.ssh/id_rsa.
Your public key has been saved in /home/oracle/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:K0LYDd+HIH2UYNc9aauvxQ3J15fGjs8zPsUcasjZjMY oracle@centos
The key's randomart image is:
+---[RSA 2048]----+
| o.oo . . |
| o o. . = |
| o o . . o |
| o = + . ....o.|
| . o o S +.X o*+|
| . o.E O+ =|
| . . . ..+....|
| . . .. o+ |
| .. .++|
+----[SHA256]-----+
(base) [oracle@centos ~]$ ssh-copy-id -i /home/oracle/.ssh/id_rsa.pub oracle@192.168.122.1
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/oracle/.ssh/id_rsa.pub"
The authenticity of host '192.168.122.1 (192.168.122.1)' can't be established.
ECDSA key fingerprint is SHA256:/Eeg1J7Ig6qNMghOwkpopVQinX+kymbahyO2RAo+aj4.
ECDSA key fingerprint is MD5:18:c0:84:9a:d9:f6:34:38:07:63:93:74:9f:0c:42:d3.
Are you sure you want to continue connecting (yes/no)? <- yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
oracle@192.168.122.1's password: <- 패스워드입력
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'oracle@192.168.122.1'"
and check to make sure that only the key(s) you wanted were added.
아래의 코드를 치면 키가 만들어진 것을 확인할 수 있음. 오라클 유저의 키가 이곳에 저장되어있음.
(base) [oracle@centos ~]$ find /home/oracle/.ssh -name author*
/home/oracle/.ssh/authorized_keys
# 공개키 잘 생성되었는지 확인
(base) [oracle@centos ~]$ ssh oracle@192.168.122.1
Last login: Tue Mar 22 15:58:21 2022 from gateway
※ 중요: 여기서 접속시 패스워드를 물어보면 안됩니다.
만약 패스워드를 물어봤다면 8번부터 다시 진행합니다.
9. hadoop 디렉토리를 만들고 거기에 하둡설치 파일 압축을 풉니다.
(base) [oracle@centos ~]$ cd
(base) [oracle@centos ~]$ mkdir hadoop
(base) [oracle@centos ~]$ cd hadoop
(base) [oracle@centos hadoop]$
root 유져로 접속하여 /root 밑에 있는 hadoop-1.2.1.tar.gz의 권한을 777 로 올립니다.
(base) [oracle@centos hadoop]$ su -
암호:
마지막 로그인: 화 3월 22 15:47:51 KST 2022 일시 pts/0
[root@centos ~]# chmod 777 hadoop-1.2.1.tar.gz
소유자도 oracle 유져로 변경합니다.
[root@centos ~]# chown -R oracle:oracle hadoop-1.2.1.tar.gz
[root@centos ~]# ls -l hadoop-1.2.1.tar.gz
-rwxrwxrwx. 1 oracle oracle 63851630 3월 22 14:55 hadoop-1.2.1.tar.gz
권한, 소유자가 모두 바뀐 것을 확인했습니다.
그리고 /root/ 밑에 있는 hadoop-1.2.1.tar.gz 를 /home/oracle/hadoop/ 밑으로 복사합니다.
[root@centos ~]# cp /root/hadoop-1.2.1.tar.gz /home/oracle/hadoop/
이제 다시 oracle 유져로 접속합니다.
[root@centos ~]# su - oracle
hadoop 디렉토리로 이동합니다.
(base) [oracle@centos hadoop]$ cd hadoop
oracle 유져에서 hadoop-1.2.1.tar.gz 의 압축을 풉니다.
(base) [oracle@centos hadoop]$ tar xvzf hadoop-1.2.1.tar.gz
압축을 해제했다면 기존의 압축파일은 지워도 됩니다.
(base) [oracle@centos hadoop]$ rm hadoop-1.2.1.tar.gz
rm: remove write-protected 일반 파일 `hadoop-1.2.1.tar.gz'? y
11. 하둡 홈 디렉토리를 설정한다.
다시 oracle 의 홈디렉토리로 옵니다.
(base) [oracle@centos hadoop]$ cd
.bash_profile 을 열어 맨 아래에 아래의 내용을 추가합니다.
[oracle@centos ~]$ vi .bash_profile
#=====================================================
export HADOOP_HOME=/home/oracle/hadoop/hadoop-1.2.1
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
#=====================================================
[oracle@centos ~]$ source .bash_profile
(base) [oracle@centos ~]$ source .bash_profile
(base) [oracle@centos ~]$ echo $HADOOP_HOME
/home/oracle/hadoop/hadoop-1.2.1
echo 하둡 설치가 잘 됐는지 확인함.
12. 하둡 환경설정을 하기 위해 아래의 4개의 파일을 셋팅해야 합니다.
1) hadoop-env.sh : 자바 홈디렉토리와 hadoop 홈디렉토리가 어딘지 지정한다.
2) core-site.xml : 하둡의 네임노드가 어느 서버인지를 지정한다.
3) mapred-site.xml : java 로 만들어진 mapreduce 프레임워크와 관련된 정보를 지정하는 파일
4) hdfs-site.xml : 하둡 파일 시스템인 HDFS(Hadoop Distributed File System) 와 관련된 정보를 저장하는 파일
앞으로 4개의 파일을 수정하는 부분이 정말 중요합니다. 하나씩 차근차근 진행하세요.
일단 , hadoop-env 파일이 있는 위치로 갑니다.
(base) [oracle@centos ~]$ cd $HADOOP_HOME/conf
(base) [oracle@centos conf]$ vi hadoop-env.sh
#=====================================================
# The java implementation to use. Required.
# export JAVA_HOME=/usr/lib/j2sdk1.5-sun
export JAVA_HOME=/u01/app/java/jdk1.7.0_60
export HADOOP_HOME=/home/oracle/hadoop/hadoop-1.2.1
export HADOOP_HOME_WARN_SUPPRESS=1
#=====================================================
:set nu 명령어를 이용해 넘버를 표시하고 10번째에 끼워넣으면 됩니다.
(base) [oracle@centos conf]$ vi core-site.xml
########################################################
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/oracle/hadoop/hadoop-1.2.1/hadoop-${user.name}</value>
</property>
</configuration>
#######################################################
(base) [oracle@centos conf]$ vi mapred-site.xml
###############################################
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>${hadoop.tmp.dir}/mapred/local</value>
</property>
<property>
<name>mapred.system.dir</name>
<value>${hadoop.tmp.dir}/mapred/system</value>
</property>
</configuration>
###############################################
디렉토리 3개를 만듭니다.
(base) [oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs
(base) [oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs/name
(base) [oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs/data
hadoop-1.2.1/dfs : 하둡 분산 파일 시스템의 운영을 위한 data를 저장할 위치
hadoop-1.2.1/dfs/name : 네임 노드에 관련된 data를 저장할 위치
hadoop-1.2.1/dfs/data : 데이터 노드에 관련된 data를 저장할 위치
vi편집기를 열어, 위의 파일 위치들을 저장하시오.
(base) [oracle@centos conf]$ vi hdfs-site.xml
#############################################
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/home/oracle/hadoop/hadoop-1.2.1/dfs/name</value>
</property>
<property>
<name>dfs.name.edits.dir</name>
<value>${dfs.name.dir}</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/oracle/hadoop/hadoop-1.2.1/dfs/data</value>
</property>
</configuration>
#############################################
data 와 name 디렉토리의 권한을 조정합니다.
(base) [oracle@centos conf]$ cd /home/oracle/hadoop/hadoop-1.2.1/dfs
(base) [oracle@centos dfs]$ chmod 755 data
(base) [oracle@centos dfs]$ chmod 755 name
(base) [oracle@centos dfs]$ ls -l
합계 0
drwxr-xr-x. 2 oracle oracle 6 3월 22 16:44 data
drwxr-xr-x. 2 oracle oracle 6 3월 22 16:44 name
13. 하둡 네임노드를 포맷한다.
(base) [oracle@centos dfs]$ cd
(base) [oracle@centos ~]$ hadoop namenode -format
************************************************************/
Re-format filesystem in /home/oracle/hadoop/hadoop-1.2.1/dfs/name ? (Y or N) Y <- 대문자 중요
14. 하둡파일 시스템을 올린다.
(base) [oracle@centos ~]$ start-all.sh
15. 하둡파일 시스템의 데몬이 잘 올라왔는지 확인한다.
(base) [oracle@centos ~]$ jps
3423 SecondaryNameNode
3657 TaskTracker
3735 Jps
3133 NameNode
3276 DataNode
3500 JobTracker
위의 6개의 프로세서들이 잘 떠있으면 설치를 성공한것입니다.
문제229. (오늘의 마지막 문제) 하둡 설치후 jps를 수행해서 나오는 6개의 프로세서를 캡쳐해서 올리시오.
########################################################################################
※ 잘 안되었을 때의 조치 방법
1. 하둡을 모두 내립니다.
[oracle@centos conf]$ stop-all.sh
2.하둡 네임노드를 포멧한다.
[oracle@centos conf]$ cd
[oracle@centos ~]$ hadoop namenode -format
3. 하둡 데이터 노드와 네임노드의 데이터를 다 지웁니다.
[oracle@centos dfs]$ pwd
/home/oracle/hadoop/hadoop-1.2.1/dfs
[oracle@centos dfs]$ ls
data name
[oracle@centos dfs]$ cd data
[oracle@centos data]$ rm -rf *
[oracle@centos data]$ cd ../name
[oracle@centos name]$ rm -rf *
다시 하둡파일 시스템을 올린다.
[oracle@centos ~]$ start-all.sh
[oracle@centos ~]$ jps
9167 SecondaryNameNode
9030 DataNode
9402 TaskTracker
9250 JobTracker
9494 Jps
8883 NameNode
'Study > class note' 카테고리의 다른 글
하둡 / 하이브 설치 (0) | 2022.03.23 |
---|---|
하둡 / 하둡 분산 파일 시스템 명령어 (0) | 2022.03.23 |
리눅스 / 원격으로 워크벤치 실행 (0) | 2022.03.22 |
리눅스 / 쉘스크립트2 (0) | 2022.03.22 |
리눅스 / 프로세서 관리 명령어, 쉘 스크립트, if문 (0) | 2022.03.21 |