Hadoop3.0集群搭建

Hadoop3.0集群搭建

1.集群简介

HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起。
HDFS集群负责海量数据的存储,集群中的角色主要有:
NameNode、DataNode、SecondaryNameNode
YARN集群负责海量数据运算时的资源调度,集群中的角色主要有:
ResourceManager、NodeManager
那mapreduce是什么呢?它其实是一个分布式运算编程框架,是应用程序开发包,由用户按照编程规范进行程序开发,后打包运行在HDFS集群上,并且受到YARN集群的资源调度管理。

2.集群部署方式

Hadoop部署方式分三种:

2.1 standalone mode(独立模式)

独立模式又称为单机模式,仅1个机器运行1个java进程,主要用于调试。

2.2 Pseudo-Distributed mode(伪分布式模式)

伪分布模式也是在1个机器上运行HDFS的NameNode和DataNode、YARN的 ResourceManger和NodeManager,但分别启动单独的java进程,主要用于调试。

2.3 Cluster mode(群集模式)

集群模式主要用于生产环境部署。会使用N台主机组成一个Hadoop集群。这种部署模式下,主节点和从节点会分开部署在不同的机器上。

3.hadoop重新编译

3.1 为什么要编译hadoop?

由于appache给出的hadoop的安装包没有提供带C程序访问的接口,所以我们在使用本地库(本地库可以用来做压缩,以及支持C程序等等)的时候就会出问题,需要对Hadoop源码包进行重新编译。可参考Hadoop源码编译

4.Hadoopn集群安装(已经编译完成的安装包)

集群模式主要用于生产环境部署,需要多台主机,并且这些主机之间可以相互访问,我们在之前搭建好基础环境的三台虚拟机上进行Hadoop的搭建。

4.1 集群规划

10G/ 2cores	7G / 2cores	7G / 2coresnode1.itcast.cn	node2.itcast.cn	node3.itcast.cnHDFS集群守护进程	NameNode	√	×	×SecondaryNameNode	×	√	×DataNode	√	√	√YARN集群守护进程	ResourceManager	√	×	×NodeManager	√	√	√

4.2 解压Hadoop安装包

上传解压hadoop 3.1.4安装文件
cd /export/software
rz

解压
tar -xvzf hadoop-3.1.4.tar.gz -C ../server

 在每个节点中创建用于存放数据的data目录
# NameNode数据
mkdir -p /export/server/hadoop-3.1.4/data/namenode
# DataNode数据
mkdir -p /export/server/hadoop-3.1.4/data/datanode

4.3 准备安装环境

上传解压hadoop 3.1.4安装文件
cd /export/software
rz

解压
tar -xvzf hadoop-3.1.4.tar.gz -C ../server
在每个节点中创建用于存放数据的data目录
# NameNode数据
mkdir -p /export/server/hadoop-3.1.4/data/namenode
# DataNode数据
mkdir -p /export/server/hadoop-3.1.4/data/datanode

4.4 编辑配置文件

4.4.1 配置NameNode(core-site.xml)

cd /export/server/hadoop-3.1.4/etc/hadoop
vim core-site.xml
--------------------------------
在第19行下添加以下内容:
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://node1.itcast.cn:9820</value>
  <description>配置NameNode的URL</description>
</property>

4.4.2 配置HDFS路径(hdfs-site.xml)

vim hdfs-site.xml
--------------------------------
在第20行下添加以下内容:
<property>
  <name>dfs.namenode.name.dir</name>
  <value>/export/server/hadoop-3.1.4/data/namenode</value>
  <description>NameNode存储名称空间和事务日志的本地文件系统上的路径</description>
</property>
<property>
  <name>dfs.datanode.data.dir</name>
  <value>/export/server/hadoop-3.1.4/data/datanode</value>
  <description>DataNode存储名称空间和事务日志的本地文件系统上的路径</description>
</property>

4.4.3 配置YARN(yarn-site.xml)

vim yarn-site.xml
--------------------------------
在第18行下添加以下内容:
<property> 
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value> 
</property>
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>512</value>
  <description>为每个容器请求分配的最小内存限制资源管理器(512M)</description>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-mb</name>
  <value>4096</value>
  <description>为每个容器请求分配的最大内存限制资源管理器(4G)</description>
</property>
<property>
  <name>yarn.nodemanager.vmem-pmem-ratio</name>
  <value>4</value>
  <description>虚拟内存比例,默认为2.1,此处设置为4倍</description>
</property>

4.4.4 配置MapReduce(mapred-site.xml)

vim mapred-site.xml
----------------------------------
在第20行下添加以下内容:
<property>
  <name>mapreduce.framework.name</name>
  <value>yarn</value>
  <description>执行MapReduce的方式:yarn/local</description>
</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>

4.4.5 workers文件

vim /export/server/hadoop-3.1.4/etc/hadoop/workers
----------------------------------
# 删除第一行localhost,然后添加以下三行
node1.itcast.cn
node2.itcast.cn
node3.itcast.cn

4.4.6 修改hadoop.env环境变量

