准备
集群服务器准备
在虚拟机中创建四个配置为1核,2G内存,20G存储的虚拟机。(在这里有任何问题,请参考上篇博文——>传送门)
必要的软件工具准备
FileZilla Client(FTP客户端)
MobaXterm(SSH客户端)
hadoop-3.3.1(hadoop核心文件)
这里不提供下载地址,有需要请直接参考上篇博文
配置
将四个虚拟机的源全部变更为清华源或其他国内源
将四个虚拟机安装Java环境,同时设置环境变量
请直接参考上篇博文
使用SFTP软件,将下载好的hadoop-3.3.1包放置在固定目录下并解压
这里安装路径统一为/data/hadoop
执行命令如下:
mkdir /data/hadoop tar -zxvf hadoop-3.3.0.tar.gz -C /data/hadoop
修改各个主机的节点名称,便于后续配置
# 在主机一上,设置为hadoopmaster hostnamectl set-hostname hadoopmaster # 在主机二上,设置为hadoopnode2 hostnamectl set-hostname hadoopnode2 # 在主机三上,设置为hadoopnode3 hostnamectl set-hostname hadoopnode3 # 在主机四上,设置为hadoopnode4 hostnamectl set-hostname hadoopnode4
修改各个主机的host文件,便于后续配置
下面的ip是对应我的虚拟机的ip,这里需要自己查看自己虚拟机分配的ip。
192.168.206.128 hadoopmaster 192.168.206.132 hadoopnode2 192.168.206.133 hadoopnode3 192.168.206.131 hadoopnode4
在每台虚拟机中执行命令,并添加上述代码:
vim /etc/hosts
这里需要说明一下,由于虚拟机的ip是通过DHCP服务获取的,所以若分配IP更改,则会导致各个服务器之间通信受阻,建议将服务器设置为静态IP,保证通讯不中断,这个操作为可选操作,未来有时间我会添加,目前暂时不表。
权限配置
由于目前全部服务器的账号均为root,之前的博文中提及root用户可能会存在问题,hadoop不建议使用此账户管理hadoop
因此,这里需要创建普通用户用于对hadoop进行管理。
这里给每个机器创建一个名为hadoop的账户。
adduser hadoop passwd hadoop #输入你的密码
配置节点间ssh免密钥登录
需要配置 master 主机(node1)到 slave1(node2) , slave2(node3),slave3(node4)和其本身的 SSH 免密登入
# 在node1主机上执行 su hadoop ssh-keygen -t rsa ssh-copy-id hadoop@hadoopmaster ssh-copy-id hadoop@hadoopnode2 ssh-copy-id hadoop@hadoopnode3 ssh-copy-id hadoop@hadoopnode4
配置各个节点间的hadoop的JAVA_HOME
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/hadoop-env.sh
修改JAVA_HOME
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.262.b10-0.el7_8.x86_64/
保存即可
在hadoopmaster主机上配置NameNode节点
# 在hadoopmaster主机上运行 vim /data/hadoop/hadoop-3.3.0/etc/hadoop/core-site.xml
# 修改为如下配置
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://hadoopmaster:9000</value>
</property>
</configuration>
在hadoopmaster上配置HDFS
# 在hadoopmaster主机上运行 vim /data/hadoop/hadoop-3.3.0/etc/hadoop/hdfs-site.xml # 修改为如下配置 <configuration> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/data/nameNode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/data/dataNode</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
上述配置中,第一个是配置NameNode节点,第二个配置DataNode节点,第三个配置副本数量。注意第三个若从节点有三个,则副本数量必然<=3,以此类推。具体原因,后续慢慢介绍
在hadoopmaster上配置MR、YARN
# 在hadoopmaster主机上运行 vim /data/hadoop/hadoop-3.3.0/etc/hadoop/mapred-site.xml # 修改为如下配置 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value> </property> <property> <name>mapreduce.map.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value> </property> <property> <name>mapreduce.reduce.env</name> <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value> </property> </configuration>
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/yarn-site.xml
# 修改为如下配置
配置 Workers 节点
vim /data/hadoop/hadoop-3.3.0/etc/hadoop/workers
#修改配置为
hadoopnode2
hadoopnode3
hadoopnode4
拷贝分发至其他节点,无需再次配置
scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode2:/data/hadoop/hadoop-3.3.0/etc/hadoop/
scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode3:/data/hadoop/hadoop-3.3.0/etc/hadoop/
scp /data/hadoop/hadoop-3.3.0/etc/hadoop/* hadoopnode4:/data/hadoop/hadoop-3.3.0/etc/hadoop/
关闭其他节点防火墙,防止出现其他可能的问题
由于这里仅仅用于学习,因此可以如此做。在生产环境过程中,这里是需要防火墙安全的,要做更加精细化的安全策略。
systemctl stop firewalld
systemctl disable firewalld
测试
初始化HDFS
可将Hadoop相关命令放置到系统环境变量中,这里我不做赘述,需要请移步上篇博文。
hdfs namenode -format
说明成功初始化!
开启HDFS集群
start-dfs.sh
说明成功!然后,在各个节点输入jps,查看目前运行的hadoop进程
说明集群正常工作!
开启YARN
start-yarn.sh
访问集群可视化界面
访问:http://192.168.206.128:8088/
成功!
访问:http://192.168.206.128:9870/
若无法访问,请在hdfs-site.xml文件中添加
<property>
<name>dfs.namenode.http-address</name>
<value>0.0.0.0:9870</value>
</property>