大数据平台搭建 | Hadoop 集群搭建

1、环境说明

  • 基于Apache Hadoop 3.1.3 版本
  • 依赖JDK环境
  • Hadoop3.1.3下载地址

2、Hadoop架构

  • 狭义上的hadoop主要包括三大组件 分布式存储HDFS分布式计算MapReduce分布式资源管理和调度YARN

2.1 HDFS架构

  • 主要负责数据的存储
    在这里插入图片描述

  • NameNode: 管理命名空间、存储数据块映射信息(元数据)、 负责处理客户端对HDFS的访问.

  • SecondaryNameNode: NameNode 的热备, 会定期合并命名空间镜像 fsimage和命名空间镜像的编辑日志fsedits, 在主NameNode发生故障时, 可以 快速切换为新的 Active NameNode

  • DataNode: 负责实际文件数据的存储、文件会被拆分成多个块, 以多副本方式存储在不同的DataNode

2.2 Yarn 架构

  • 主要负责作业的调度 和 资源的管理
    在这里插入图片描述
  • ResourceManager(RM):
    • 处理提交的作业请求, 资源申请请求.
    • 监控NodeManager的状态
    • 启动和监控ApplicationMaster
  • NodeManager(NM):
    • 管理每个节点上运行的资源
    • 定时向 RM 汇报本节点上的资源使用情况和各个 Container 的运行状态
    • 处理来自AM 对 各个Container 启动/停止等请求
  • Container:
    • 即是任务运行的容器又是Yarn对资源的抽象, 封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等. RM 为 AM 返回的资源便是用 Container 表示的。 YARN 会为每个任务分配一个 Container 且该任务只能使用该 Container 中描述的资源
  • ApplicationMaster(AM):
    • 每个作业会在NM中启动一个AM, 然后由AM去负责发送MapTask、ReduceTask任务的启动请求给NM, 以及向RM申请任务执行所需要的资源
    • 与RM交互去申请资源Container(比如作业执行的资源, 任务执行的资源)
    • 负责启动、停止任务, 并且监控所有任务的运行状态,当任务Task有失败时,重新为任务申请资源并重启任务

3、集群规划

如无特别说明,每台服务器要保持一样的配置

Hadoop300Hadoop301Hadoop302
NameNodeV
DataNodeVVV
SecondaryNameNodeV
ResourceMangerV
NodeMangerVVV

4、下载解压

4.1 安装包放置

  • 将下载的hadoop3.1.3解压并创建快捷方式到~/app目录下, hadoop301,hadoop302同理
[hadoop@hadoop300 app]$ pwd
/home/hadoop/app
[hadoop@hadoop300 app]$ ll
lrwxrwxrwx   1 hadoop hadoop  47 2月  21 12:33 hadoop -> /home/hadoop/app/manager/hadoop_mg/hadoop-3.1.3

4.2 配置Hadoop环境变量

  • vim ~/.bash_profile
# ============ java =========================
export JAVA_HOME=/home/hadoop/app/jdk
export PATH=$PATH:$JAVA_HOME/bin# ======================= Hadoop ============================
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

5、hadoop配置

5.1 env文件

  • 修改${HADOOP_HOME}/etc/hadoop下的hadoop-env.sh, mapred-env.sh、yarn-env.sh这三个文件都添加JDK的环境变量
export JAVA_HOME=/home/hadoop/app/jdk

5.2 core-site.xml

  • 修改 ${HADOOP_HOME}/etc/hadoop/core-site.xml 文件
  • 关于代理用户的配置见官网 Proxy User

<property><name>fs.defaultFSname><value>hdfs://hadoop300:8020value>
property>
<property><name>hadoop.http.staticuser.username><value>hadoopvalue>property><property><name>hadoop.proxyuser.hadoop.hostsname><value>*value>property><property><name>hadoop.proxyuser.hadoop.groupsname><value>*value>property><property><name>hadoop.proxyuser.hadoop.usersname><value>*value>property>

5.3 hdfs-site.xml 文件 (hdfs配置)

  • 配置HDFS相关属性

<property><name>dfs.replicationname><value>2value>
property>
<property><name>dfs.namenode.secondary.http-addressname><value>hadoop302:9868value>
property>

5.4 yarn-site.xml (yarn配置)

  • 配置yarn相关属性

