|
■ centos 에 하둡 설치 총정리
차근 차근 꼼꼼하게 명령어 하나하나 천천히 진행하세요. 하나라도 중간에 빼먹으면 다시 처음부터 해야합니다.
※ 설치시 주의사항 1
혹시 실패했을때를 대비해서 지금 현재 리눅스 가상환경을 복제하고 시작하세요
https://cafe.daum.net/oracleoracle/Sho9/473
※ 설치시 주의사항 2
앞에 프롬프트 표시가 # 은 root 유져이고
앞에 프롬프트 표시가 $ 는 oracle 유져입니다.
이 표시를 잘 보고 설치하여야합니다. 안지키게 되면 설치가 실패하게 됩니다. 잘지켜서 꼭 설치에 성공하세요 ~
1. 하둡을 설치하기 위해서 필요한 파일을 리눅스 서버에 올립니다.
설치파일이 있는 구글 드라이브 : 바로가기 |
아래의 3개의 설치 파일을 모바텀으로 /root 밑에 올립니다.
1. jdk-7u60-linux-i586.gz
2. hadoop-1.2.1.tar.gz
3. 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::f5d8:46b:e8db:fea3 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:de:49:cc txqueuelen 1000 (Ethernet)
RX packets 169102 bytes 245458413 (234.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 15778 bytes 1368836 (1.3 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:82:83:dd 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
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
위의 내용을 다 지우고 아래의 내용을 적고 저장합니다.
192.168.122.1 centos
[root@localhost ~]# hostnamectl set-hostname centos
[root@localhost ~]# hostname
centos
네트워크 서비스를 재시작 합니다.
[root@localhost ~]# service network restart
Restarting network (via systemctl): [ OK ]
혹시 여기서 네트워크를 다시 시작했는데 ok 가 안나오면 인터넷 연결이 끊겼는지 확인해보세요
service network restart 명령어를 수행했을때 자꾸 인터넷이 끊어진다면 인터넷이 자동연결되게 설정하세요
아래의 링크를 참고하세요 ~
https://cafe.daum.net/oracleoracle/Sho9/232
[root@localhost ~]# ifconfig
4. 방화벽을 해지 합니다.
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
5. ld-linux.so.2 를 설치 합니다.
[root@localhost ~]# yum install ld-linux.so.2
6. 자바를 설치 합니다.
[root@localhost ~]# 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)
[root@localhost ~]# cd ~
[root@localhost ~]# mkdir -p /u01/app/java
[root@localhost ~]# mv /root/jdk-7u60-linux-i586.gz /u01/app/java/
[root@localhost ~]# cd /u01/app/java/
[root@localhost java]# tar xvzf jdk-7u60-linux-i586.gz
[root@localhost java]# chown -R root:root jdk1.7.0_60
oracle 유져로 접속합니다.
[root@centos java]# su - oracle
[oracle@centos ~]$ vi .bash_profile
맨 밑에 아래의 내용을 추가합니다.
#===============================================================
export JAVA_HOME=/u01/app/java/jdk1.7.0_60
export PATH=/u01/app/java/jdk1.7.0_60/bin:$PATH
export CLASSPATH=.:/usr/java/jdk1.7.0_60/lib:$CLASSPATH
#===============================================================
[oracle@centos ~]$ source .bash_profile
[oracle@centos ~]$ java -version
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b19)
Java HotSpot(TM) Server VM (build 24.60-b09, mixed mode)
7. protobuf 를 설치 합니다.
다시 root 로 접속합니다.
[oracle@centos ~]$ su -
Password:
[root@centos ~]# cp -v /root/protobuf-2.5.0.tar.gz /usr/local/
[root@centos ~]# cd /usr/local
[root@centos local]# ll
[root@centos local]# tar xvfz protobuf-2.5.0.tar.gz
[root@centos local]# cd protobuf-2.5.0
[root@centos protobuf-2.5.0]# ./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 로 다른 노드에 접속할때 패스워드 없이 접속할 수 있다.
## 공개키 생성
[oracle@centos ~]$ rm -rf .ssh
[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:
b8:e5:55:fd:f9:72:4d:48:e6:47:22:bd:44:cb:41:7d oracle@centos
The key's randomart image is:
+--[ RSA 2048]----+
| .+. |
| = oE|
| o X o|
| . . * *.|
| . S . +.+|
| + . oo|
| . . . +|
| o |
| |
+-----------------+
[oracle@centos ~]$ ssh-copy-id -i /home/oracle/.ssh/id_rsa.pub oracle@192.168.122.1
The authenticity of host '192.168.56.101 (192.168.56.101)' can't be established.
ECDSA key fingerprint is 6b:de:64:c5:27:c4:c6:d7:62:2a:9c:fa:83:d5:65:13.
Are you sure you want to continue connecting (yes/no)? yes <- 입력
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/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: oracle <- 패스워드입력
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.
# 공개키 잘 생성되었는지 확인
[oracle@centos ~]$ ssh oracle@192.168.122.1
Last login: Thu Aug 6 22:17:11 2020
※ 중요: 여기서 접속시 패스워드를 물어보면 안됩니다.
만약 패스워드를 물어봤다면 8번부터 다시 진행합니다.
9. hadoop 디렉토리를 만들고 거기에 하둡설치 파일 압축을 풉니다.
[oracle@centos ~]$ cd
[oracle@centos ~]$ mkdir hadoop
[oracle@centos ~]$ cd hadoop
root 유져로 접속하여 /root 밑에 있는 hadoop-1.2.1.tar.gz의 권한을 777 로 올립니다.
(base) [oracle@centos ~]$ su -
암호:
[root@centos ~]# chmod 777 hadoop-1.2.1.tar.gz
소유자도 oracle 유져로 변경합니다.
[root@centos ~]# chown -R oracle:oracle 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 디렉토리로 이동합니다.
[oracle@centos]$ cd hadoop
[oracle@centos hadoop]$ pwd
oracle 유져에서 hadoop-1.2.1.tar.gz 의 압축을 풉니다.
[oracle@centos hadoop]$ tar xvzf hadoop-1.2.1.tar.gz
...
[oracle@centos hadoop]$ rm hadoop-1.2.1.tar.gz
11. 하둡 홈 디렉토리를 설정한다.
다시 oracle 의 홈디렉토리로 옵니다.
[oracle@centos]$ 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
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개의 파일을 수정하는 부분이 정말 중요합니다. 하나씩 차근차근 진행하세요
[oracle@centos ~]$ cd $HADOOP_HOME/conf
[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
#=====================================================
[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>
[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>
[oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs
[oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs/name
[oracle@centos conf]$ mkdir /home/oracle/hadoop/hadoop-1.2.1/dfs/data
[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 디렉토리의 권한을 조정합니다.
[oracle@centos conf]$ cd /home/oracle/hadoop/hadoop-1.2.1/dfs
[oracle@centos dfs]$ chmod 755 data
[oracle@centos dfs]$ chmod 755 name
[oracle@centos dfs]$ ls -l
total 0
drwxr-xr-x. 2 oracle oracle 6 Jan 6 09:01 data
drwxr-xr-x. 2 oracle oracle 6 Jan 6 09:07 name
13. 하둡 네임노드를 포멧한다.
[oracle@centos dfs]$ cd
[oracle@centos ~]$ hadoop namenode -format
14/08/06 00:28:19 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = edydr1p2.us.oracle.com/192.168.100.102
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 1.2.1
STARTUP_MSG: build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG: java = 1.7.0_60
************************************************************/
Re-format filesystem in /u01/app/hadoop/hadoop-1.2.1/dfs/name ? (Y or N) Y (대문자)
...
14/08/06 00:28:28 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/u01/app/hadoop/hadoop-1.2.1/dfs/name/current/edits
14/08/06 00:28:28 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/u01/app/hadoop/hadoop-1.2.1/dfs/name/current/edits
14/08/06 00:28:28 INFO common.Storage: Storage directory /u01/app/hadoop/hadoop-1.2.1/dfs/name has been successfully formatted.
14/08/06 00:28:28 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at edydr1p2.us.oracle.com/192.168.100.102
************************************************************/
14. 하둡파일 시스템을 올린다.
[oracle@centos ~]$ start-all.sh
15. 하둡파일 시스템의 데몬이 잘 올라왔는지 확인한다.
[oracle@centos ~]$ jps
9167 SecondaryNameNode
9030 DataNode
9402 TaskTracker
9250 JobTracker
9494 Jps
8883 NameNode
위의 6개의 프로세서들이 잘 떠있으면 설치를 성공한것입니다.
※ 잘 안되었을 때의 조치 방법 1. 하둡을 모두 내립니다. [oracle@centos conf]$ stop-all.sh 2.하둡 네임노드를 포멧한다. [oracle@centos conf]$ cd [oracle@centos ~]$ hadoop namenode -format 3. 하둡 데이터 노드와 네임노드의 데이터를 다 지웁니다. [oracle@centos dfs]$ cd /home/oracle/hadoop/hadoop-1.2.1/dfs [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 |
그래도 안되면 oracle vm 을 관리자 권한으로 실행해보세요
그래도 안되면 아래의 블러그를 참고해서 해결하세요 !
|