本教程是基于CentOS-7-x86_64的Hadoop完全分布式搭建
1、搭建前的准备
1)CentOS-7虚拟机3台(hadoop1、hadoop2、hadoop3)
2)hadoop-3.3.0包
3)jdk-8u144-linux-x64包
2、整体部署
hadoop1 | hadoop2 | hadoop3 | |
HDFS | NameNode DataNode |
DataNode | SecondaryNameNode DataNode |
YARN | NodeManager | ResourceManager NodeManager |
NodeManager |
3、基本步骤
1)修改3台虚拟机的名称
2)关闭、禁止开机自启防火墙
3)配置静态ip
4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)
5)配置免密登录(hadoop1、hadoop2、hadoop3)
6)安装JDK及配置相应环境变量(hadoop1)
7)安装Hadoop及配置相应环境变量(hadoop1)
8)修改配置文件(hadoop1)
9)拷贝(hadoop1-->hadoop2,hadoop1-->hadoop3)
10)远程同步/etc/profile文件(hadoop1)
11)格式化NameNode
12)启动和关闭Hadoop集群
13)通过浏览器访问Hadoop集群
14)测试集群,上传文件
4、详细步骤操作
1)修改3台虚拟机的名称
#hostname #查看主机名称
hostnamectl set-hostname 主机名 #修改主机名称
#reboot #重启虚拟机
【注】:修改主机名称后需重启才能生效
2)关闭、禁止开机自启防火墙
#systemctl status firewalld #查看防火墙状态 #systemctl stop firewalld #关闭防火墙 #systemctl disable firewalld #关闭防火墙开机自启 #vim /etc/selinux/config #修改selinux配置文件
SELINUX=enforcing 修改为 SELINUX=disabled
3)配置静态ip
#cd /etc/sysconfig/network-scripts/ #vim ifcfg-ens33
BOOTPROTO=none 改为 BOOTPROTO=static
IPADDR也进行修改
【注】:因为3台虚拟机都是克隆完成的,ip地址一致,故在此对ip进行修改
4)修改/etc/hosts文件(hadoop1、hadoop2、hadoop3)
#vim /etc/hosts
192.168.150.14 hadoop1
192.168.150.15 hadoop2
192.168.150.16 hadoop3
#reboot
5)配置免密登录(hadoop1、hadoop2、hadoop3)
#ssh-keygen -t rsa #生成ssh密钥,不提示输入密码
三次回车键
#ssh-copy-id hadoop1 #ssh-copy-id hadoop2 #ssh-copy-id hadoop3 #将密钥拷贝到各节点 #ssh hadoop1 #ssh hadoop2 #ssh hadoop3 #测试免密登录
6)安装JDK及配置相应环境变量(hadoop1)
#cd /opt/ #mkdir modules #创建modules文件夹 #mkdir tar_packages #创建tar_packages文件夹
#cd tar_packages/ #进入tar_packages文件夹
将hadoop-3.3.0.tar.gz和jdk-8u144-linux-x64.tar.gz包导入tar_packages文件夹中
导入方法较多,可用Xshell,可用命令wget xxxxx下载,亦可命令rz导入
#tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/modules/ #将压缩包解压到/opt/modules/文件夹下
#cd /opt/modules/jdk1.8.0_144/
#pwd
/opt/modules/jdk1.8.0_144 #复制此路径
#vim /etc/profile/ #修改配置文件,加入环境变量
在文件末尾加入
#JAVA_HOME
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#source /etc/profile #立即生效
#java
#javac
#javadoc #测试java环境
7)安装Hadoop及配置相应环境变量(hadoop1)
#cd /opt/tar_packages/ #tar -zxvf hadoop-3.3.0.tar.gz -C /opt/modules #将压缩包解压到/opt/modules/文件夹下 #cd /opt/modules/hadoop-3.3.0 #pwd
/opt/modules/hadoop-3.3.0 #复制此路径
#vim /etc/profile #修改配置文件,加入环境变量
在文件末尾加入
#HADOOP_HOME
export HADOOP_HOME=/opt/modules/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#source /etc/profile #立即生效 #hadoop #测试hadoop
8)修改配置文件(hadoop1)
1、修改hadoop-env.sh文件
#cd /opt/modules/hadoop-3.3.0/etc/hadoop #vim hadoop-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
2、修改yarn-env.sh文件
#vim yarn-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
3、修改mapred-env.sh文件
#vim mapred-env.sh
在文件中加入export JAVA_HOME=/opt/modules/jdk1.8.0_144
4、修改core-site.xml
#vim core-site.xml
在<configuration>
</configuration>间加入
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop1:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/modules/hadoop-3.3.0/data/tmp</value>
</property>
5、修改hdfs-site.xml文件
# vim hdfs-site.xml
在<configuration>
</configuration>间加入
<!-- 指定Hadoop副本个数 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop3:50090</value>
</property>
6、修改yarn-site.xml文件
#vim yarn-site.xml
在<configuration>
</configuration>间加入
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop2</value>
</property>
7、修改mapred-site.xml文件
#vim mapred-site.xml
在<configuration>
</configuration>间加入
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
8、修改workers文件
#vim workers
修改为3个主机名称
hadoop1
hadoop2
hadoop3
【注】:我这里的hadoop-3.3.0版本文件名为workers,hadoop-2.x.x版本文件名为slaves
9)拷贝(hadoop1-->hadoop2,hadoop1-->hadoop3)
#scp -r /opt/modules/ root@hadoop2:/opt/ #scp -r /opt/modules/ root@hadoop3:/opt/ #将hadoop1主节点下opt目录下的modules文件夹分别拷贝到hadoop2和hadoop3节点的opt目录下
10)远程同步/etc/profile文件(hadoop1)
#rsync -rvl /etc/profile root@hadoop2:/etc/profile #rsync -rvl /etc/profile root@hadoop3:/etc/profile #远程同步,将hadoop1主节点上的配置文件分别拷贝到hadoop2和hadoop3节点
#tail /etc/profile #显示已修改的配置文件(/etc/profile)内容,查看是否同步成功
#source /etc/profile #立即生效
#javadoc #测试
#hadoop #测试
#cat /opt/modules/hadoop-3.3.0/etc/hadoop/workers #查看workers文件内容是否一致
11)格式化NameNode
cd /opt/modules/hdoop-3.3.0#hadoop namenode -format #格式化NameNode
12)启动和关闭Hadoop集群
#启动集群
#cd /opt/modules/hadoop-3.3.0/sbin/ #start-dfs.sh
先在hadoop1节点下执行上述命令start-dfs.sh
#cd /opt/modules/hadoop-3.3.0/sbin/ #start-yarn.sh
等hadoop1主节点下start-dfs.sh命令执行结束后,在hadoop2节点下执行命令start-yarn.sh
#jps #hadoop1、hadoop2、hadoop3一起查看启动的进程
#关闭集群
#stop-yarn.sh
先在hadoop2节点下执行命令stop-yarn.sh
#stop-dfs.sh
等hadoop2节点下stop-yarn.sh命令执行结束后,在hadoop1主节点下执行命令stop-dfs.sh
【注】:启动集群和关闭集群顺序是相反的,启动时先hadoop1,关闭时后hadoop1
【注】:因hadoop版本不同,hadoop-2.x.x下启动正常,hadoop-3.x.x下可能出现如下错误:
[root@hadoop1 sbin]# start-dfs.sh Starting namenodes on [hadoop1] ERROR: Attempting to operate on hdfs namenode as root ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation. Starting datanodes ERROR: Attempting to operate on hdfs datanode as root ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation. Starting secondary namenodes [hadoop3] ERROR: Attempting to operate on hdfs secondarynamenode as root ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation. [root@hadoop1 sbin]# start-dfs.sh WARNING: HADOOP_SECURE_DN_USER has been replaced by HDFS_DATANODE_SECURE_USER. Using value of HADOOP_SECURE_DN_USER.
解决办法为:在start-dfs.sh和stop-dfs.sh文件首部加入如下部分
1 HDFS_DATANODE_USER=root 2 HDFS_DATANODE_SECURE_USER=hdfs 3 HDFS_NAMENODE_USER=root 4 HDFS_SECONDARYNAMENODE_USER=root
在start-yarn.sh和stop-yarn.sh文件首部加入如下部分
1 YARN_RESOURCEMANAGER_USER=root 2 HADOOP_SECURE_DN_USER=yarn 3 YARN_NODEMANAGER_USER=root
这样这个问题就解决了,记得看清楚自己hadoop的版本号
13)通过浏览器访问Hadoop集群
在浏览器输入:192.168.150.14(主节点ip):9870访问Hadoop文件系统
【注】:hadoop-3.x.x,服务器端口改为了9870,并不是原来的50070,看清自己的Hadoop版本
可在Windows下配置主机节点映射,配置完成后即可在浏览器输入:hadoop1(主节点名称):9870访问Hadoop文件系统
具体映射配置:在C:\Windows\System32\drivers\etc\hosts文件后,加入与在虚拟机/etc/hosts配置一致的内容,即:
#192.168.150.14 hadoop1 #192.168.150.15 hadoop2 #192.168.150.16 hadoop3
14)测试集群,上传文件
#hadoop fs -mkdir -p /root/ #创建root目录 #hadoop fs -put /opt/tar_packages/jdk-8u144-linux-x64.tar.gz /root/ #将/opt/tar_packages/目录下的jdk-8u144-linux-x64.tar.gz压缩包上传到刚才创建的root目录下
至此,分布式集群搭建完成!
PS:搭建过程中需要的工具我整理了一下,需要的请自取哦!点这里(提取码:u240)
如果搭建过程遇到了什么难以解决的问题,欢迎留言,毕竟多一个人一起百度可能会快一点!