hadoop三节点集群完全分布式安装

2021-01-22 10:59:30 浏览数 (1)

废话不多说

1.环境介绍

1.1 hadoop版本 3.1.4 (hadoop-3.1.4.tar.gz )

1.2 java版本 1.8 (需要卸载机器上自带openjdk) ,jdk安装步骤省略

1.3 三台虚拟机节点 node1,node2,node3

2.步骤准备

2.1 关闭防火墙

代码语言:javascript复制
systemctl stop firewalld
关闭防火墙自启动  
systemctl disable firewalld

2.2 上传hadoop包到node1节点的 /app/hadoop 目录下 ,并解压hadoop包

代码语言:javascript复制
tar -zxvf hadoop-3.1.4.tar.gz 

查看hadoop目录结构

2.3集群规划

1个NameNode ,3个DataNode ,1个SecondaryNameNode ,1个ResourceManager 3个NodeManager

因为只有三台机器,考虑到资源占用情况,将NameNode 、SecondaryNameNode 、 ResourceManager占用资源较多的服务分布到不同的节点上。

node1

node2

node3

HDFS

NameNode , DataNode

DataNode

SecondaryNameNode ,DataNode

YARN

NodeManager

ResourceManager,NodeManager

NodeManager

2.4 ssh免密设置

进入 当前用户~ 目录

查看 ~ 目录下的.ssh 文件 ,存在则删除(删除以前生成的密钥)

node1,node2,node3分别执行一下指令,来生成各自密钥

代码语言:javascript复制
ssh-keygen -t rsa

一直回车即可

执行完毕之后可见每个node节点下 用户 ~ 目录下存在 .ssh 文件。 .ssh下存在公钥 id_rsa.pub和私钥id_rsa

将ndoe1生成的公钥覆盖到authorized_keys

代码语言:javascript复制
cp id_rsa.pub authorized_keys

分发密钥 将node2 , node3的公钥分别scp到node1 的~ 目录下,改名为 node2.pub 和node3.pub 作为临时文件(事后删除)

在node1节点上 分别将node2.pub 文件和 node.pub文件追加到 刚才生成的authorized_keys 文件中

代码语言:javascript复制
cat ~/node2.pub >> ~/.ssh/authorized_keys
cat ~/node3.pub >> ~/.ssh/authorized_keys

此时的authorized_keys 文件就分别拥有了 node1,node2,node3的公钥

查看authorized_keys

使用scp 分发 authorized_keys 文件到node2,node3 的~/.ssh/ 目录下

分别为每个节点.ssh目录 和 authorized_keys 授权 (注意很重要) .ssh 授权为700 authorized_keys 授权为600

代码语言:javascript复制
chmod 600 authorized_keys
chmod 700 .ssh/

(删除node1节点上的 node2.pub 和node3.pub 两个临时文件 )

至此每个节点之间完成相互ssh免密登陆

验证ssh 免密登陆

代码语言:javascript复制
ssh root@node2
ssh root@node1
ssh root@node3

若无密码输入,则配置完成

3.hadoop安装

前面准备步骤已经将hadoop压缩包上传到了node1节点下 /app/hadoop 目录下

配置hadoop的环境变量 在 /etc/profile下配置

代码语言:javascript复制
export HADOOP_HOME=/app/hadoop/hadoop-3.1.4
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

hadoop version 验证版本

修改node1节点hadoop的配置文件 hadoop配置文件位置 在hadoop 解压目录的/etc/hadoop 下

首先在hadoop-env.sh、mapred-env.sh、yarn-env.sh文件中指定JDK的路径

代码语言:javascript复制
export JAVA_HOME=/app/java/jdk1.8    #此处配置你自己的java安装路径即可

配置操作用户 在hadoop-env.sh中配置

代码语言:javascript复制
export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"

配置master节点 修改core-site.xml

代码语言:javascript复制
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9000</value>
    </property>
   <property>
        <name>hadoop.tmp.dir</name>
        <value>/app/hadoop/hadoop-3.1.4/tmp</value>
    </property>
</configuration>

配置hdfs-site.xml

代码语言:javascript复制
<configuration>
 <property>
    <name>dfs.name.dir</name>
    <value>/usr/hadoop/hdfs/name</value>
    <description>namenode上存储hdfs名字空间元数据 </description>
 </property>
 <property>
    <name>dfs.data.dir</name>
    <value>/app/hadoop/hadoop-3.1.4/data</value>
    <description>datanode上数据块的物理存储位置</description>
 </property>
 <property>
        <name>dfs.replication</name>
        <value>2</value>
  </property>
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>node3:50090</value>
    </property>
</configuration>

配置yarn-site.xml

代码语言:javascript复制
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node2</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>

配置 mapred-site.xml

代码语言:javascript复制
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>

配置workers (3.0以前叫slaves)

代码语言:javascript复制
#指定datanode节点
node1
node2
node3

配置之后将node1的环境配置分发到node2,node3

之后再将node1的hadoop 分发到node2, node3相同位置

4.启动

4.1 启动hadoop集群之前需要格式化集群

格式化hdfs(只在首次启动需要格式化)

代码语言:javascript复制
hdfs namenode -format 格式化namenode

启动集群

启动 hdfs (node1节点启动)

代码语言:javascript复制
sbin/start-dfs.sh

启动yarn (node2节点启动,否则找不到ResourceManager)

代码语言:javascript复制
sbin/start-yarn.sh

jps查看各节点的启动进程

node1下的

代码语言:javascript复制
 NodeManager
 NameNode
 DataNode

node2下的

代码语言:javascript复制
 DataNode
 NodeManager
 ResourceManager

node3下的

代码语言:javascript复制
SecondaryNameNode
NodeManager
DataNode

查看hadoop管理页面 默认端口3.X以后9870

查看yarn管理页面 默认端口8088

出现上述web管理页面。

至此hadoop三节点集群安装成功。

0 人点赞