0%

Hadoop完全分布式搭建与配置备忘

写在最前

学习一小时、环境搭几天-_-||

许多地方与伪分布式步骤相同,多打快照防止崩溃。简略记录一下以防哪天又崩了方便随时复原

一、搭建准备

1.1 总体流程

  • 准备3台客户机(关闭防火墙、静态ip、主机名称)
  • 安装JDK
  • 配置环境变量
  • 安装Hadoop
  • 配置集群
  • 配置ssh
  • 群起并测试集群

1.2 集群部署规划

master(192.168.1.100) slave1(192.168.1.101) slave2(192.168.1.102)
HDFS NameNode DataNode DataNode SecondaryNameNode DataNode

二、步骤流程

2.1 软件安装

1、在master机器的/opt/目录下床架两个文件夹 /opt/apps 用于安装软件 /opt/soft 用于存放安装包

1
[root@master ~]# mkdir /opt/soft /opt/apps

2、将jdk和Hadoop的安装包上传到master机器的/opt/soft目录下。文件的上传需要用到crt工具的sftp功能。alt+P组合键打开sftp界面

1
sftp>cd /opt/soft

3、解压jdk和hadoop到/opt/apps目录下

1
2
3
[root@master soft]# cd /opt/soft/
[root@master soft]# tar -zxvf jdk-8u241-linux-x64.tar.gz -C /opt/apps/
[root@master soft]# tar -zxvf hadoop-2.9.2.tar.gz -C /opt/apps/

4、将Hadoop安装目录和jdk安装目录配置到环境变量中

​ (1)首先进入到jdk的安装目录/opt/apps下

1
2
[root@master soft]# cd /opt/apps
[root@master apps]# cd jdk1.8.0_241/

​ (2)将当前目录打印到控制台,然后用鼠标选中复制(crt中,选中就是复制)

1
2
[root@master jdk1.8.0_241]# pwd
/opt/apps/jdk1.8.0_241

​ (3)使用vim打开/opt/profile文件

1
[root@master jdk1.8.0_241]# vim /etc/profile

​ 按下G键,将光标移动到最后一行。然后在按下o键盘换行并进入编辑模式,在最后一行的下面添加一下的内容:

1
2
export JAVA_HOME=/opt/apps/jdk1.8.0_241
export PATH=$PATH:$JAVA_HOME/bin

​ 按下esc键,回到正常模式。按下:输入wq保存并退出。

​ 刷新环境变量

1
[root@master jdk1.8.0_241]# source /etc/profile

​ (4)hadoop的环境变量和jdk环境变量的配置的操作手法完全一样。需要在/opt/profile文件的最后一行添加如下内容:

1
2
export HADOOP_HOME=/opt/apps/hadoop-2.9.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

​ 然后保存退出(:wq),不要忘了再次刷新环境变量

1
[root@master hadoop-2.9.2]# source /etc/profile

​ (5)看一看装好没有

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@master hadoop-2.9.2]# java -version 
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
[root@master hadoop-2.9.2]#
[root@master hadoop-2.9.2]# hadoop version
Hadoop 2.9.2
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r 826afbeae31ca687bc2f8471dc841b66ed2c6704
Compiled by ajisaka on 2018-11-13T12:42Z
Compiled with protoc 2.5.0
From source with checksum 3a9939967262218aa556c684d107985
This command was run using /opt/apps/hadoop-2.9.2/share/hadoop/common/hadoop-common-2.9.2.jar

2.2 Hadoop配置

在配置hadoop的配置文件之前,一定要学会找到hadoop的配置文件在哪儿。Hadoop的配置文件在安装目录下的etc/Hadoop/目录下。我的安装目录是/opt/apps/ hadoop-2.9.2,那么其配置文件的完整目录就应该是/opt/apps/ hadoop-2.9.2/etc/Hadoop/,我们在进行配置的时候首先就要进入到这个目录下

1
[root@master hadoop-2.9.2]# cd /opt/apps/hadoop-2.9.2/etc/hadoop/

