【大数据】Hadoop的全分布式安装

准备

集群服务器准备

在虚拟机中创建四个配置为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
# 修改为如下配置
<configuration>
  <property>
  <name>yarn.resourcemanager.hostname</name>
  <value>hadoopmaster</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

配置 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>

 

原文地址:https://www.cnblogs.com/nfuquan/p/13665951.html