hadoop 分布式安装

时间:2022-11-24 23:48:06

一、虚拟机安装centos7需要显示IPv4地址时设置

修改ip addr 中显示ipv4

  1. 修改 ONBOOT=no 为 ONBOOT=yes,
  2. 同时需要添加HWADDR=00:0c:29:c8:b6:a7,其中后缀mac地址需要填写ip addr中ech33的ip6的mac 00:0c:29:3a:18:15
  3. systemctl stop NetworkManager systemctl disable NetworkManager
  4. service network restart 启动OK

二、安装jdk,这里安装版本jdk1.8.0_192.

# 文件解压
tar zxvf jdk-8u192-linux-x64.tar.gz
# 移动文件到指定目录下
mv jdk1.8.0_192 /opt/
# 编辑文件在最后插入三条信息
vim /etc/profile export JAVA_HOME=/opt/jdk1.8.0_192
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME:$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
# 重启配置文件
source /etc/profile

三、安装hadoop3

有两台设备安装hadoop3主机配置:

名称 地址 描述
mpi-1 192.168.2.138 centos7配置,为主节点
mpi-2 192.168.2.20 子节点
解压文件并编辑环境变量
tar zxvf hadoop-3.1.1.tar.gz
mkdir /opt/hadoop-3.1.1/app
mkdir /opt/hadoop-3.1.1/data
mkdir /opt/hadoop-3.1.1/log
mv hadoop-3.1.1/* /opt/hadoop-3.1.1/app/
# 设置权限
sudo chmod -R 777 /opt/hadoop-3.1.1/data
# 配置环境变量
vim /etc/profile
//在文件最后添加
export HADOOP_HOME=/opt/hadoop-3.1.1/app
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source /etc/profile //刷新配置

1. 防火墙设置:虚拟机必须都关闭防火墙才能启动集群

Systemctl status firewalld.service 检查状态
Systemctl stop firewalld.service 关闭
Systemctl disable firewalld.service 防止开机自启

2. 然后修改hosts文件:

sudo vim /etc/hosts

根据以上查得的IP地址,在两台机器的hosts文件中均输入以下内容并保存:

192.168.2.138 mpi-1

192.168.2.20 mpi-2

测试: 在mpi-1服务上ping mpi-2

3. ssh 免密登录

3.1 两台设备都需要修改/etc/ssh/ssh_config文件的配置

最后面添加:

StrictHostKeyChecking no
UserKnownHostsFile /dev/null

3.2 在各个文件中执行

(1)ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa (每台设备都执行)

(2)cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys //认证(主节点上执行该步后可以保证本机免密登录,使用ssh mpi-1进行测试)

(3)把各子节点的 id_rsa.pub 传到主节点

scp id_rsa.pub root@mpi-1:~/.ssh/id_rsa.pub.mpi-2(这里我们把mpi-1看作主节点,将mpi-2节点的钥匙文件传到node1上)

(4)在主节点上操作

cat ~/.ssh/id_rsa.pub.mpi-2 >> ~/.ssh/authorized_keys//认证

scp authorized_keys ubuntu@mpi-2:~/.ssh/authorized_keys//将认证文件传回每个子节点

(5)验证无密码登录

在mpi-1节点上执行:ssh mpi-2

4. 创建文件目录

mkdir /opt/hadoop-3.1.1/data/tmp
mkdir /opt/hadoop-3.1.1/data/dfs
mkdir /opt/hadoop-3.1.1/data/dfs/data
mkdir /opt/hadoop-3.1.1/data/dfs/name

5. 配置Hadoop

进入hadoop-3.0.0的配置目录:cd /home/ubuntu/hadoop/hadoop-3.0.0/etc/hadoop,依次修改hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml以及workers文件。

5.1 配置 hadoop-env.sh

vim hadoop-env.sh

export JAVA_HOME=/opt/jdk1.8.0_192 //在hadoop-env.sh中找到 JAVA_HOME,配置成对应安装路径

5.2 配置 core-site.xml (根据自己节点进行简单修改即可)

vim core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://mpi-1:9000</value>
<description>HDFS的URI,文件系统://namenode标识:端口号</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.1.1/data/tmp</value>
<description>namenode上本地的hadoop临时文件夹</description>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
<description>Size of read/write buffer used in SequenceFiles</description>
</property>
</configuration>

5.3 配置 hdfs-site.xml

vim hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
<description>Hadoop的备份系数是指每个block在hadoop集群中有几份,系数越高,冗余性越好,占用存储也越多</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop-3.1.1/data/dfs/name</value>
<description>namenode上存储hdfs名字空间元数据 </description>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop-3.1.1/data/dfs/data</value>
<description>datanode上数据块的物理存储位置</description>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>mpi-1:50090</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>true</value>
<description>dfs.permissions配置为false后,可以允许不要检查权限就生成dfs上的文件,方便倒是方便了,但是你需要防止误删除,请将它设置为true,或者直接将该property节点删除,因为默认就是true</description>
</property>
</configuration>

5.4 配置 mapred-site.xml

vim mapred-site.xml

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<description>The runtime framework for executing MapReduce jobs. Can be one of local, classic or yarn.</description>
<final>true</final>
</property>
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>mpi-1:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>mpi-1:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>mpi-1:19888</value>
</property>
<property>
<name>mapred.job.tracker</name>
<value>http://mpi-1:9001</value>
</property>
</configuration>

5.5 配置 yarn-site.xml

vim yarn-site.xml

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>mpi-1</value>
<description>The hostname of the RM.</description>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>mpi-1:8032</value>
<description>${yarn.resourcemanager.hostname}:8032</description>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>mpi-1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>mpi-1:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>mpi-1:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>mpi-1:8088</value>
</property>
</configuration>

5.6 配置 workers 文件(之前版本是slaves,注意查看)

vim workers

添加

mpi-1

mpi-2

5.7 将配置文件复制到子节点中

scp -r hadoop-3.1.1 root@192.168.2.20:/opt/

复制到其他节点后,需要配置hadoop的环境变量

5.8 将start-dfs.sh,stop-dfs.sh两个文件顶部添加以下参数

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.sh,stop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

6. 运行Hadoop集群

6.1 格式化namenode(主节点)

hdfs namenode -format //第一次使用hdfs,必须对其格式化(只需格式化一次)

6.2 启动Hadoop

start-dfs.sh

start-yarn.sh

6.3 查看集群是否成功启动

jps命令查看

在浏览器输入192.168.2.138:9870,结果如下:

测试YARN

在浏览器输入192.168.2.138:8088,结果如下:

注:将绑定IP或mpi-1改为0.0.0.0,而不是本地回环IP,这样,就能够实现外网访问本机的8088端口了。比如这里需要将yarn-site.xml中的

        <property>
<name>yarn.resourcemanager.webapp.address</name>
<value>mpi-1:8088</value>
</property>
修改为:
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>0.0.0.0:8088</value>
</property>