使用ll命令查看hadoop的配置文件有哪些

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
[root@master hadoop]# ll
总用量 160
-rw-r--r--. 1 501 dialout 7861 11月 13 2018 capacity-scheduler.xml
-rw-r--r--. 1 501 dialout 1335 11月 13 2018 configuration.xsl
-rw-r--r--. 1 501 dialout 1211 11月 13 2018 container-executor.cfg
-rw-r--r--. 1 501 dialout 774 11月 13 2018 core-site.xml
-rw-r--r--. 1 501 dialout 4133 11月 13 2018 hadoop-env.cmd
-rw-r--r--. 1 501 dialout 4969 11月 13 2018 hadoop-env.sh
-rw-r--r--. 1 501 dialout 2598 11月 13 2018 hadoop-metrics2.properties
-rw-r--r--. 1 501 dialout 2490 11月 13 2018 hadoop-metrics.properties
-rw-r--r--. 1 501 dialout 10206 11月 13 2018 hadoop-policy.xml
-rw-r--r--. 1 501 dialout 775 11月 13 2018 hdfs-site.xml
-rw-r--r--. 1 501 dialout 2230 11月 13 2018 httpfs-env.sh
-rw-r--r--. 1 501 dialout 1657 11月 13 2018 httpfs-log4j.properties
-rw-r--r--. 1 501 dialout 21 11月 13 2018 httpfs-signature.secret
-rw-r--r--. 1 501 dialout 620 11月 13 2018 httpfs-site.xml
-rw-r--r--. 1 501 dialout 3518 11月 13 2018 kms-acls.xml
-rw-r--r--. 1 501 dialout 3139 11月 13 2018 kms-env.sh
-rw-r--r--. 1 501 dialout 1788 11月 13 2018 kms-log4j.properties
-rw-r--r--. 1 501 dialout 5939 11月 13 2018 kms-site.xml
-rw-r--r--. 1 501 dialout 14016 11月 13 2018 log4j.properties
-rw-r--r--. 1 501 dialout 1076 11月 13 2018 mapred-env.cmd
-rw-r--r--. 1 501 dialout 1507 11月 13 2018 mapred-env.sh
-rw-r--r--. 1 501 dialout 4113 11月 13 2018 mapred-queues.xml.template
-rw-r--r--. 1 501 dialout 758 11月 13 2018 mapred-site.xml.template
-rw-r--r--. 1 501 dialout 10 11月 13 2018 slaves
-rw-r--r--. 1 501 dialout 2316 11月 13 2018 ssl-client.xml.example
-rw-r--r--. 1 501 dialout 2697 11月 13 2018 ssl-server.xml.example
-rw-r--r--. 1 501 dialout 2250 11月 13 2018 yarn-env.cmd
-rw-r--r--. 1 501 dialout 4876 11月 13 2018 yarn-env.sh
-rw-r--r--. 1 501 dialout 690 11月 13 2018 yarn-site.xml

(1)配置hadoop-env.sh

1
[root@master hadoop]# vim hadoop-env.sh

找到如下一行

1
2
# The java implementation to use.
export JAVA_HOME=${JAVA_HOME}

将JAVA_HOME更改成为自己的安装目录

1
export JAVA_HOME=/opt/apps/jdk1.8.0_241

(2)配置core-site.xml

1
[root@master hadoop]# vim core-site.xml

找到这一对标签,在这一对标签中输入如下的配置信息:

1
2
3
4
5
6
7
8
9
10
11
12
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/apps/hadoop-2.9.2/data/tmp</value>
</property>

保存并退出 ZZ

(3)配置hdfs-site.xml

1
[root@master hadoop]# vim hdfs-site.xml

在该文件的一对configuration>标签中,编写如下配置,然后保存退出

1
2
3
4
5
6
7
8
9
10
11
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave2:50090</value>
</property>

(4)配置mapred-site.xml

需要先将mapred-site.xml.template这个模板文件复制一根重命名为mapred-site.xml

1
[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml

然后打开mapred-site.xml文件

1
[root@master hadoop]# vim mapred-site.xml

在该文件的一对configuration>标签中,编写如下配置,然后保存退出

1
2
3
4
5
<!-- 指定mr运行在yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

(5)配置yarn-site.xml

1
[root@master hadoop]# vim yarn-site.xml

在该文件的一对configuration>标签中,编写如下配置,然后保存退出

1
2
3
4
5
6
7
8
9
10
<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>

(6)配置slaves文件

1
[root@master hadoop]# vim slaves

在文件的后面添加如下的内容

1
2
3
master
slave1
slave2

2.3 配置master到slave1和slave2的免密登陆

1
[root@master hadoop]# ssh-keygen

然后三次回车

将公钥拷贝到包括自身在内的三台机器上

1
2
3
4
[root@master hadoop]# ssh-copy-id master
root@master's password:
[root@master hadoop]# ssh-copy-id slave1
[root@master hadoop]# ssh-copy-id slave2

2.4 将安装好的软件从master传到slave

到slave1

1
2
[root@master hadoop]# scp /etc/profile slave1:/etc/
[root@master hadoop]# scp -r /opt/apps slave1:/opt/

到slave2

1
2
[root@master share]# scp /etc/profile slave2:/etc/
[root@master share]# scp -r /opt/apps/ slave2:/opt/

使用crt登陆slave1和slave2,并且刷新环境变量

1
2
[root@slave1 ~]# source /etc/profile
[root@slave2 ~]# source /etc/profile

2.5 启动测试

在master上格式化namenode

1
[root@master share]# hadoop namenode –format

启动hadfs(使用群起的方式启动)

在master机器上

1
[root@master hadoop]# start-dfs.sh

检查进程都在不在

1
2
3
4
[root@master hadoop]# jps
25652 DataNode
25560 NameNode
25901 Jps

打开浏览器,在地址栏中输入:192.168.1.100:50070看看Overview都有没有什么问题