配置成功,jps显示如下:
HDFS YARN
hadoop101 NameNode+DataNode NodeManager
hadoop102 DataNode+SecondaryNameNode NodeManager
hadoop103 DataNode NodeManager+ResourceManager
虚拟机中的子网地址为:192.168.25.0
根据虚拟机中的子网地址,修改服务器hadoop101的IP地址,可以为192.168.25.x(x可以是0-254任意一个数字)
只对主服务器hadoop101进行设置、配置(目前就只有1台服务器hadoop101):
一、IP修改
1:
hadoop101 IP修改:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改 BOOTPROTO="static"
添加:
IPADDR=192.168.25.101
GATEWAY=192.168.25.2
NDS1=192.168.25.2
DNS2=8.8.8.8
2主机名称修改:
vi /etc/hostname
添加 hadoop101
3:
vi /etc/hosts
添加
192.168.25.101 hadoop101
192.168.25.102 hadoop102
192.168.25.103 hadoop103
4:
重启
service network restart
5、重新启动服务器,命令: reboot
6.在win10中,在路径C:\Windows\System32\drivers\etc\hosts,在hosts文件中添加:
192.168.25.101 hadoop101
192.168.25.102 hadoop102
192.168.25.103 hadoop103
这时可以打开命令提示符窗口执行以下命令:
ipconfig /displaydns
//命令让该记录不用重启而立即生效
ipconfig /flushdns
二、jdk 解压
将文件 jdk-8u301-linux-x64.tar.gz和hadoop-3.1.2.tar.gz上传到/opt/software_2021(software_2021文件夹是自己建立的)
jdk-8u301-linux-x64.tar.gz和hadoop-3.1.2.tar.gz解压到文件夹 /usr/lib/JDK_2021(JDK_2021文件夹是自己建立的)
读写权限:
chmod 777 software_2021
chmod 777 JDK_2021
解压:
tar -xzvf jdk-8u301-linux-x64.tar.gz -C /usr/lib/JDK_2021
tar -xzvf hadoop-3.1.2.tar.gz -C /usr/lib/JDK_2021
1、配置环境变量:
vi /etc/profile
(2)编辑模式下,在结尾或开头添加如下:
#JAVA_HOME
export JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#HADOOP_HOME
export HADOOP_HOME=/usr/lib/JDK_2021/hadoop-3.1.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
#hadoop格式化异常处理代码
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
2、更新
source /etc/profile
hadoop version
java -version
pwd 显示当前你在什么位置
(1)bin 目录:存放对 Hadoop 相关服务(hdfs,yarn,mapred)进行操作的脚本
(2)etc 目录:Hadoop 的配置文件目录,存放 Hadoop 的配置文件
(3)lib 目录:存放 Hadoop 的本地库(对数据进行压缩解压缩功能)
(4)sbin 目录:存放启动或停止 Hadoop 相关服务的脚本
(5)share 目录:存放 Hadoop 的依赖 jar 包、文档、和官方案例
三、关闭防火墙
关闭防火墙命令
systemctl stop firewalld.service
设置主节点上禁止开机启动防火墙
systemctl disable firewalld.service
查看防火墙状态
sudo firewall-cmd --state
四、SSH安装授权
ssh 安装 授权
https://www.jb51.net/article/137194.htm
CentOS 默认已安装了 SSH client、SSH server,可打开终端执行如下命令进行检验:
rpm -qa | grep ssh
安装ssh:
yum install openssh-clients
yum install openssh-server
命令测试一下 SSH 是否可用:
ssh localhost
进入ssh命令
cd /root/.ssh
生成公匙的命令 ssh-keygen -t rsa
显示: 私匙 id_rsa 公匙 id_rsa.pub
新建 vi authorized_keys
# 加入授权
cat id_rsa.pub >> authorized_keys
# 修改文件权限
chmod 600 ./authorized_keys
登录ssh命令 (不需要密码则成功)
ssh localhost
退出ssh命令
exit
五、CentOS 7 + Hadoop3.1.2 搭建分布式集群hadoop配置:
参考 https://www.cnblogs.com/thousfeet/p/8618696.html
修改文件:
1:hadoop-env.sh ——>jdk
2:yarn-env.sh ——>jdk
3:core-site.xml
4:hdfs-site.xml
5:mapred-site.xml
6:yarn-site.xml
hadoop配置路径为 :
1、core-site.xml文件配置: vim core-site.xml
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/core-site.xml
<configuration>
<!--指定HDFS Master(namenode)的通信地址,默认端口 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:8020</value>
</property>
<property>
<!--指定hadoop运行时产生文件的存储路径 -->
<name>hadoop.tmp.dir</name>
<value>/usr/lib/JDK_2021/hadoop-3.1.2/data</value>
</property>
</configuration>
2、hdfs-site.xml文件配置:vim hdfs-site.xml
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/hdfs-site.xml
<configuration>
<!-- nn web端访问地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop101:9870</value>
</property>
<!-- 2nn web端访问地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:9868</value>
</property>
</configuration>
3、mapred-site.xml文件配置:vim mapred-site.xml
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/mapred-site.xml
<configuration>
<property>
<!--指定mapreduce运行在Yarn上 -->
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4、yarn-site.xml文件配置:vim yarn-site.xml
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/yarn-site.xml
<configuration>
<!--NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定ResourceManger的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop102</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
5、修改hadoop-env.sh,配置java jdk路径,大概在27行配置,如下:
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/hadoop-env.sh
添加如下代码:
export JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301
export HADOOP_HOME=/usr/lib/JDK_2021/hadoop-3.1.2
6、yarn-env.sh中
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/yarn-env.sh
添加如下代码:
export JAVA_HOME=/usr/lib/JDK_2021/jdk1.8.0_301
7、配置workers ,路径是:cd /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop
vi /usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop/workers
配置内容为:
hadoop101
hadoop102
hadoop103
xiaoye11
xiaoye12
xiaoye13
路径:
/usr/lib/JDK_2021/hadoop-3.1.2
/usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop
六、利用服务器hadoop101,分别克隆hadoop102,hadoop103
参考 https://www.cnblogs.com/frankdeng/p/9027037.html
https://blog.csdn.net/weixin_43160263/article/details/88074318
hadoop102,hadoop103克隆成功以后,需要对他们的IP和主机名称进行修改:
(1) hadoop102的 IP修改
1:
IP的修改:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改 IPADDR=192.168.25.102
2、主机名称修改:
vi /etc/hostname
修改为 hadoop102
3、重启网络命令
service network restart
4、重启hadoop102,
命令: reboot
(2) hadoop103的 IP修改
1:
IP的修改:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
修改 IPADDR=192.168.25.103
2、主机名称修改:
vi /etc/hostname
修改 hadoop102
3、重启网络命令
service network restart
4、重启hadoop103,
命令: reboot
*****这时就可以使用XShell对三台服务器hadoop101、hadoop102,hadoop103进行远程操控(方便),也可以直接在各自
系统中操作。
七、保证hadoop101、hadoop102,hadoop103三台同时都在线,给hadoop102,hadoop103 SSH授权
(1)、对hadoop102进行操作:
1、进入ssh命令 : cd ~/.ssh/
2、生成公匙的命令: ssh-keygen -t rsa
3、加入授权命令: cat id_rsa.pub >> authorized_keys
4、修改文件权限命令: chmod 600 ./authorized_keys
(2)、对hadoop103进行操作:
1、进入ssh命令 : cd ~/.ssh/
2、生成公匙的命令: ssh-keygen -t rsa
3、加入授权命令: cat id_rsa.pub >> authorized_keys
4、修改文件权限命令: chmod 600 ./authorized_keys
(3)、对hadoop102进行操作:
1、进入ssh命令 : cd ~/.ssh/
2、执行命令: ssh-copy-id hadoop101
ssh-copy-id hadoop103
(4)、对hadoop103进行操作:
1、进入ssh命令 : cd ~/.ssh/
2、执行命令: ssh-copy-id hadoop101
ssh-copy-id hadoop102
(5)、hadoop101、hadoop102,hadoop103相互之间即可ssh免密
****************如果服务器hadoop101在克隆hadoop102,hadoop103以后步骤五(hadoop配置文件)做了修改,则需要执行步骤八,步骤五没做修改,就不需要执行步骤八。
八、建立分发xsync脚本:
1、进入桌面路径为:vi /usr/local/bin/xsync
在usr/local/bin目录下面创建文件xsyn,内容如下:
#!/bin/bash
## 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args...;
exit;
fi
# 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
# 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
# 获取当前用户名称
user=`whoami`
# 循环
for((host=1; host<=3; host++)); do
echo $pdir/$fname $user@hadoop10$host:$pdir
echo ==================hadoop10$host==================
rsync -rvl $pdir/$fname $user@hadoop10$host:$pdir
done
#备注:这里的ni对应自己主机名,需要做相应修改。另外,for循环中的host的边界值
1. xsync文件需要权限,执行命令 chmod 777 /usr/local/bin/xsync
2、调用xsync脚本,将 hadoop101 的/usr/lib/JDK_2021/hadoop-3.1.2/etc/hadoop文件夹下面
hadoop-env.sh、yarn-env.sh 、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml已经修改的
配置文件分发给hadoop102、hadoop103服务器,在hadoop101中操作;
cd /usr/lib/JDK_2021/hadoop-3.1.2/etc
1、进入/usr/lib/JDK_2021/hadoop-3.1.2/etc文件夹下,执行命令:xsync hadoop/
2、即可分发成功
九、初始化集群:
进入cd /usr/lib/JDK_2021/hadoop-3.1.2
格式化namenode, [root@xiaoye004 hadoop-3.1.2]#
1、命令:hdfs namenode -format
2、启动集群
命令: cd /usr/lib/JDK_2021/hadoop-3.1.2
hadoop101主机hadoop启动命令:sbin/start-dfs.sh
hadoop102主机hadoop启动命令:sbin/start-yarn.sh
hadoop101主机停止命令: sbin/stop-all.sh
hadoop102主机停止命令:sbin/stop-all.sh
启动页面
http://192.168.25.101:9870
http://192.168.25.102:8088
配置最终结果(配置成功),执行jps命令:
hadoop101(主):
[root@hadoop101 hadoop-3.1.2]# jps
4340 Jps
4232 NodeManager
3738 NameNode
3885 DataNode
hadoop102(从):
[root@hadoop102 hadoop-3.1.2]# jps
5362 Jps
4867 ResourceManager
5033 NodeManager
4767 DataNode
hadoop103(从):
[root@hadoop103 hadoop-3.1.2]# jps
3344 NodeManager
3489 Jps
3111 DataNode
3230 SecondaryNameNode
服务器参数:
路径:/usr/lib/JDK_2021/hadoop-3.1.2/data/dfs/data/current
异常解决:
两种解决ERROR: Attempting to operate on hdfs namenode as root的方法
https://www.cnblogs.com/nihilwater/p/13849396.html
******hadoop 异常处理1-4步:
1.停止进程
sbin/stop-all.sh
2.删除3台集群中hadoop-3.1.2文件夹中的data文件夹和logs文件夹
cd /usr/lib/JDK_2021/hadoop-3.1.2
rm -rf data/ logs/
3、格式化namenode, [root@xiaoye004 hadoop-3.1.2]#
命令:hdfs namenode -format
4、启动集群
命令: cd /usr/lib/JDK_2021/hadoop-3.1.2
hadoop101主机hadoop启动命令:sbin/start-dfs.sh
hadoop102主机hadoop启动命令:sbin/start-yarn.sh
hadoop101主机停止命令: sbin/stop-all.sh
hadoop102主机停止命令:sbin/stop-all.sh