流程

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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
安装虚拟机
ip选取VMware Network Adapter VMnet8:修改后面那个即可

规划节点和IP地址
node1 192.168.000.80 NN
node2 192.168.000.81 DN
node3 192.168.000.82 SN

虚拟机设置管理员
用户名:huser
密码:1234

使用MobaXtem连接192.168.2.80(如果连接不上需要打开控制面板->网络和Internet->网络和共享中心->更改适配器设置->启用两个以太网VMware)
安装基础工具
sudo yum install net-tools
sudo yum install vim

在huser的~目录下新建文件夹 mkdir software,修改权限 chmod -R 777 software
将Hadoop和jdk(后缀为gz的)安装包放到soft文件夹下,注意,Java版本要求Java8及以下

rpm -qa|grep java //查看已安装的openjdk
rpm -e --nodeps 加名字 //卸载已经安装openjdk的

然后进入到上传目录:cd software
tar -zxvf jdk-8u351-linux-x64.tar.gz #解压压缩包

解压完成后,当前目录会有一个jdk1.8.0_351的文件夹。将文件夹移动到/usr/local/java下(一般安装的软件都会放到/usr/local/目录下)。
mv jdk1.8.0_351/ /usr/local/java #将文件移动到usr/local/目录下,并将文件夹名改为java

vim /etc/profile #编辑profile文件,设置环境变量
在文件底部写入下面内容:
JAVA_HOME=/usr/local/java
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

source /etc/profile //使文件生效
验证是否成功:
java -version
javac -version


使用sudo tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/ 将Hadoop解压到/usr/local目录下
使用sudo chown -R huser:huser /usr/local/hadoop-3.3.4/ 将hadoop-3.3.4改为huser用户组的huser用户


关闭防火墙(如果不关闭可能出现节点间无法通信的情况)
sudo systemctl stop firewalld.service (停止防火墙)
sudo systemctl disable firewalld.service (彻底关闭防火墙)

关闭selinux(防止传输文件时出问题)
sudo vim /etc/selinux/config
修改为 SELINUX=disabled

添加hadoop环境变量(把hdfs命令直接加到环境变量中,这样在任意地方执行hdfs命令都可以,不需要在进入hadoop-3.3.4/bin目录下执行),也可以直接在/etc/profile里改,但为了方便维护,就直接在profile.d文件夹下新增一个.sh文件hdfs.sh,如果后期不想要这个命令,可直接删除hdfs.sh文件hdfs
新增一个sh文件sudo vim /etc/profile.d/hdfs.sh,填入如下内容:
export HADOOP_HOME=/usr/local/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

vim /etc/profile

export HADOOP_HOME=/usr/local/hadoop-3.3.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
source /etc/profile

创建HDFS的NN和DN工作主目录:
cd /usr/local/hadoop-3.3.4
sudo mkdir tmp
sudo mkdir var
sudo mkdir dfs
sudo mkdir dfs/name
sudo mkdir dfs/data

sudo chown -R huser:huser /usr/local/hadoop-3.3.4/dfs
sudo chown -R huser:huser /usr/local/hadoop-3.3.4/tmp
sudo chown -R huser:huser /usr/local/hadoop-3.3.4/var


配置Hadoop(一般.sh文件都是寻找Java运行环境,因此主要配置JAVA_HOME)
进入 cd /usr/local/hadoop-3.3.4/etc/hadoop 目录下
vim hadoop-env.sh
(注意路径为你的java路径)
修改export JAVA_HOME=/usr/local/java

为Yarn任务、资源管理器提供Java运行环境(hadoop-3.3.4无需配置)
vim yarn-env.sh
(注意路径为你的java路径)
export JAVA_HOME=/usr/local/java

vim mapred-env.sh
export JAVA_HOME=/usr/local/java

配置HDFS主节点信息、持久化和数据文件的主目录(如果tab不是4个空格,改一下sudo vim /etc/vimrc,添加set ts=4)
cd /usr/local/hadoop-3.3.4/etc/hadoop
vim core-site.xml 在<configuration>中添加如下配置
<property>
<name>fs.defaultFS</name>
<value>hdfs://node1:9000</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop-3.3.4/tmp</value>
</property>

<property>
<name>hadoop.proxyuser.huser.hosts</name>
<value>*</value>
</property>

<property>
<name>hadoop.proxyuser.huser.groups</name>
<value>*</value>
</property>



配置HDFS默认的数据存放策略
vim hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop-3.3.4/dfs/name</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>/usr/local/hadoop-3.3.4/dfs/data</value>
</property>


<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node3:9868</value>
</property>

<property>
<name>dfs.replication</name>
<value>2</value>
</property>

配置mapreduce任务调度策略
vim mapred-site.xml

<property>
<name>mapred.local.dir</name>
<value>/usr/local/hadoop-3.3.4/var</value>
</property>

<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>



配置Yarn资源管理角色的信息
vim yarn-site.xml

<property>
<name>yarn.resourcemanager.hostname</name>
<value>node1</value>
</property>

<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>




配置datanode节点信息
vim workers
node1
node2
node3

提前准备主机名解析文件,为后面的克隆机器做好准备(可选,若不做,克隆后为每台机器重新添加亦可,不用删除hosts自带的)
sudo vim /etc/hosts
192.168.000.80 node1
192.168.000.81 node2
192.168.000.82 node3

重启 sudo reboot


克隆其他集群信息
关闭机器,准备克隆
克隆后,修改node2、node3的IP和主机名
修改主机名sudo vim /etc/hostname
修改IP:sudo vim /etc/sysconfig/network-scripts/ifcfg-ens32
然后重启:sudo reboot

下面开始配置集群的ssh免密
在3台机器上执行产生自己的公钥:
ssh-keygen -t rsa
///home/yixin/.ssh/id_rsa
按照默认值回车确定
将每台机器的公钥拷贝给每台机器,注意下面的指令要求3台机器都要执行:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3

格式化hdfs(三台集群都要)
hdfs namenode -format

开启集群
start-all.sh
关闭
stop-all.sh



日志的地方
/usr/hadoop-3.3.4/logs

http://192.168.000.80:9870