一、搭建流程
- 以三台服务器为例,进行集群搭建。三台服务器分别为node1,node2,node3.
- 首先进行HDFS集群的搭建,然后进行YARN集群的搭建(不要问我hadoop不是有三大组件组成嘛,为啥没有mr集群?答:mr是一个分布式计算框架,没有集群一说哦)
- 本文搭建为参考代码,在进行自己hadoop集群的搭建过程中,以自己的编程习惯,和命名方式,来修改路径相关的代码即可。
二、集群搭建
2.1 集群搭建和基础环境准备
- 修改Hosts映射
vim /etc/hosts
- 关闭防火墙
systemctl stop firewalld.service # 关闭防火墙
systemctl disable firewalld.service # 禁止自动启动
- 设置ssh免密登陆
在三台机器上执行:ssh-keygen -t rsa 回车三次
然后在三台机器上在执行:
ssh-copy-id node1
ssh-copy-id node2
ssh-copy-id node3
输入对应的密码即可
- 设置集群时间同步
这一步骤省略。因博主采用的是类似于云服务器集群,集群时间同步步骤省略。各位在使用虚拟机进行集群配置的时候可以百度一下,你就知道。
- jdk的安装
1. 解压文件 : tar -zxvf jdk-8u11-linux-x64.tar.gz -C /app
2. 配置环境变量
输入:vim /etc/profile
填入:
export JAVA_HOME=/app/jdk1.8.0_11
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar
不要忘记 : source /etc/profile
3. 将JDK和配置文件发送给另外两个服务器
# 发送JDK
scp -r /app/jdk1.8.0_11/ slave2:/app
# 发送配置文件
scp /etc/profile slave2:/etc/
# 在另外两台服务器上:source /etc/profile
- Hadoop的安装和配置
下载安装包,解压,移到相关文件夹下,修改名字,配置环境变量。可以参考JDK的安装配置即可
注意:不要忘记在一台服务器上面配置完成之后,发送至另外的服务器上面。(此外另外的几台服务器,不要忘记source /etc/profile,才会生效环境变量哦)
hadoop的配置文件
- 两个env.sh文件主要是配置JDK的位置
- 一共需要修改六个配置文件,如上图所示
- hadoop-env.sh修改
export JAVA_HOME=/app/jdk1.8.0_171
- yarn-env.sh修改
export JAVA_HOME=/app/jdk1.8.0_171
- core-site.xml修改
这个配置文件主要修改 :
fs.default.name : hdfs://localhost:9000
hadoop.tmp.dir : /usr/hadoop/tmp
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/hadoop/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
</configuration>
- hdfs-site.xml文件配置
1.设置hadoop中hdfs的name文件夹的位置
2.设置hdfs中data文件夹的位置
3.设置replication 副本数量
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/hadoop/hdfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/hadoop/hdfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
- mapred-site.xml 文件修改
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
- yarn-site.xml 文件修改
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
- 创建文件夹
我们在配置文件中配置了一些文件夹路径,现在我们来创建他们,在/usr/hadoop/目录下使用hadoop用户操作,建立tmp、hdfs/name、hdfs/data目录,执行如下命令:
mkdir -p /usr/hadoop/tmp
mkdir /usr/hadoop/hdfs
mkdir /usr/hadoop/hdfs/data
mkdir /usr/hadoop/hdfs/name
- 将Hadoop添加到环境变量中
以自己hadoop的安装路径为准
最后使修改生效:source /etc/profile
- 进行格式化
在使用 Hadoop 之前我们需要格式化一些 hadoop 的基本信息
使用如下命令:
hadoop namenode -format
2.2 集群的启动
接下来启动 Hadoop,在/hadoop3.1/sbin路径下:
cd /app/hadoop3.1/sbin
将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数:
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
再次启动start-dfs.sh,最后输入命令 jps 验证,出现如下界面代表启动成功
2.3 发送配置好的Hadoop到集群
- 发送 Hadoop 至另外两台虚拟机
scp -r /app/hadoop3.1 root@slave1:/app
scp -r /app/hadoop3.1 root@slave2:/app
- 发送配置文件至另外两台虚拟机
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
- 不要忘记在另外两台上面使用命令让配置文件生效
source /etc/profile