热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoop高可用+mapreduceonyarn集群搭建

虚拟机安装本次安装了四台虚拟机:hadoop001、hadoop002、hadoop003、hadoop004,安装过程略过移除虚拟机自带jdkr

虚拟机安装

本次安装了四台虚拟机:hadoop001、hadoop002、hadoop003、hadoop004,安装过程略过

移除虚拟机自带jdk

rpm -qa | grep -i java | xargs -n1 rpm -e --nodeps

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld.service

给普通用户添加root权限

/etc/sudoers

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
node01 ALL=(ALL) ALL # 需要添加root权限的用户

安装hadoop集群准备


新建目录

mkdir /opt/software # 安装包存放位置
mkdir /opt/module # 程序安装目录
chown -R node01:node01 /opt/software # 修改新建目录所属用户以及用户组
chown -R node01:node01 /opt/module # 修改新建目录所属用户以及用户组

下载需要安装的安装包

# jdk官网需要登录验证,这里不做记录
wget --no-check-certificate https://dlcdn.apache.org/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
wget --no-check-certificate https://dlcdn.apache.org/hadoop/common/hadoop-3.2.4/hadoop-3.2.4.tar.gz

将下载的安装包解压到安装目录

tar -zxf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/module
tar -zxf hadoop-3.2.4.tar.gz -C /opt/module

安装jdk

vim /etc/profile.d/my_env.sh
export JAVA_HOME=/opt/module/jdk1.8.0_361
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile

jdk验证

java -version
java version "1.8.0_361"
Java(TM) SE Runtime Environment (build 1.8.0_361-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.361-b09, mixed mode)

配置Hadoop安装路径

vim /etc/profile.d/my_env.sh
export HADOOP_HOME=/opt/module/hadoop-3.2.4
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:${PATH}
source /etc/profile

hadoop验证

hadoop version
Hadoop 3.2.4
Source code repository Unknown -r 7e5d9983b388e372fe640f21f048f2f2ae6e9eba
Compiled by ubuntu on 2022-07-12T11:58Z
Compiled with protoc 2.5.0
From source with checksum ee031c16fe785bbb35252c749418712
This command was run using /opt/module/hadoop-3.2.4/share/hadoop/common/hadoop-common-3.2.4.jar

完全分布式+高可用+mapreduce on yarn 搭建


免密登录

# 四台主机上分别执行以下命令
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub node01@hadoop001
ssh-copy-id -i ~/.ssh/id_rsa.pub node01@hadoop002
ssh-copy-id -i ~/.ssh/id_rsa.pub node01@hadoop003
ssh-copy-id -i ~/.ssh/id_rsa.pub node01@hadoop004

配置文件调整

核心配置文件 core-site.xml


<property>
<name>fs.defaultFSname>
<value>hdfs://myclustervalue>
property>

<property>
<name>hadoop.tmp.dirname>
<value>/var/doudou/hadoop/havalue>
property>

<property>
<name>hadoop.http.staticuser.username>
<value>doudouvalue>
property>

<property>
<name>ha.zookeeper.quorumname>
<value>hadoop004:2181,hadoop002:2181,hadoop003:2181value>
property>

HDFS配置文件 hdfs-site.xml


<property>
<name>dfs.replicationname>
<value>3value>
property>

<property>
<name>dfs.nameservicesname>
<value>myclustervalue>
property>

<property>
<name>dfs.ha.namenodes.myclustername>
<value>nn1,nn2value>
property>

<property>
<name>dfs.namenode.rpc-address.mycluster.nn1name>
<value>hadoop001:8020value>
property>
<property>
<name>dfs.namenode.rpc-address.mycluster.nn2name>
<value>hadoop002:8020value>
property>

<property>
<name>dfs.namenode.shared.edits.dirname>
<value>qjournal://hadoop001:8485;hadoop002:8485;hadoop003:8485/myclustervalue>
property>

<property>
<name>dfs.client.failover.proxy.provider.myclustername>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvidervalue>
property>

<property>
<name>dfs.ha.fencing.methodsname>
<value>sshfencevalue>
property>
<property>
<name>dfs.ha.fencing.ssh.private-key-filesname>
<value>/root/.ssh/id_dsavalue>
property>

<property>
<name>dfs.journalnode.edits.dirname>
<value>/var/doudou/hadoop/ha/jnnvalue>
property>

<property>
<name>dfs.ha.automatic-failover.enabledname>
<value>truevalue>
property>

YARM配置文件 yarn-site.xml


<property>
<name>yarn.nodemanager.aux-servicesname>
<value>mapreduce_shufflevalue>
property>

<property>
<name>yarn.resourcemanager.ha.enabledname>
<value>truevalue>
property>

<property>
<name>yarn.resourcemanager.cluster-idname>
<value>rmhacluster1value>
property>

<property>
<name>yarn.resourcemanager.ha.rm-idsname>
<value>rm1,rm2value>
property>

