Skip to content

Hadoop安装部署

一、集群组成概述

Hadoop集群包括两个集群:HDFS集群、YARN集群

两个集群逻辑上分离、通常物理上在一起

两个集群都是标准的主从架构集群

HDFS集群(分布式存储):

  • 主角色:NameNode
  • 从角色:DataNode
  • 主角色辅助角色:SecondaryNameNode

YARN集群(资源管理调度):

  • 主角色:ResourceManager
  • 从角色:NodeManager

MapReduce是计算框架、代码层面的组件 没有集群之说

二、集群模式安装

1、Hadoop源码编译

安装包、源码包下载地址:https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/

源码本地编译用途:匹配不同操作系统本地库环境,Hadoop某些操作比如压缩、IO需要调用系统本地库

2、集群角色规划

根据软件工作特性和服务器硬件资源情况合理分配

  • 资源上有抢夺冲突的,尽量不要部署在一起
  • 工作上需要互相配合的。尽量部署在一起

3、服务器环境配置

shell
## 主机名 
cat /etc/hostname

## hosts映射
vim /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.88.151 node1.itcast.cn node1
192.168.88.152 node2.itcast.cn node2
192.168.88.153 node3.itcast.cn node3

## JDK 1.8安装  上传 jdk-8u241-linux-x64.tar.gz到/export/server/目录下
cd /export/server/
tar zxvf jdk-8u241-linux-x64.tar.gz

	#配置环境变量
	vim /etc/profile
	
	export JAVA_HOME=/export/server/jdk1.8.0_241
	export PATH=$PATH:$JAVA_HOME/bin
	export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
	
	#重新加载环境变量文件
	source /etc/profile

## 集群时间同步
ntpdate ntp5.aliyun.com

## 防火墙关闭
firewall-cmd --state	#查看防火墙状态
systemctl stop firewalld.service  #停止firewalld服务
systemctl disable firewalld.service  #开机禁用firewalld服务

## ssh免密登录(只需要配置node1至node1、node2、node3即可)

	#node1生成公钥私钥 (一路回车)
	ssh-keygen  
	
	#node1配置免密登录到node1 node2 node3
	ssh-copy-id node1
	ssh-copy-id node2
	ssh-copy-id node3

4、Hadoop的安装

上传Hadoop安装包到node1 /export/server

shell
hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

tar zxvf hadoop-3.3.0-Centos7-64-with-snappy.tar.gz

修改配置文件(配置文件路径 hadoop-3.3.0/etc/hadoop)

1、hadoop-env.sh

shell
#文件最后添加
export JAVA_HOME=/export/server/jdk1.8.0_241

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

2、core-site.xml

xml
<!-- 设置默认使用的文件系统 Hadoop支持file、HDFS、GFS、ali|Amazon云等文件系统 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:8020</value>
</property>

<!-- 设置Hadoop本地保存数据路径 -->
<property>
    <name>hadoop.tmp.dir</name>
    <value>/export/data/hadoop-3.3.0</value>
</property>

<!-- 设置HDFS web UI用户身份 -->
<property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
</property>

<!-- 整合hive 用户代理设置 -->
<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

<!-- 文件系统垃圾桶保存时间 -->
<property>
    <name>fs.trash.interval</name>
    <value>1440</value>
</property>

3、hdfs-site.xml

xml
<!-- 设置SNN进程运行机器位置信息 -->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:9868</value>
</property>

4、mapred-site.xml

xml
<!-- 设置MR程序默认运行模式: yarn集群模式 local本地模式 -->
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>

<!-- MR程序历史服务地址 -->
<property>
  <name>mapreduce.jobhistory.address</name>
  <value>node1:10020</value>
</property>
 
<!-- MR程序历史服务器web端地址 -->
<property>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>node1:19888</value>
</property>

<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

5、yarn-site.xml

xml
<!-- 设置YARN集群主角色运行机器位置 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
	<value>node1</value>
</property>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 是否将对容器实施物理内存限制 -->
<property>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 是否将对容器实施虚拟内存限制。 -->
<property>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <value>false</value>
</property>

<!-- 开启日志聚集 -->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 设置yarn历史服务器地址 -->
<property>
    <name>yarn.log.server.url</name>
    <value>http://node1:19888/jobhistory/logs</value>
</property>

<!-- 历史日志保存的时间 7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>

6、workers

node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

7、分发同步hadoop安装包

shell
cd /export/server

scp -r hadoop-3.3.0 root@node2:$PWD
scp -r hadoop-3.3.0 root@node3:$PWD

8、将hadoop添加到环境变量(3台机器)

shell
vim /etc/profile

export HADOOP_HOME=/export/server/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

source /etc/profile


#别忘了scp给其他两台机器哦

5、Hadoop目录结构

目录说明
binHadoop最基本的管理脚本和使用脚本的目录,这些脚本是sbin目录下管理脚本的基础实现,用户可以直接使用这些脚本管理和使用Hadoop
etcHadoop配置文件所在的目录
include对外提供的编程库头文件(具体动态库和静态库在lib目录中),这些头文件均是用C++定义的,通常用于C++程序访问HDFS或者编写MapReduce程序
lib包含了Hadoop对外提供的编程动态库和静态库,与include目录中的头文件结合使用
libexec各个服务对用的shel1配置文件所在的目录,可用于配置日志输出、启动参数(比如JVM参数)等基本信息
sbinHadoop管理脚本所在的目录,主要包含HDFS和YARN中各类服务的启动/关闭脚本
shareHadoop各个模块编译后的 jar包所在的目录,官方自带示例

6、HDFS初始化

首次启动HDFS时,必须对其进行格式化操作。

format本质上是初始化工作,进行HDFS清理和准备工作

shell
hdfs namenode -format

如果多次format,除了造成数据丢失外,还会导致hafs集群主从角色之间互不识别。通过删除所有机器hadoop.tmp.dir目录重新format解决

三、集群启停命令

1、手动逐个进程启停

每台机器上每次手动启动关闭一个角色进程,可以精准控制每个进程启停,避免群起群停

HDFS集群

shell
#hadoop2.x版本命令
hadoop-daemon.sh start|stop namenode|datanode|secondarynamenode

#hadoop3.x版本命令
hdfs --daemon start|stop namenode|datanode|secondarynamenode

YARN集群

shell
#hadoop2.x版本命令
yarn-daemon.sh start|stop resourcemanager|nodemanager

#hadoop3.x版本命令
yarn --daemon start|stop resourcemanager|nodemanager

2、shell脚本一键启停

在node1上,使用软件自带的shell脚本一键启动

前提:配置好机器之间的SSH免密登录和workers文件

shell
start-dfs.sh

start-yarn.sh

3、进程状态、日志查看

启动完毕之后可以使用 jps命令查看进程是否启动成功

Hadoop启动日志路径:/export/server/hadoop-3.3.0/logs/

四、Web UI

HDFS集群:http://node1:9870/

YARN集群:http://node1:8088/

五、Hadoop初体验

1、HDFS

HDFS本质就是一个文件系统

有目录树结构 和Linux类似,分文件、文件夹

2、MapReduce+YARN

执行Hadoop官方自带的MapReduce案例,评估圆周率r的值。

shell
cd /export/server/hadoop-3.3.0/share/hadoop/mapreduce/
hadoop jar hadoop-mapreduce-examples-3.3.0.jar pi 2 4

Released under the MIT License.