1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
|
# open-ssh 설치 && ssh 접속
sudo apt install openssh-server openssh-client -y
ssh-keygen -t rsa
cd /home/lsyeup1206/.ssh/
cp id_rsa.pub authorized_keys
# ssh localhost
# hadoop 설치
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz
tar zxvf hadoop-3.3.2.tar.gz
ln -s hadoop-3.3.2 hadoop
# hadoop 환경변수 설정
vi .bashrc
# ######## HADOOP-3.3.2 PATH ############
HAD00P_H0ME=/home/lsyeup1206/hadoop PATH=$PATH:$HAD00P_H0ME/bin:$HAD00P_H0ME/sbin
export PATH
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HAD00P_YARN_H0ME=$HAD00P_H0ME
export HAD00P_C0NF_DIR=$HAD00P_H0ME/etc/hadoop
export HDFS_NAMENODE_USER=lsyeup1206
export HDFS_DATANODE_USER=lsyeup1206
export HDFS_SECONDARYNAMENODE_USER=lsyeup1206
export YARN_RESOURCEMANAGER_USER=lsyeup1206
export YARN_NODEMANAGER_USER=lsyeup1206
source .bashrc
# hadoop 설정파일 세팅
cd /home/lsyeup1206/hadoop/etc/hadoop/
vi hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk
vi yarn-env.sh
export JAVA_HOME=/usr/lib/jvm/jdk
vi core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/lsyeup1206/tmp</value>
</property>
</configuration>
vi hdfs-site.xml
<configuration>
<!-- 기본 설정-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/lsyeup1206/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/lsyeup1206/hadoop/hdfs/datanode</value>
</property>
<!-- datanode가 1개인 상황에서 datanode의 추가없이 기존 datanode 에서 작업-->
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.enable</name>
<value>true</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.policy</name>
<value>NEVER</value>
</property>
<property>
<name>dfs.client.block.write.replace-datanode-on-failure.best-effort</name>
<value>true</value>
</property>
</configuration>
vi mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
vi yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
# namenode, datanode 담당할 폴더 생성
mkdir -p $HADOOP_HOME/hdfs/namenode
mkdir -p $HADOOP_HOME/hdfs/datanode
# namenode format
hdfs namenode -format
# hadoop3 실행 확인
start-dfs.sh
start-yarn.sh
jps
# Ubuntu 부팅 시 자동으로 하둡 서비스가 실행할 수 있도록 !
vi /home/lsyeup1206/hadoop/sbin/hadoop-service.sh
#! /bin/bash
# start() {
# export HADOOP_HOME=/home/lsyeup1206/hadoop
# export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# start-dfs.sh
# start-yarn.sh
# }
# stop() {
# export HADOOP_HOME=/home/lsyeup1206/hadoop
# export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# stop-dfs.sh
# stop-yarn.sh
# }
# case $1 in
# start|stop "$1" ;;
# esac
# exit
# 실행 권한부여
chmod +x /home/lsyeup1206/hadoop/sbin/hadoop-service.sh
# 우분투 systemctl에 hadoop-service.sh 를 등록한다.
sudo vi /usr/lib/systemd/system/hadoop.service
[Unit]
Description=Hadoop 3.3.2 Service
[Service]
Type=oneshot
User=lsyeup1206
Group=lsyeup1206
ExecStart=/home/lsyeup1206/hadoop/sbin/hadoop-service.sh start
ExecStop=/home/lsyeup1206/hadoop/sbin/hadoop-service.sh stop
RemainAfterExit=yes
#Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl enable hadoop
sudo systemctl start hadoop
sudo systemctl status hadoop
# hdfs jps명령어 입력 시 전부 안올라오는 경우
# 아래 경로에 로그파일들 tail걸어 놓고, bindException 뜨는 포트들 킬해준다.
/home/lsyeup1206/hadoop/logs
lsof -i -P -n | grep LISTEN
|