hadoop.env文件
vim /export/server/hadoop-3.1.4/etc/hadoop/hadoop-env.sh 
修改第54行为:
export JAVA_HOME=/export/server/jdk1.8.0_241

4.4.7 配置环境变量

vim /etc/profile
export HADOOP_HOME=/export/server/hadoop-3.1.4
export PATH=$PATH:${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:

source /etc/profile

SecureCRT全部退出,重新远程连接

4.5 分发配置好的Hadoop安装文件和环境变量

cd /export/server/
scp -r hadoop-3.1.4 node2.itcast.cn:$PWD
scp -r hadoop-3.1.4 node3.itcast.cn:$PWD
scp /etc/profile node2.itcast.cn:/etc
scp /etc/profile node3.itcast.cn:/etc
在每个节点上执行
source /etc/profile

4.6 格式化HDFS

首次启动HDFS时,必须对其进行格式化操作。本质上是一些清理和准备工作,
因为此时的HDFS在物理上还是不存在的。

cd /export/server/hadoop-3.1.4
bin/hdfs namenode -format itcast-hadoop

4.7 启动Hadoop集群

要启动Hadoop集群,需要启动HDFS和YARN两个集群。

4.7.1 启动HDFS集群

-- 1.选择node1.itcast.cn节点启动NameNode节点
hdfs --daemon start namenode

-- 2.在所有节点上启动DataNode
hdfs --daemon start datanode

-- 3.启动Secondary NameNode
hdfs --daemon start secondarynamenode

4.7.2 启动YARN集群

-- 3.选择node1.itcast.cn节点启动ResourceManager节点
yarn --daemon start resourcemanager

-- 4.在所有节点上启动NodeManager
yarn --daemon start nodemanager

注意:如果在启动之后,有些服务没有启动成功,则需要查看启动日志,Hadoop的启动日志在每台主机的/export/server/hadoop-x.x.x/logs/目录,需要根据哪台主机的哪个服务启动情况去对应的主机上查看相应的日志,以下是node1主机的日志目录.

4.8 关闭Hadoop集群

4.8.1 关闭HDFS集群

-- 1.关闭NameNode
hdfs --daemon stop namenode

-- 2.每个节点关闭DataNode
hdfs --daemon stop datanode
关闭Secondary NameNode
hdfs --daemon stop secondarynamenode

4.8.2 关闭YARN集群

-- 3.每个节点关闭ResourceManager
yarn --daemon stop resourcemanager

-- 4. 每个节点关闭NodeManager
yarn --daemon stop nodemanager

4.9 一键启动、关闭

Hadoop 3中不允许使用root用户来一键启动集群

Starting resourcemanager
ERROR: Attempting to operate on yarn resourcemanager as root
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.
Starting nodemanagers
ERROR: Attempting to operate on yarn nodemanager as root
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.

4.9.1 修改配置配置启动用户

4.9.1.1 HDFS集群一键脚本

cd /export/server/hadoop-3.1.4/sbin

编辑start-dfs.sh、stop-dfs.sh
在两个文件顶部添加以下内容:
HDFS_DATANODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

4.9.1.2 YARN集群一键脚本

start-yarn.sh、stop-yarn.sh
在两个文件顶部添加以下内容:
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

4.9.1.3 一键启动

-- 一键启动HDFS、YARN
start-dfs.sh
start-yarn.sh

4.9.1.4 一键关闭

stop-dfs.sh
stop-yarn.sh
为了方便在windows上访问Hadoop,我们可以配置一个域名映射,
就是以后我们只需要输入node1.itcast.cn,就会自动映射为对应的ip地址。

4.10 配置windows域名映射

1.	以管理员身份打开C:\Windows\System32\drivers\etc目录下的hosts文件
2.	在文件最后添加以下映射域名和ip映射关系
192.168.88.100 node1.itcast.cn
192.168.88.101 node2.itcast.cn
192.168.88.102 node3.itcast.cn
3.	保存退出
4.	测试映射是否生效
C:\Users\China>ping node1.itcast.cn
正在 Ping node1.itcast.cn [192.168.88.100] 具有 32 字节的数据:
来自 192.168.88.100 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.88.100 的回复: 字节=32 时间<1ms TTL=64

C:\Users\China>ping node2.itcast.cn
正在 Ping node2.itcast.cn [192.168.88.101] 具有 32 字节的数据:
来自 192.168.88.101 的回复: 字节=32 时间<1ms TTL=64
192.168.88.101 的 Ping 统计信息:
    数据包: 已发送 = 1,已接收 = 1,丢失 = 0 (0% 丢失),

C:\Users\China>ping node3.itcast.cn
正在 Ping node3.itcast.cn [192.168.88.102] 具有 32 字节的数据:
来自 192.168.88.102 的回复: 字节=32 时间=9ms TTL=64
来自 192.168.88.102 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.88.102 的回复: 字节=32 时间<1ms TTL=64

4.11 访问WebUI

NameNode: http://node1.itcast.cn:9870
YARN: http://node1.itcast.cn:8088

猜你喜欢

转载自blog.csdn.net/LiReign/article/details/120521360