<property>
<name>yarn.resourcemanager.hostname.rm1name>
<value>hadoop003value>
property>
<property>
<name>yarn.resourcemanager.hostname.rm2name>
<value>hadoop004value>
property>

<property>
<name>yarn.resourcemanager.webapp.address.rm1name>
<value>hadoop003:8088value>
property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2name>
<value>hadoop004:8088value>
property>

<property>
<name>yarn.resourcemanager.zk-addressname>
<value>hadoop002:2181,hadoop003:2181,hadoop004:2181value>
property>

<property>
<name>yarn.application.classpathname>
<value>/opt/hadoop-3.2.4/etc/hadoop:/opt/hadoop-3.2.4/share/hadoop/common/lib/*:/opt/hadoop-3.2.4/share/hadoop/common/*:/opt/hadoop-3.2.4/share/hadoop/hdfs:/opt/hadoop-3.2.4/share/hadoop/hdfs/lib/*:/opt/hadoop-3.2.4/share/hadoop/hdfs/*:/opt/hadoop-3.2.4/share/hadoop/mapreduce/lib/*:/opt/hadoop-3.2.4/share/hadoop/mapreduce/*:/opt/hadoop-3.2.4/share/hadoop/yarn:/opt/hadoop-3.2.4/share/hadoop/yarn/lib/*:/opt/hadoop-3.2.4/share/hadoop/yarn/*value>
property>

<property>
<name>yarn.log-aggregation-enablename>
<value>truevalue>
property>

<property>
<name>yarn.log.server.urlname>
<value>http://hadoop001:19888/jobhistory/logsvalue>
property>

<property>
<name>yarn.log-aggregation.retain-secondsname>
<value>604800value>
property>

MapReduce配置文件 mapred-site.xml

<property>
<name>mapreduce.framework.namename>
<value>yarnvalue>
property>

<property>
<name>mapreduce.jobhistory.addressname>
<value>hadoop001:10020value>
property>

<property>
<name>mapreduce.jonhistory.webapp.addressname>
<value>hadoop001:19888value>
property>

datanode节点 workers

# hadoop-3.2.4/etc/hadoop/workers
hadoop001
hadoop002
hadoop003
hadoop004

将调整的五个配置文件发送到其它三台机器上

xsync /opt/module/hadoop-3.2.4/etc/hadoop/mapred-site.xml

启动集群

在这里插入图片描述

启动zookeeper集群

myzookeeper.sh start

格式化namenode

# 初次启动时需格式化namenode
# hadoop001、hadoop002、hadoop003三台节点上启动journalnode
hdfs --daemon start journalnode
# 在hadoop001或者hadoop002上格式化namenode
hdfs namenode -format
# 启动格式化节点的namenode
hdfs --daemon start namenode
# 在另一台namenode节点上同步数据
hdfs namenode -bootstrapStandby
# 初始化zookeeper节点数据
hdfs zkfc -formatZK
# 启动hdfs、yarn、historyserver服务
start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver

# 后续启动集群
# 先启动zookeeper集群
myzookeeper.sh start
# 在启动hadoop集群
myhadoop.sh

相关地址信息

WEB端查看HDFS的namenode 【http://hadoop001:9870】
WEB端查看YARN的ResourceManager 【http://hadoop003:8088】
WEB端查看JobHistiory 【http://hadoop001:19888】

相关脚本


xsync.sh

#!/bin/bash
#1.校验参数个数
if [ $# -lt 1 ]
then
echo Not Enough Arguement!
exit;
fi
# 遍历指定机器&#xff0c;进行数据发送
for host in hadoop001 hadoop002 hadoop003 hadoop004
do
echo &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; $host &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;
for file in $&#64;
do
# 判断文件是否存在
if [ -e $file ]
then
# 获取父目录
pdir&#61;$(cd -P $(dirname $file); pwd)
# 获取当前文件名称
fame&#61;$(basename $file)
ssh $host "mkdir -p $pdir"
rsync -av $pdir/$fname $host:$pdir
else
echo $file dose not exists!
fi
done
done

jpsall.sh

#!/bin/bash
for host in hadoop001 hadoop002 hadoop003 hadoop004
do
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; $host &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
ssh $host jps
done

myzookeeper.sh

#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit;
fi
case $1 in
"start")
echo " &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; 启动zookeeper集群 &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
for host in hadoop002 hadoop003 hadoop004
do
echo "----------- --------- $host ----------- --------"
ssh $host zkServer.sh start
done
;;
"stop")
echo " &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; 停止zookeeper集群 &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
for host in hadoop002 hadoop003 hadoop004
do
echo "------------------- - $host ------------------- "
ssh $host zkServer.sh stop
done
;;
"status")
echo " &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; zookeeper集群状态 &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
for host in hadoop002 hadoop003 hadoop004
do
echo "------------------- - $host ----------- --------"
ssh $host zkServer.sh status
done
;;
*)
echo "Input Args Error..."
;;
esac

myhadoop.sh

#!/bin/bash
if [ $# -lt 1 ]
then
echo "No Args Input..."
exit;
fi
case $1 in
"start")
echo " &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; 启动hadoop集群 &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
echo " ------------- 启动hdfs -------------"
ssh hadoop001 "/opt/hadoop-3.2.4/sbin/start-dfs.sh"
echo " ------------- 启动yarn -------------"
ssh hadoop003 "/opt/hadoop-3.2.4/sbin/start-yarn.sh"
echo " -------- 启动historyserver ---------"
ssh hadoop001 "/opt/hadoop-3.2.4/bin/mapred --daemon start historyserver"
;;
"stop")
echo "&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61; 关闭hadoop集群 &#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;"
echo " ------------ 关闭historyserver ----------"
ssh hadoop001 "/opt/hadoop-3.2.4/bin/mapred --daemon stop historyserver"
echo " ------------- 关闭yarn ------------ "
ssh hadoop003 "/opt/hadoop-3.2.4/sbin/stop-yarn.sh"
echo " ------------ 关闭hadoop ----------- "
ssh hadoop001 "/opt/hadoop-3.2.4/sbin/stop-dfs.sh"
;;
*)
echo "Input Args Error..."
;;
esac






推荐阅读
  • 本文探讨了 Kafka 集群的高效部署与优化策略。首先介绍了 Kafka 的下载与安装步骤,包括从官方网站获取最新版本的压缩包并进行解压。随后详细讨论了集群配置的最佳实践,涵盖节点选择、网络优化和性能调优等方面,旨在提升系统的稳定性和处理能力。此外,还提供了常见的故障排查方法和监控方案,帮助运维人员更好地管理和维护 Kafka 集群。 ... [详细]
  • 为了在Hadoop 2.7.2中实现对Snappy压缩和解压功能的原生支持,本文详细介绍了如何重新编译Hadoop源代码,并优化其Native编译过程。通过这一优化,可以显著提升数据处理的效率和性能。此外,还探讨了编译过程中可能遇到的问题及其解决方案,为用户提供了一套完整的操作指南。 ... [详细]
  • Apache Hadoop HDFS QJournalProtocol 中 getJournalCTime 方法的应用与代码实例分析 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
  • InnoDB当前仅支持一次创建一个FULLTEXT索引 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 如何利用Java 5 Executor框架高效构建和管理线程池
    Java 5 引入了 Executor 框架,为开发人员提供了一种高效管理和构建线程池的方法。该框架通过将任务提交与任务执行分离,简化了多线程编程的复杂性。利用 Executor 框架,开发人员可以更灵活地控制线程的创建、分配和管理,从而提高服务器端应用的性能和响应能力。此外,该框架还提供了多种线程池实现,如固定线程池、缓存线程池和单线程池,以适应不同的应用场景和需求。 ... [详细]
  • CTF竞赛中文件上传技巧与安全绕过方法深入解析
    CTF竞赛中文件上传技巧与安全绕过方法深入解析 ... [详细]
  • Squaretest:自动生成功能测试代码的高效插件
    本文将介绍一款名为Squaretest的高效插件,该工具能够自动生成功能测试代码。使用这款插件的主要原因是公司近期加强了代码质量的管控,对各项目进行了严格的单元测试评估。Squaretest不仅提高了测试代码的生成效率,还显著提升了代码的质量和可靠性。 ... [详细]
  • 动态壁纸 LiveWallPaper:让您的桌面栩栩如生(第二篇)
    在本文中,我们将继续探讨如何开发动态壁纸 LiveWallPaper,使您的桌面更加生动有趣。作为 2010 年 Google 暑期大学生博客分享大赛 Android 篇的一部分,我们将详细介绍 Ed Burnette 的《Hello, Android》第三版中的相关内容,并分享一些实用的开发技巧和经验。通过本篇文章,您将了解到如何利用 Android SDK 创建引人入胜的动态壁纸,提升用户体验。 ... [详细]
  • 在 Kubernetes 中,Pod 的调度通常由集群的自动调度策略决定,这些策略主要关注资源充足性和负载均衡。然而,在某些场景下,用户可能需要更精细地控制 Pod 的调度行为,例如将特定的服务(如 GitLab)部署到特定节点上,以提高性能或满足特定需求。本文深入解析了 Kubernetes 的亲和性调度机制,并探讨了多种优化策略,帮助用户实现更高效、更灵活的资源管理。 ... [详细]
  • Linux系统防火墙启用与端口开放详细指南及操作流程
    在Linux系统中,启用防火墙并开放特定端口是确保网络安全的重要步骤。本文详细介绍了防火墙的配置方法和操作流程,包括如何解决在使用 `service iptables save` 命令时遇到的常见问题,如命令不支持基本的LSB动作(启动、停止等)的情况。此外,还提供了多种解决方案和最佳实践,帮助用户高效地管理和维护系统安全。 ... [详细]
author-avatar
梦之舞的微薄极_922
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有