<property><name>yarn.nodemanager.aux-servicesname><value>mapreduce_shufflevalue>
property>
<property><name>yarn.resourcemanager.hostnamename><value>hadoop301value>
property>
<property><name>yarn.scheduler.minimum-allocation-mbname><value>200value>
property>

<property><name>yarn.scheduler.maximum-allocation-mbname><value>2048value>
property>
<property><name>yarn.nodemanager.resource.memory-mbname><value>4096value>
property>
<property><name>yarn.nodemanager.pmem-check-enabledname><value>falsevalue>
property>
<property><name>yarn.nodemanager.vmem-check-enabledname><value>falsevalue>
property>
<property><name>yarn.log.server.urlname><value>http://hadoop300:19888/jobhistory/logs/value> 
property>
<property><name>yarn.log-aggregation-enablename><value>truevalue>
property>
<property><name>yarn.log-aggregation.retain-secondsname><value>604800value>
property>

5.5 mapred-site.xml (MapReduce配置)

  • 配置MapReduce相关设置

<property><name>mapreduce.framework.namename><value>yarnvalue>
property><property><name>mapreduce.jobhistory.addressname><value>hadoop300:10020value>property><property><name>mapreduce.jobhistory.webapp.addressname><value>hadoop300:19888value>property>
<property><name>yarn.app.mapreduce.am.envname><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property><name>mapreduce.map.envname><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>
<property><name>mapreduce.reduce.envname><value>HADOOP_MAPRED_HOME=${HADOOP_HOME}value>
property>

5.6 workers 文件配置

  • 修改 ${HADOOP_HOME}/etc/hadoop/workers 文件, 设置Hadoop集群节点列表
    • tip: 注意不要出现空行和空格
hadoop300
hadoop301
hadoop302

6、启动测试

6.1 格式化NameNode

  • 在hadoop300执行
[hadoop@hadoop300 app]$ hdfs namenode -format

6.2 启动Hdfs

  • 在hadoop300启动
[hadoop@hadoop300 ~]$ start-dfs.sh
Starting namenodes on [hadoop300]
Starting datanodes
Starting secondary namenodes [hadoop302]

6.3 启动Yarn

  • 在hadoop301启动
[hadoop@hadoop301 ~]$ start-yarn.sh
Starting resourcemanager
Starting nodemanagers

6.4 启动JobHistory

[hadoop@hadoop300 hadoop]$ mapred --daemon start historyserver

6.5 效果

  • 启动成功后jps查看进程
  • 这时hdfs的nn、dn、sn都启动起来了,
  • 而yarn的RM、NM也启动起来了
  • mr的JobHistory也启动起来了
[hadoop@hadoop300 hadoop]$ xcall jps
--------- hadoop300 ----------
16276 JobHistoryServer
30597 DataNode
19641 Jps
30378 NameNode
3242 NodeManager
--------- hadoop301 ----------
24596 DataNode
19976 Jps
27133 ResourceManager
27343 NodeManager
--------- hadoop302 ----------
24786 SecondaryNameNode
27160 NodeManager
24554 DataNode
19676 Jps

访问HDFS的NameNode界面 在hadoop300:9870
在这里插入图片描述

访问HDFS的SecondaryNameNode界面 在hadoop300:9868
在这里插入图片描述

访问Yarn管理界面: 在hadoop301:8088
在这里插入图片描述

访问JobHistory的界面, 在hadoop300:19888
在这里插入图片描述

7、hadoop集群统一启动脚本

  • vim hadoop.sh
#!/bin/bashcase $1 in
"start"){echo ---------- Hadoop 集群启动 ------------echo "启动Hdfs"ssh hadoop300 "source ~/.bash_profile;start-dfs.sh"echo "启动Yarn"ssh hadoop300 "source ~/.bash_profile;mapred --daemon start historyserver"echo "启动JobHistory"ssh hadoop301 "source ~/.bash_profile;start-yarn.sh"
};;
"stop"){echo ---------- Hadoop 集群停止 ------------echo "关闭Hdfs"ssh hadoop300 "source ~/.bash_profile;stop-dfs.sh"echo "关闭Yarn"ssh hadoop300 "source ~/.bash_profile;mapred --daemon stop historyserver"echo "关闭JobHistory"ssh hadoop301 "source ~/.bash_profile;stop-yarn.sh"
};;
esac

10、打赏

如果觉得文章有用,你可鼓励下作者(支付宝)

在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部