在完成虚拟机的创建后,进行主机名称修改:
#修改配置文件,将内容改为 master,保存退出
vi /etc/hostname #将里面localhost删除进行改名
[root@host ~]$ vi /etc/sysconfig/network 编辑,i 键插入
NETWORKING=yes
HOSTNAME=master 修改为新名
:wq ESC 退出插入退出并保存
[root@bogon ~]$ reboot
关闭防火墙,关闭防火墙开机自启:
#关闭防火墙
[root@hadoop100 ~]$ systemctl stop firewalld
#设置关闭防火墙开机自启
[root@hadoop100 ~]$ systemctl disable firewalld.service
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens33
#这里说一下需要修改的位置:
#修改
BOOTPROTO=static #这里 dhcp 换成 static
ONBOOT=yes #将 no 换成 yes
#新增
IPADDR=192.168.222.171 #静态 IP
GATEWAY=192.168.222.2 #默认网关
NETMASK=255.255.255.0 #子网掩码DNS1=192.168.222.2#视实际情况而定,最好设置为网关
DNS2=8.8.8.8
保存退出后,重启网络服务,执行下面的命令 :
service network restart
#看到 Restarting network (via systemctl): [ OK ] 为成功
关防火墙执行 systemctl stop firewalld
查看:ping www.baidu.com 看是否 ping 通
注:Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于 RHEL、CentOS 和 Scientific Linux。相当于是一个软件仓库,大多数 rpm 包在官方 repository 中是找不到的)
[root@hadoop100 ~]$ yum install -y epel-release
[root@hadoop100 ~]$ yum install -y net-tools
[root@hadoop100 ~]$ yum install -y vim
用于存放win传输来的tar安装包:
mkdir -p /opt/software
将安装包进行解压到此目录:
mkdir -p /opt/module
执行命令:vi /etc/hosts
克隆完成后,首先修改网络配置:
vi /etc/sysconfig/network-scripts/ifcfg-ens33
需要修改位置 IPADDR 和 DNS1 两个位置,修改完成后生效:
service network restart
记得关闭防火墙:
systemctl stop firewalld
最后测试 ping www.baidu.com。
再进行虚拟机名称的修改:vi /etc/hostname
之后 reboot 重启虚拟机。在此完成后即可再 finalshell 或者Xshell里面进行连接。
安装 NTP 包(三个机器都要安装):
yum install -y ntp
之后在 bigdata2023master 做为 ntp 服务器,只修改此服务器 ntp 配置文件:
vi /etc/ntp.conf
末尾追加:
server 127.0.0.1
fudge 127.0.0.1 stratum 10
重启时间服务:
/bin/systemctl restart ntpd.service
稍等一会在 slave1 和 slave2 上执行: ntpdate bigdata2023master 出现如下图所示即表示成功。
若出现如下图错误:
您收到此错误消息的原因是由于 xntpd 已经绑定到了该 Socket。运行 ntpdate 时,它会首先进行广播,然后侦听端口 123。如果 xntpd 正在运行,而有一个进程已经在侦听该端口了,则会使 ntpdate 无法在上面运行。运行下列命令,即可找出 xntpd 的 PID
按照以下绿色标记顺序快速执行
[root@SZDX-DNS-1 bin]# ps -ef|grep xntpd
root 124185 6192 0 15:49 pts/1 00:00:00 grep xntpd
可惜没有找到 pid。
使用 lsof –i:123
没有 lsof 命令的话:yum install -y lsof
lsof -i:123
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ntpd 124171 ntp 16u IPv4 420557 0t0 UDP *:ntp
ntpd 124171 ntp 17u IPv6 420558 0t0 UDP *:ntp
[root@spark1 bin]# kill -9 12417
[root@spark11 bin]# ntpdate 192.168.100.120
13 Apr 09:08:36 ntpdate[124200]: step time server 192.168.100.120 offset -24096.422190 sec
[root@spark1 bin]# date
清除 (Kill) 该进程,然后尝试再次与 ntp 服务器进行同步。此时您不应该收到此错误消息。
请注意,如果您尝试与之同步的服务器没有运行 xntpd,则会收到下列错误消息:
ntpdate[12573]: no server suitable for synchronization found
出现这种情况的原因是,如果您想使用另一个服务器的时间,该服务器必须已经进行了自身同步。
如果不同步 master 的话,可以同步到网络时间 ntpdate -u cn.pool.ntp.org
1.生成ssh包(所有机器都要执行):ssh-keygen -t dsa
2.拷贝文件(在除去master机器上的其他机器上)
cd /root/.ssh
ls
在这个目录下执行
scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave1.pub
scp id_dsa.pub root@bigdata2023master:/root/.ssh/bigdata2023slave2.pub
3.合并文件(在master机器上)
cat id_dsa.pub bigdata2023slave1.pub bigdata2023slave2.pub >>authorized_keys
4.从master分发公钥
scp authorized_keys root@bigdata2023slave1:~/.ssh
scp authorized_keys root@bigdata2023slave2:~/.ssh
5.进行测试
在master上 ssh bigdata2023slave1 和 ssh bigdata2023slave2
在每台机器上对其他机器测试 ssh 【机器名】
6.退出登录
可以用exit退出远程登录
rsync主要用于备份和镜像。具有速度快、避免复制相同内容和支持符号链接的优点。
rsync和scp区别:用rsync做文件的复制要比scp的速度快,
rsync只对差异文件做更新,scp是把所有文件都复制过去。
安装rsync(三台机器都要安装):
yum install rsync -y
在# /home/leeroot/bin 目录下创建xsync文件(一定要在bin目录下!!)
mkdir -p /home/leeroot/bin
cd /home/leeroot/bin
在/homeleeroot/bin 目录下创建xsync文件: vi xsync
xsync的核心代码内容如下,在新建的xsync文件下输入:
#!/bin/bash
1.判断参数个数if [ $ -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
#2.遍历集群所有机器 请改成你自己的主机映射
for host in host1 host2 host3
do
echo =============== $host ==================
#3.遍历所有目录,挨个发送
for file in $@
do
#4.判断文件是否存在
if [ -e $file ]
then
#5.获取父目录
pdir=(cd−P(dirname $file); pwd)
fname=(basenamefile)
# 创建文件夹和传输文件。请改成你自己的端口号
ssh -p 32200 host"mkdir−ppdir"
rsync -av -e 'ssh -p 32200' pdir/fname host:pdir
else
echo $file does not exists!
fi
done
done
再添加权限 :
chmod 777 xsync
并添加全局执行,创建新文件夹,写入所有环境变量的配置
vi /etc/profile
将以下内容添加进环境变量,让创建的xsync脚本能全局执行:
#PATH
export PATH=$PATH:/home/leeroot/bin
环境变量生效:
source /etc/profile
即可完成
在根目录创建a.txt,再进行分发:xsync a.txt
然后再其他服务器的根目录查看是否有a.txt文件。
cd /opt/software 在此目录上传jdk安装包;
在 Linux 系统下的 opt 目录中查看软件包是否导入成功在:ls进行查看。
看到如下结果:
jdk-8u321-linux-x64.tar.gz
tar -zxvf jdk-8u321-linux-x64.tar.gz -C /opt/module/
(1)新建/etc/profile.d/my_env.sh 文件:
vim /etc/profile.d/my_env.sh
添加如下内容
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_321
export PATH=$PATH:$JAVA_HOME/bin
(2)生效环境变量:
source /etc/profile
#输入java -version检验
[root@bigdata2023master ~]$ java -version
如果能看到以下结果,则代表 Java 安装成功。
java version "1.8.0_321"
注意其他机器也需要安装JDK,此时比较简单。
在已经安装jdk的机器上进行分发:
scp -r /opt/module/jdk1.8.0_321/ root@bigdata2023slave1:/opt/module
scp -r /opt/module/jdk1.8.0_321/ root@bigdata2023slave2:/opt/module
分发环境变量:
xsync /etc/profile.d/my_env.sh
最后在其他机器上生效一下环境变量:source /etc/profile
其他机器检测是否安装成功:java -version
[root@bigdata2023master ~]$ cd /opt/software/
[root@bigdata2023master software]$ tar -zxvf hadoop-3.2.2.tar.gz -C /opt/module/
[root@bigdata2023master ~]$ vim /etc/profile.d/my_env.sh
在末尾添加
#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.2.2
export PATH=PATH:HADOOP_HOME/bin
export PATH=PATH:HADOOP_HOME/sbin
在hadoop-3.1.0启动时hadoop集群如果出现如下错误
[root@bigdata2023master sbin]# start-all.sh
Starting namenodes on [hadoop]
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 [hadoop]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation
在环境变量中添加上如下配置:
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
[root@bigdata2023master ~]$ source /etc/profile
[root@bigdata2023master ~]$ hadoop version
Hadoop 3.2.2
Source code repository
Compiled by ljc1
Compiled with protoc 2.5.0
From source with checksum ec785077c385118ac91aadde5ec9799
This command was run using /opt/module/hadoop-3.2.2/share/hadoop/common/hadoop-common-3.2.2.jar
注意其他机器也需要安装hadoop,此时比较简单。
在已经安装jdk的机器上进行分发:
scp -r /opt/module/hadoop-3.2.2/ root@bigdata2023slave1:/opt/module
scp -r /opt/module/hadoop-3.2.2/ root@bigdata2023slave2:/opt/module
分发环境变量:
xsync /etc/profile.d/my_env.sh
最后在其他机器上生效一下环境变量:source /etc/profile
其他机器检测是否安装成功:hadoop version
1.进入hadoop目录
[root@bigdata2023master ~]$ cd /opt/module/hadoop-3.2.2/etc/hadoop/
2.配置主要文件
此时注意,进入此目录后,将要配置的core-site.xml,hdfs-site.xml,mapred-site.xml,yarn-site.xml都进行手动删除,再通过上传文件的形式快速配置好所需的文件,在上传前将需要的配置修改好,然后直接上传即可。
[root@bigdata2023master hadoop]$ vim core-site.xml
在
fs.defaultFS
hdfs://bigdata2023master:8020
hadoop.tmp.dir
/opt/module/hadoop-3.2.2/data
hadoop.http.staticuser.user
root
[root@bigdata2023master hadoop]$ vim hdfs-site.xml
dfs.namenode.http-address
bigdata2023master:9870
dfs.namenode.secondary.http-address
bigdata2023slave2:9868
[root@bigdata2023master hadoop]$ vim yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.resourcemanager.hostname
bigdata2023slave1
yarn.nodemanager.env-whitelist
JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME
yarn.log-aggregation-enable
true
yarn.log.server.url
http://bigdata2023master:19888/jobhistory/logs
yarn.log-aggregation.retain-seconds
1209600
[root@bigdata2023master hadoop]$ vim mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
bigdata2023master:10020
mapreduce.jobhistory.webapp.address
bigdata2023master:19888
3.同步所有节点配置文件
xsync /opt/module/hadoop-3.2.2/etc/hadoop
4.查看配置文件分发情况
分别在bigdata2023slave1和bigdata2023slave2上执行:
cat /opt/module/hadoop-3.2.2/etc/hadoop/core-site.xml
[root@bigdata2023master hadoop]$ vim /opt/module/hadoop-3.2.2/etc/hadoop/workers
清除原有内容,写入所有集群机器名称:
注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。
bigdata2023master
bigdata2023slave1
bigdata2023slave2
同步所有节点配置文件
[root@bigdata2023master hadoop]$ xsync /opt/module/hadoop-3.2.2/etc/hadoop
(1)格式化 NameNode
如果集群是第一次启动,需要在(主节点)bigdata2023master 节点格式化 NameNode(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要在cd /opt/module/hadoop-3.2.2/目录下删除所有机器的 data 和 logs 目录,然后再进行格式化。)
[root@bigdata2023master hadoop-3.2.2]$ hdfs namenode -format
(2)启动 HDFS
[root@bigdata2023master hadoop-3.2.2]$ sbin/start-dfs.sh
(3)在配置了 ResourceManager 的节点(hadoop103)启动 YARN
[root@bigdata2023master hadoop-3.2.2]$ sbin/start-yarn.sh
(4)Web 端查看 HDFS 的 NameNode
(a)浏览器中输入:http://bigdata2023master:9870 或者192.168.222.200:9870
(b)查看 HDFS 上存储的数据信息
(5)Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入:http://bigdata2023slave1:8088 或者192.168.222.201:8088
(b)查看 YARN 上运行的 Job 信息
(6)上传大文件测试
hadoop fs -put /opt/software/jdk-8u321-linux-x64.tar.gz /
在网页上查看结果:
显示如上图即可表示安装成功,如若在测试可以进行mapreduce的数单词测试。