1)master虚拟机配置要求如下(本文Linux系统全部以CentOS-7.5-x86-1804为例)
(1)使用yum安装需要虚拟机可以正常上网,yum安装前可以先测试下虚拟机联网情况
[root@master ~]# ping www.baidu.com
PING www.baidu.com (14.215.177.39) 56(84) bytes of data.
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=8.60 ms
64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=7.72 ms
(2)安装epel-release
注:Extra Packages for Enterprise Linux是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux。相当于是一个软件仓库,大多数rpm包在官方 repository 中是找不到的)
[root@hadoop100 ~]# yum install -y epel-release
如果存在后台进程 使用kill -9 杀死
例如 kill -9 3144
2)关闭防火墙,关闭防火墙开机自启
[root@master ~]# systemctl stop firewalld
[root@master ~]# systemctl disable firewalld.service
注意:在企业开发时,通常单个服务器的防火墙时关闭的。公司整体对外会设置非常安全的防火墙
5)在目录下创建文件夹,并修改所属主和所属组
(1)在/opt目录下创建文件夹
mkdir -p /export/server/ #软件安装路径
mkdir -p /export/data/ #数据存储路径
mkdir -p /export/software/ #安装包存放路径
6)卸载虚拟机自带的JDK
注意:如果你的虚拟机是最小化安装不需要执行这一步。
[root@master ~]# rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps
- rpm -qa:查询所安装的所有rpm软件包
- grep -i:忽略大小写
- xargs -n1:表示每次只传递一个参数
- rpm -e –nodeps:强制卸载软件
7)重启虚拟机
[root@master ~]# reboot
2.2 克隆虚拟机
1)利用模板机master,克隆三台虚拟机:master slave1 slave2
注意:克隆时,要先关闭master
2)修改克隆机IP,以下以master举例说明
(1)修改克隆虚拟机的静态IP
切换root用户
[root@master ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
改成
DEVICE=ens33
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
NAME="ens33"
IPADDR=192.168.10.102
PREFIX=24
GATEWAY=192.168.10.2
DNS1=192.168.10.2
(2)查看Linux虚拟机的虚拟网络编辑器,编辑->虚拟网络编辑器->VMnet8
(3)查看Windows系统适配器VMware Network Adapter VMnet8的IP地址
(4)保证Linux系统ifcfg-ens33文件中IP地址、虚拟网络编辑器地址和Windows系统VM8网络IP地址相同。
3)修改克隆机主机名,以下以master举例说明
(1)修改主机名称
[root@master ~]# vim /etc/hostname
master
(2)配置Linux克隆机主机名称映射hosts文件,打开/etc/hosts
[root@master ~]# vim /etc/hosts
添加如下内容
master slave2 slvae2
4)重启克隆机master
[root@msater ~]# reboot
5)修改windows的主机映射文件(hosts文件)
(1)如果操作系统是window7,可以直接修改
(a)进入C:\Windows\System32\drivers\etc路径
(b)打开hosts文件并添加如下内容,然后保存
192.168.10.100 master
192.168.10.101 slave1
192.168.10.102 slave2
(2)如果操作系统是window10,先拷贝出来,修改保存以后,再覆盖即可(如果有 ,可能是上一次存在的。记得更改ip要不然连不上)
(a)进入C:\Windows\System32\drivers\etc路径
(b)拷贝hosts文件到桌面
(c)打开桌面hosts文件并添加如下内容
192.168.10.100 master
192.168.10.101 slave1
192.168.10.102 slave2
(d)将桌面hosts文件覆盖C:\Windows\System32\drivers\etc路径hosts文件
3.2.3 SSH无密登录配置
可以使用ls –al来查看所有隐藏的文件
1)配置ssh
(1)基本语法
ssh另一台电脑的IP地址
(2)ssh连接时出现Host key verification failed的解决方法
[atguigu@hadoop102 ~]$ ssh hadoop103
- 如果出现如下内容
Are you sure you want to continue connecting (yes/no)?
- 输入yes,并回车
(3)退回到hadoop102
[atguigu@hadoop103 ~]$ exit
2)无密钥配置
(2)生成公钥和私钥
进入.ssh目录(只要访问一下就可以出现该目录 例如从master访问ssh slave1)
cd .ssh/
[atguigu@hadoop102 .ssh]$ pwd
/home/atguigu/.ssh
[atguigu@hadoop102 .ssh]$ ssh-keygen -t rsa
然后敲(三个回车),就会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
(3)将公钥拷贝到要免密登录的目标机器上
[atguigu@hadoop102 .ssh]$ ssh-copy-id master
[atguigu@hadoop102 .ssh]$ ssh-copy-id slave1
[atguigu@hadoop102 .ssh]$ ssh-copy-id slave2
注意:(最后结束可以使用ssh 加主机名来试一下能不能免密登陆)exit退出
还需要在hadoop103上采用atguigu账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。(重复上述操作)
还需要在hadoop104上采用atguigu账号配置一下无密登录到hadoop102、hadoop103、hadoop104服务器上。
还需要在hadoop102上采用root账号,配 下无密登录到hadoop102、hadoop103、hadoop104;(上面只是在long界面下的配置,在root权限下如果想也要配置)
3).ssh文件夹下(~/.ssh)的文件功能解释
known_hosts | 记录ssh访问过计算机的公钥(public key) |
id_rsa | 生成的私钥 |
id_rsa.pub | 生成的公钥 |
authorized_keys | 存放授权过的无密登录服务器公钥 |
2.3 在hadoop102安装JDK
1)卸载现有JDK
注意:安装JDK前,一定确保提前删除了虚拟机自带的JDK。详细步骤见问文档3.1节中卸载JDK步骤。
2)用XShell传输工具将JDK导入到export目录下面的software文件夹下面
3)在Linux系统下的opt目录中查看软件包是否导入成功
[atguigu@hadoop102 ~]$ ls /export/software/
看到如下结果:
jdk-8u212-linux-x64.tar.gz
4)解压JDK到/export/server目录下
先切换到software
Cd /export/software
[atguigu@hadoop102 software]$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C /export/server
5)配置JDK环境变量
(1)新建/et#c/profile文件
[atguigu@hadoop102 ~]$ vim /etc/profile
添加如下内容
export JAVA_HOME=/export/server/jdk1.8.0_212
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
(2)保存后退出
:wq
(3)source一下/etc/profile文件,让新的环境变量PATH生效
[atguigu@hadoop102 ~]$ source /etc/profile
6)测试JDK是否安装成功
[atguigu@hadoop102 ~]$ java -version
如果能看到以下结果,则代表Java安装成功。
java version "1.8.0_212"
注意:重启(如果java -version可以用就不用重启)
[atguigu@hadoop102 ~]$ sudo reboot
2.4 在hadoop102安装Hadoop
Hadoop下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.1.3/
1)用XShell文件传输工具将hadoop-3.1.3.tar.gz导入到opt目录下面的software文件夹下面
2)进入到Hadoop安装包路径下
[atguigu@hadoop102 ~]$ cd /export/software/
3)解压安装文件到/opt/module下面
[atguigu@hadoop102 software]$ tar -zxvf hadoop-3.3.1.tar.gz -C /export/server/
4)查看是否解压成功
[atguigu@hadoop102 software]$ ls /export/server/
hadoop-3.1.3
5编辑hadoop配置文件
1)
cd /export/server/hadoop-3.3.1/etc/hadoop/
查看jdk的路径
大概在56行添加
用这个
在文件末尾添加(esc 然后shift加g再i)
2) cd /export/server/hadoop-3.3.1/etc/hadoop/
vim core-site.xml
可以进行手动查看 cat core-site.xml
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- hadoop本地数据存储目录 format时自动生成 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/export/data/hadoop-3.3.1</value>
</property>
<!-- 在Web UI访问HDFS使用的用户名。-->
<property>
<name>hadoop.http.staticuser.user</name>
<value>root</value>
</property>
3) - hdfs-site.xml
cd /export/server/hadoop-3.1.4/etc/hadoop/
vim hdfs-site.xml
<!-- 设定SNN运行主机和端口。-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:9868</value>
</property>
4)
cd /export/server/hadoop-3.1.4/etc/hadoop/
vim mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- MR App Master环境变量。-->
<property>
<name>yarn.app.mapreduce.am.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR MapTask环境变量。-->
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<!-- MR ReduceTask环境变量。-->
<property>
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
5) cd /export/server/hadoop-3.1.4/etc/hadoop/
vim yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>slave1</value>
</property>
<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行
MR程序。-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 每个容器请求的最小内存资源(以MB为单位)。-->
<property>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<!-- 每个容器请求的最大内存资源(以MB为单位)。-->
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
<!-- 容器虚拟内存与物理内存之间的比率。-->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>4</value>
</property>
6) cd /export/server/hadoop-3.3.1/etc/hadoop/
vim workers
7. 分发同步安装包
在master机器上将Hadoop安装包scp同步到其他机器
切换cd /export/server/
scp -r hadoop-3.3.1 root@slave1:/export/server/
scp -r hadoop-3.3.1 root@slave2:/export/server/
5)将Hadoop添加到环境变量
(1)获取Hadoop安装路径
先进入
a
[atguigu@hadoop102 hadoop-3.1.3]$ pwd
/export/server/hadoop-3.3.1
(2)打开/etc/profile文件
[atguigu@hadoop102 hadoop-3.1.3]$ vim /etc/profile
- 在文件末尾添加如下内容:(shift+g)
#HADOOP_HOME
export HADOOP_HOME=/export/server/hadoop-3.3.1
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
- 保存并退出: :
(3)让修改后的文件生效
[atguigu@hadoop102 hadoop-3.1.3]$ source /etc/profile
6)测试是否安装成功
[atguigu@hadoop102 hadoop-3.1.3]$ hadoop version
- Hadoop 3.1.3将修改后的环境变量同步其他机器
使用root用户
scp /etc/profile root@slave1:/etc/
scp /etc/profile root@slave2:/etc/
在slave1下查看cat /etc/profile
(a)在master上,将maSter中/opt/module/jdk1.8.0_212目录拷贝到slave1上。(给数据)
[root@hadoop102 ~]$scp -r /export/server/jdk1.8.0_212 root@slave1:/export/server
3)让其他两台机器修改后的文件生效分别在两台机器
source /etc/profile
2)启动集群
(初始化)(1)如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意:格式化NameNode,会产生新的集群id,导致NameNode和DataNode的集群id不一致,集群找不到已往数据。如果集群在运行过程中报错,需要重新格式化NameNode的话,一定要先停止namenode和datanode进程,并且要删除所有机器的data和logs目录,然后再进行格式化。)::-y
[atguigu@hadoop102 hadoop-3.1.3]$ hdfs namenode -format
(2)启动HDFS
[atguigu@hadoop102 hadoop-3.1.3]$ start-dfs.sh
启动YARN
记得切换机器到
[atguigu@hadoop103 hadoop-3.1.3]$ start-yarn.sh
3.2.8 集群启动/停止方式总结
1)各个模块分开启动/停止(配置ssh是前提)常用
(1)整体启动/停止HDFS
start-dfs.sh/stop-dfs.sh
(2)整体启动/停止YARN
start-yarn.sh/stop-yarn.sh