史上最全! 保姆级 Hadoop 安装教学

Screenshot202105301926590101.jpg
学大数据,不管怎么样始终都绕不开 Hadoop 这个黄色的小象
image.png
而安装 Hadoop 可以说是进入大数据领域的第一步了,作为学校里大数据专业还在坚持学大数据的同学,经过这几年的学习还是积累了些许经验的,来一波保姆级 Hadoop 安装教学.

首先默认你有些许 Linux 的基础,并且电脑上已经安装好 vmware workstation 等类似的虚拟机安装软件 (当然你有钱买云服务器当我没说)

Linux 虚拟机安装

安装 Hadoop 前的准备工作

Hadoop 单机安装与配置

Hadoop 伪分布式安装与配置

伪分布式模式介绍

首先我们要先了解了解伪分布式有什么特点
1.特点

  1. 用途
    比 Standalone mode 多了代码调试功能,允许检查内存使用情况,HDFS 输入输出,以及其他的守护进程交
    互。

由于我们在前面已经进行了免密登陆 静态 ip host 映射 的配置也安装了 jdk 和 Hadoop 所以我们接下来直接进入到文件的配置

文件配置

[root@master ~]# cd $HADOOP_HOME/etc/haoop
[root@master hadoop]# vi core-site.xml
<configuration>
<!-- 配置分布式文件系统的schema和ip以及port,默认8020-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
扩展: hadoop1.x的默认端口是9000,hadoop2.x的默认端口是8020,使用哪一个都可以
[root@master hadoop]# vi hdfs-site.xml
<configuration>
<!-- 配置副本数,注意,伪分布模式只能是1。-->
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>

格式化 NameNode

hdfs namenode -format

启动 HDFS

start-dfs.sh

image.png

WebUI_50070

可以在浏览器上输入:192.168.10.200:50070 来查看一下伪分布式集群的信息
--1. 浏览一下页面上提示的 ClusterID,BlockPoolID
--2. 查看一下活跃节点(Live Nodes)的个数,应该是 1 个

image.png

简单解释:

Compiled:编译 hadoop 是由 kshvachk 工具集成的
Cluster ID:集群 id
Block Pool ID:datanode 节点的 block 池的 id,每个 datanode 节点的都要一样

完全分布式集群的安装与配置

单机式和伪分布式不能用于生产环境,只能在平时的调试和学习中用到,我们真正用到的还是完全分布式的集群

虚拟机说明

采用虚拟机克隆的方式克隆两台虚拟机使得三台虚拟机配置如下

主机名 IP
master 192.168.10.200
slave1 192.168.10.201
slave2 192.168.10.202

说明:如果是克隆操作的 slave1 slave2 就不需要关防火墙了只用在/etc/hosts 中把把这两台克隆来的映射加上 然后把 ip 改一下

注意,注意,注意:
1.如果你是从伪分布式过来的,最好先把伪分布式的相关守护进程关闭:stop-all.sh
2.删除原来伪分布式的相关设置
如果原来使用的是默认路径,现在已经没有用了
如果原来使用的跟现在全分布式路径一样,因为这里跟之前的初始化的内容不一样,而且这个文件要让系统自动生成
综上:要删除掉 namenode 和 datanode 的目录

守护进程布局

我们搭建 hdfs 的完全分布式,顺便搭建一下 yarn。hdfs 和 yarn 的相关守护进程的布局如下:

master: namenode,datanode,ResourceManager,nodemanager
slave1: datanode,nodemanager,secondarynamenode
slave2: datanode,nodemanager

Hadoop 的配置文件的配置

[root@master ~]# cd $HADOOP_HOME/etc/hadoop/
[root@master hadoop]# vi core-site.xml
<configuration>
<!-- hdfs的地址名称schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:8020</value>
</property>
<!-- hdfs的基础路径被其他属性所依赖的一个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/apps/tmp</value>
</property>
</configuration>
[root@master hadoop]# vi core-site.xml
<configuration>
<!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块的大小(128M),下面的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址主机名和端口号参考守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
<!--文件的检测目录-->
<property>
<name>fs.checkpoint.dir</name>
<value>file:///${hadoop.tmp.dir}/checkpoint/dfs/cname</value>
</property>
<!--日志edits的检测目录-->
<property>
<name>fs.checkpoint.edits.dir</name>
<value>file:///${hadoop.tmp.dir}/checkpoint/dfs/cname</value>
</property>
<property>
<name>dfs.http.address</name>
<value>master:50070</value>
</property>
</configuration>

如果只是搭建 hdfs,只需要配置 core-site.xml 和 hdfs-site.xml 文件就可以了,但是如果要学习 MapReduce
是需要 YARN 资源管理器的,因此,在这里,提前配置一下相关文件

[root@master hadoop]# cp mapred-site.xml.template mapred-site.xml
[root@master hadoop]# vi mapred-site.xml
<configuration>
<!-- 指定mapreduce使用yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 配置作业历史服务器的http地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
[root@master hadoop]# vi yarn-site.xml
<configuration>
<!-- 指定yarn的shuffle技术-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定resourcemanager的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!--下面的可选-->
<!--指定shuffle对应的类 -->
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--配置resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<!--配置resourcemanager的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<!--配置resoucemanager的资源调度的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<!--配置resourcemanager的管理员的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<!--配置resourcemanager的web ui 的监控页面-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
[root@master hadoop]# vi slaves
master
slave1
slave2

image.png

当把 master 机器上的 hadoop 的相关文件配置完毕后,我们有以下两种方式来选择配置另外几台机器的 hadoop.

从头开始再安装两台虚拟机还是很麻烦的这里我们选择克隆

具体操作步骤上面都有这里不再赘述

格式化 NameNode

# 在master进行操作
hdfs namenode -format

如果你操作顺利,下面就可以启动 Hadoop 集群了!

启动脚本和关闭脚本介绍

1. 启动脚本
-- start-dfs.sh :用于启动hdfs集群的脚本
-- start-yarn.sh :用于启动yarn守护进程
-- start-all.sh :用于启动hdfs和yarn
2. 关闭脚本
-- stop-dfs.sh :用于关闭hdfs集群的脚本
-- stop-yarn.sh :用于关闭yarn守护进程
-- stop-all.sh :用于关闭hdfs和yarn
3. 单个守护进程脚本
-- hadoop-daemons.sh :用于单独启动或关闭hdfs的某一个守护进程的脚本
-- hadoop-daemon.sh :用于单独启动或关闭hdfs的某一个守护进程的脚本
reg:
hadoop-daemon.sh [start|stop] [namenode|datanode|secondarynamenode]
-- yarn-daemons.sh :用于单独启动或关闭hdfs的某一个守护进程的脚本
-- yarn-daemon.sh :用于单独启动或关闭hdfs的某一个守护进程的脚本
reg:
yarn-daemon.sh [start|stop] [resourcemanager|nodemanager]

最后每台主机进行 jps 进程查看操作 如果启动的进程是按照我们的进程布局来的,那么恭喜你 Hadoop 集群搭建成功!

当然如果有些进程没有启动成功 我们可以对症下药来修改相应进程的配置文件

  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    72 引用 • 121 回帖 • 653 关注
  • 大数据

    大数据(big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。

    83 引用 • 112 回帖

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...