写BUG的派大星

Patrick Star

  • 首页
  • 归档

  • 搜索
设计模式 Gis Kafka Druid 微信小程序 Java 开源项目源码 物体识别 机器学习 Mybatis 微服务 Feign OpenVPN CSS Streamsets CDH SpringCloud SpringBoot maven 分布式 Shell Tree Linux js WebSocket 多线程 集群 Hadoop 大数据 JDK ElasticSearch MySQL 数据库 Redis Http Nginx

CentOS8搭建分布式Hadoop3.2.1环境(hdfs+yarn)

发表于 2020-03-20 | 分类于 大数据 | 0 | 阅读次数 1516

写在前面

本次安装是采用三个本地虚拟机进行安装的方式。 Hadoop版本为3.2.1

本地电脑是i7-8700/16G

虚拟机配置选择了1核CPU,2G内存,20G硬盘,选择的系统是CentOS 8,安装的时候不确定会不会卡,此处跳过虚拟机安装教程。

虚拟机安装时记得指定静态ip,本机名可以取成master、slaver01、slaver02或hadoop1、hadoop2、hadoop3等,方便后面修改host文件,可以根据自己的喜好选择。

安装

配置时三台机器均需配置

关闭防火墙

systemctl stop firewalld //停止防火墙服务
systemctl disable firewalld //禁用防火墙开机自启

修改hosts文件

使用 vi /etc/hosts命令,修改host文件,将三台机器的ip与主机名写进去(后续操作包括本步操作,若无特殊说明,仅在主节点操作即可,因为后面会复制到从节点中)。

192.168.11.128 master
192.168.11.129 slaver01
192.168.11.130 slaver02

ssh免密登录

执行ssh-keygen -t rsa命令 生成一对公钥和私钥,存放路径在/root/.ssh/中,这里一路回车就好。

image-20200319205050157

然后将公钥复制到其他机器上,实现免密码登录命令如下

ssh-copy-id master
ssh-copy-id slaver01
ssh-copy-id slaver02

每次分别输入对应机器的密码即可。

image-20200319205244460

然后可以尝试一下是否成功

image-20200319205306539

可以看到已经可以免密登录,在三台虚拟机都互相可以免密登录后进入下一步。

安装JDK

在 /opt 路径下创建一个soft文件夹来保存安装的软件

mkdir /opt/soft
# 将jdk解压
tar -zxvf jdk-8u181-linux-x64.tar.gz -C /opt/soft/

# 修改环境变量
vi /etc/profile
# 按Shift+G跳到行尾,加入下面三行
export JAVA_HOME=/opt/soft/jdk1.8.0_91
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

# 刷新配置文件
source /etc/profile

安装Hadoop

# 解压Hadoop文件
tar -zxvf hadoop-3.2.1.tar.gz -C /opt/soft/

# 修改环境变量
vi /etc/profile
# 在最后下添加
export HADOOP_HOME=/opt/soft/hadoop-3.2.1
export PATH=$PATH:$HADOOP_HOME/bin
# 刷新环境变量
source /etc/profile

修改配置文件

以下文件均在** /opt/soft/hadoop-3.2.1/etc/hadoop**中

修改hadoop-env.sh

vi hadoop-env.sh

加入

export JAVA_HOME=/opt/soft/jdk1.8.0_181
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root

修改core-site.xml

<configuration>
    <!-- 指定HDFS老大(namenode)的通信地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!-- 指定hadoop运行时产生文件的存储路径 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/soft/hadoop-3.2.1/tmp</value>
    </property>
</configuration>

修改hdfs-site.xml

<configuration>

    <!-- 设置namenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.http-address</name>
        <value>master:50070</value>
    </property>

    <!-- 设置secondarynamenode的http通讯地址 -->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave1:50090</value>
    </property>

    <!-- 设置namenode存放的路径 -->
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/opt/soft/hadoop-3.2.1/name</value>
    </property>

    <!-- 设置hdfs副本数量 -->
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <!-- 设置datanode存放的路径 -->
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/opt/soft/hadoop-3.2.1/data</value>
    </property>
</configuration>

修改mapred-site.xml

<configuration>
    <!-- 通知框架MR使用YARN -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

修改yarn-site.xml

<configuration>
    <!-- 设置 resourcemanager 在哪个节点-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>

    <!-- reducer取数据的方式是mapreduce_shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

    <property>
         <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
         <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
</configuration>

新建masters文件

文件中指定的是secondary namenode 的主机

vi masters

# 添加下面一行,指定slaver01 为secondary namenode
slaver01

新建workers文件

文件中指定DataNode

vi workers

# 添加下面一行,指定slaver01 为secondary namenode
slaver01
slaver02

创建tmp、name、data文件夹

与上面的配置文件相对应

在**/opt/soft/hadoop-3.2.1/**路径下创建tmp、name、data文件夹

cd /opt/soft/hadoop-3.2.1/
mkdir tmp name data

复制文件到其他主机

复制/etc/hosts

scp /etc/hosts slaver01:/etc/
scp /etc/hosts slaver02:/etc/

复制/etc/profile

scp /etc/profile slaver01:/etc/
scp /etc/profile slaver02:/etc/

复制/opt/soft

scp -r /opt/soft slaver01:/opt/
scp -r /opt/soft slaver02:/opt/

环境变量复制过去后记得在对应的虚拟机中刷新环境变量

启动&测试

以下命令均需要在**/opt/soft/hadoop-3.2.1/**执行

第一次启动需要格式化namenode

./bin/hdfs namenode -format

image-20200319221613340

启动dfs

./sbin/start-dfs.sh

启动yarn

./sbin/start-yarn.sh

查看jps

master:

image-20200319221720801

slaver01:

image-20200319221743110

slaver02:

image-20200319221813023

测试是否启动成功

测试hdfs

浏览器中访问192.168.11.128:50070

image-20200319222014409

可以看到是有数据的并且有两个节点启动

测试yarn

浏览器中访问http://192.168.11.128:8088

image-20200319222147103

成功

至此,3台机器的hadoop集群搭建成功

  • 本文作者: Patrick
  • 本文链接: https://www.write1bug.cn/archives/centos8搭建分布式hadoop321环境hdfsyarn
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
# 设计模式 # Gis # Kafka # Druid # 微信小程序 # Java # 开源项目源码 # 物体识别 # 机器学习 # Mybatis # 微服务 # Feign # OpenVPN # CSS # Streamsets # CDH # SpringCloud # SpringBoot # maven # 分布式 # Shell # Tree # Linux # js # WebSocket # 多线程 # 集群 # Hadoop # 大数据 # JDK # ElasticSearch # MySQL # 数据库 # Redis # Http # Nginx
缓存击穿、缓存穿透和缓存雪崩
SpringBoot中基于Redis的分布式锁实现(通过Redisson)
  • 文章目录
  • 站点概览
Patrick

Patrick

不是在改BUG,就是在写BUG。

53 日志
9 分类
36 标签
RSS
E-mail
Creative Commons
© 2018 — 2023 Patrick
人生如逆旅|我亦是行人
鲁ICP备18043140号-1