1、集群规划:
预创建3台虚拟机,IP规划如下:
192.168.124.129 master
192.168.124.130 slave1
192.168.124.131 slave2
配置hosts文件
vi /etc/hosts
关闭防火墙:
启动: systemctl start firewalld
关闭: systemctl stop firewalld
查看状态: systemctl status firewalld
开机禁用 : systemctl disable firewalld
开机启用 : systemctl enable firewalld
2.克隆两台节点机slave1,slave2
master节点关机状态下,右键master选择 管理 -->克隆
点击下一步
设置虚拟机名称和位置
同样方式克隆slave2节点
完成后
点击slave1 ,编辑虚拟机设置
生成新的mac地址,避免与master产生冲突
点击确定
克隆slave2也同上
分别修改克隆后两个节点的主机名:
hostnamectl --static set-hostname slave1
hostnamectl --static set-hostname slave2
重启:reboot
主机名分别变成slave1和slave2,就设置成功啦,也可用hostname查看
分别修改slave1和slave2的网络配置
vi /etc/sysconfig/network-scripts/ifcfg-ens33
改为如下:
slave1:
IPADDR="192.168.124.130"
slave2:
IPADDR="192.168.124.131"
重启网卡:
service network restart
查看设置后的IP是否设置成功:
ip addr
看到变化了,说明设置成功啦
3、新增的 Hadoop 用户设置sudo 权限
参考我的另一篇文章sudo权限配置
4、配置SSH免密登陆
准备使用Hadoop用户,所以后面的操作都是基于Hadoop用户的
- ⽣成相关的⽂件
ssh-keygen -t rsa
输⼊后,⼀路回⻋即可
查看如下
2. 将公钥复制到另外⼀台需要免密登陆的机器上的隐藏⽬录.ssh⾥,同时更名为authorized_keys。因为Hadoop集群中需要能访问localhost,此处就将本机的公钥文件名直接修改为authorized_keys,再分发.ssh到slave1和slave2上实现三台机器之间的免密登录
[hadoop@master .ssh]$ mv id_rsa.pub authorized_keys
[hadoop@master ~]$ scp --r .ssh/ slave1:~
[hadoop@master ~]$ scp --r .ssh/ slave1:~
- 确保authorized_keys的权限⾄少是600
- 确保.ssh的权限⾄少700
测试:
[hadoop@master ~]$ ssh localhost
[hadoop@master ~]$ ssh slave1
[hadoop@master ~]$ ssh slave2
首次访问会弹出
Are you sure you want to continue connecting (yes/no)?
输入 :yes
5、安装JDK
下载:https://www.oracle.com/java/technologies/javase-downloads.html
1、检查⼀下是否已经安装过或者系统内置JDK,如果有内置的,将其卸载
[hadoop@master ~]$ rpm -qa | grep jdk
[hadoop@master ~]$ sudo rpm -e xxxxxxxx --nodeps #将查询到的内置jdk代替 xxxxxxx 卸载
2、为了方便Hadoop用户管理,创建两个文件夹,/opt/apps 存放应用,/opt/software 下放软件包
修改/opt 文件夹的所有者和所属组和创建文件夹
[hadoop@master ~]$ sudo chown hadoop:hadoop /opt/
[hadoop@master ~]$ mkdir /opt/apps
[hadoop@master ~]$ mkdir /opt/software
3、上传下载好的jdk到/opt/software中
此处用的finalshell上传(软件很好使,推荐使用)
4、解压到指定文件夹
[hadoop@master software]# tar -zxvf jdk-8u162-linux-x64.tar.gz -C /opt/apps/
5、配置环境变量
进入到jdk目录,pwd后,复制路径,方便配置环境变量使用
[hadoop@master apps]# cd jdk1.8.0_162/
[hadoop@master jdk1.8.0_162]# pwd
/opt/apps/jdk1.8.0_162
根据自己解压后的文件,打开.bash_profile文件,添加配置,保存并退出
[hadoop@master ~]# vi .bash_profile
添加:
#java environment
export JAVA_HOME=/opt/apps/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
6、执行如下命令,使配置生效
[hadoop@master ~]# source .bash_profile
7、验证jdk 环境
[hadoop@master ~]$ java -version
[hadoop@master ~]$ javac
OK,jdk安装成功
6、Hadoop 集群安装与启动
1. 下载Hadoop
2. 上传至服务器
3. 解压安装
[hadoop@master software]$ tar -zxvf hadoop-2.10.0.tar.gz -C /opt/apps/
4. 配置Hadoop环境变量
5. 运行如下命令,使配置生效
[hadoop@master ~]$ source .bash_profile
6. 检测
[hadoop@master ~]$ hadoop version
7. 修改配置文件
[hadoop@master ~]$ cd /opt/apps/hadoop-2.10.0/etc/hadoop
1)配置 hadoop-env.sh
[hadoop@master hadoop]$ vi hadoop-env.sh
#The java implementation to use.
export JAVA_HOME=/opt/apps/jdk
2)配置 core-site.xml
[hadoop@master ~]$ cd $HADOOP_HOME/etc/hadoop/
[hadoop@master hadoop]$ vi core-site.mxl
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/apps/hadoop/tmp</value>
</property>
</configuration>
3) 配置 hdfs-site.xml
[hadoop@master hadoop]$ vi core-site.mxl
<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
</configuration>
4)配置 yarn-site.xml
[hadoop@master hadoop]$ vi yarn-site.mxl
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>
5)配置 mapred-site.xml
[hadoop@master hadoop]$ vi mapred-site.mxl
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
6)配置 slaves ⽂件
[hadoop@master hadoop]$ vi slaves
master
slave1
slave2
7)配置yarn-env.sh⽂件,可以不配置,最好还是修改⼀下yarn的jdk环境⽐较好
[hadoop@master hadoop]$ vi yarn-env.sh
# some Java parameters
export JAVA_HOME=/opt/apps/jdk
8. 配置分发到其他节点
记得修改/opt的权限,否则传不过去
[root@slave2 ~]# sudo chown hadoop:hadoop /opt
[root@slave2 ~]# sudo chown hadoop:hadoop /opt
分发
[hadoop@master ~]$ scp .bash_profile slave1:~
[hadoop@master ~]$ scp .bash_profile slave2:~
[hadoop@master apps]$ scp -r /opt/apps/ slave1:/opt/
[hadoop@master apps]$ scp -r /opt/apps/ slave2:/opt/
使配置的环境变量生效
[hadoop@slave1 ~]$ source .bash_profile
[hadoop@slave2 ~]$ source .bash_profile
9. 初始化 namenode ,执行如下命令
[hadoop@master ~]$ hdfs namenode -format
启动集群
[hadoop@master hadoop-2.10.0]$ start-all.sh
查看启动结果
[hadoop@master hadoop-2.10.0]$ jps
[hadoop@master hadoop-2.10.0]$ jps
12801 NodeManager
12530 ResourceManager
11543 NameNode
13449 Jps
11772 DataNode
12255 SecondaryNameNode
[hadoop@slave1 ~]$ jps
12086 NodeManager
11449 DataNode
12603 Jps
[hadoop@slave2 hadoop-2.10.0]$ jps
12084 NodeManager
12695 Jps
11448 DataNode
去浏览器访问master:50070查看(hosts文件中做了映射才能直接用master:访问,否则用IP:50070访问)