双节点安装 Hadoop 集群

下载地址

Hadoop Homepage:

https://hadoop.apache.org/

JDK Homepage:

https://www.oracle.com/java/technologies/downloads/

环境初始化

主机列表

# /etc/hosts
192.168.1.111   hadoop01
192.168.1.112   hadoop02

设置主机名

# 在hadoop01节点执行
hostnamectl set-hostname hadoop01
exec bash

# 在hadoop02节点执行
hostnamectl set-hostname hadoop02
exec bash

设置时间同步

设置免密(创建hadoop用户后切换至hadoop用户执行)

安装过程

解压主程序

复制配置文件

安装 JDK

配置 Hadoop 用户的环境变量

配置 Hadoop 参数

Hadoop 目录结构

目录名
功能描述

bin

Hadoop 一些二进制文件目录,如 Hadoop、hdfs、yarn 命令等,都在这个目录下

etc

Hadoop 配置文件目录,Hadoop 的所有配置文件都在这个目录下

lib

本地库文件目录,由于 Hadoop 是使用 Java 语言开发的,但是有一些需求和操作并不适合使用 Java,所以就引入了本地库(NativeLibraries)的概念,通过本地库,Hadoop 可以更加高效地执行某一些操作

libexec

Hadoop 各个服务对应 shell 配置文件所在的目录,可用于配置日志输出目录、启动参数等基本信息

sbin

Hadoop 下启动各种服务的 shell 脚本文件,主要包含 HDFS 和 Yarn 中各类服务启动/关闭的脚本

logs

Hadoop 各种服务产生日志的目录,对运维来说,这个目录相当重要,因为需要经常看每个服务的启动日志,以确定服务启动或运行是否正常

share

此目录下有个 Hadoop 子目录,它存放的是 Hadoop 各个模块编译后的各种 Jar 包

修改配置文件

01 分布模式下,修改/etc/hadoop/conf/core-site.xml ,在<configuration>标签下增加如下内容

其中,fs.defaultFS 属性描述的是访问 HDFS 文件系统的 URI 加一个 RPC 端口, 不加端口的话,默认是 8020。另外,hadoop01 可以是服务器的主机名,也可以是任意字符,但都需要将此标识在服务器的 /etc/hosts 进行解析,也就是添加如下内容:

这里的 192.168.1.111 就是安装 Hadoop 软件的服务器 IP 地址。

02 修改/etc/hadoop/conf/hdfs-site.xml ,在标签下增加如下内容

03 修改/etc/hadoop/conf/mapred-site.xml ,在标签下增加如下内容

04 修改/etc/hadoop/conf/yarn-site.xml ,在标签下增加如下内容

05 修改/etc/hadoop/conf/workers (datanode节点)

启动 Hadoop 服务

Hadoop 服务简介

服务名称
描述

NameNode

HDFS 分布式文件系统的管理节点,主要用来处理客户端的读写请求、配置副本 策略、管理 HDFS 的名称空间等,是非常重要的一个服务

SecondaryNameNode

功能相当于 NameNode 的冷备份,用来保存NameNode的元数据信息

DataNode

真正存储数据的服务,负责存储客户端发来的数据块请求

ResourceManager

是 Hadoop 分布式计算中的一个资源调度进程,负责集群中所有资源的统一管理 和分配,是非常重要的一个服务

NodeManager

管理一个分布式计算集群中的每一个计算节点,例如监视集群节点资源使用情况 (CPU、内存、硬盘、网络),跟踪节点健康状态等

Jobhistoryserver

Hadoop 自带的一个历史服务,可以通过此服务查看已经运行完的Mapreduce 作业记录,比如用了多少个 Map 和 Reduce、作业提交时间、启动时间、完成时 间等信息,这个历史服务就是Jobhistoryserver

(1) 启动 NameNode 服务(hadoop01节点)

先对 NameNode 进行格式化

启动

访问 web 页面

(2) 启动 secondarynamenode 服务(hadoop02节点)

(3) 启动 DataNode 服务(hadoop01、02节点)

至此 HDFS 服务启动完毕

(4) 启动 ResourceManager 服务(hadoop02节点)

访问 ResourceManager web

(5) 启动 NodeManager 服务(hadoop01、02节点)

(6) 启动 Jobhistoryserver 服务(hadoop01节点)

访问 Jobhistoryserver web

至此,Hadoop 两节点分布式已经运行起来了,可通过 jps 命令查看各个进程的启动信息:

运用 Hadoop HDFS 命令进行分布式存储

查看 hdfs 根目录数据

在 hdfs 根目录创建一个 logs 目录

从本地上传一个文件到 hdfs 的 /logs 目录下

要查看 hdfs 中一个文本文件的内容

删除 hdfs 上一个文件

在 Hadoop 中运行 MapreDuce 程序

借助 Hadoop 安装包中附带的一个 mapreduce 的 demo 程序,体验简单的 MR 计算

这个 demo 程序位于 $HADOOP_HOME/share/hadoop/mapreduce ,此处演示版本名为:hadoop-mapreduce-examples-3.2.4.jar

单词计数是最简单也是最能体现 MapReduce 思想的程序之一,可以称为 MapReduce 版“Hello World”,hadoop-mapreduce-examples-3.2.4.jar 文件中包含了一个 wordcount 功能,它主要功能是用来统计一系列文本文件中每个单词出现的次数。下面开始执行分析计算。

(1) 创建一个新文件 demo.txt ,内容如下:

(2) 将创建的文件存入 HDFS

这里在 HDFS 上创建了一个目录 /demo,然后将刚才创建好的本地文件 put 到 HDFS 上,这里举例是一个文件,如果要统计多个文件内容,将多个文件都上传到 HDFS 的 /demo 目录即可。

(3) 执行分析计算任务

(4) 在 ResourceManager 的 Web 页面展示运行任务

细心的你可能已经发现了,上面在命令行执行的 wordcount 统计任务虽然最后显示是执行成功了,统计结果也正常,但是在 ResourceManager 的 Web 页面并没有显示出来。

究其原因,其实很简单:这是因为那个 mapreduce 任务并没有真正提交到 yarn 上来,因为默认 mapreduce 的运行环境是 local(本地),要让 mapreduce 在 yarn 上运行,需要做几个参数配置就行了。

需要修改的配置文件有两个,即 mapred-site.xml 和 yarn-site.xml,在你的配置文件目录,找到它们。

打开 mapred-site.xml 文件,在 标签内添加如下内容:

其中,mapreduce.framework.name 选项就是用来指定 mapreduce 的运行时环境,指定为 yarn 即可,下面的三个选项是指定 mapreduce 运行时一些环境信息。

最后,修改另一个文件 yarn-site.xml,添加如下内容到 标签中:

其中,yarn.nodemanager.aux-services 选项代表可在 NodeManager 上运行的扩展服务,需配置成 mapreduce_shuffle,才可运行 MapReduce 程序。

配置修改完成后,需要重启 ResourceManager 与 nodemanager 服务才能使配置生效

现在,我们再次运行刚才的那个 mapreduce 的 wordcount 统计,所有执行的任务都会在 ResourceManager 的 Web 页面展示出来

Last updated