Hadoop3 集群搭建

news2024/11/27 2:33:11

测试环境

信息内容
主机版本centos7
机器数量3台
Hadoop版本3.3.4
安装包解压路径/home/tools/hadoop/

hosts配置

主机ip地址对应主机host
192.168.57.188node1
192.168.57.189node2
192.168.57.190node3

一. 前置环境准备

  1. 安装JDK1.8(Hadoop支持1.8)
  2. 创建非root用户(这里用的myuser),配置三台服务器之间的免密登录
  3. 配置三台服务器使时间同步

安装工具
yum -y install ntp ntpdate
同步网络时间
ntpdate cn.pool.ntp.org

定时同步任务

crontab -e
*/30 * * * * ntpdate cn.pool.ntp.org > /dev/null 2>&1

二. 单主节点集群

1.解压安装包得到一个安装文件如下

 2.修改配置文件路径为

cd /home/tools/hadoop/hadoop-3.3.4/etc/hadoop

需要修改的配置文件有5个

core-site.xml
hdfs-site.xml

yarn-site.xml
mapred-site.xml
hadoop-env.sh

配置文件修改后的内容如下

core-site.xml


<configuration>
    <property><!--指定NameNode的地址-->
        <name>fs.defaultFS</name>
        <value>hdfs://node1:9820</value>
    </property>
    <property><!--指定Hadoop的数据目录-->
        <name>hadoop.tmp.dir</name>
        <value>/home/tools/hadoop/hadoop-3.3.4/data/temp</value>
    </property>
    <property><!--设置该myuser用户允许通过代理访问的主机节点-->
        <name>hadoop.proxyuser.myuser.hosts</name>
        <value>*</value>
    </property>
    <property><!--设置该myuser用户允许通过代理用户所属组-->
        <name>hadoop.proxyuser.myuser.groups</name>
        <value>*</value>
    </property>
    <property><!--设置HDFS网页登录使用的静态用户为myuser-->
        <name>hadoop.http.staticuser.user</name>
        <value>myuser</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
    <property><!--NameNode的web访问地址-->
        <name>dfs.namenode.http-address</name>
        <value>node1:9870</value>
    </property>
    <property><!--备份NameNode的web访问地址-->
        <name>dfs.namenode.secondary.http-address</name>
        <value>node3:9870</value>
    </property>
    <property><!--副本hdfs备份数-->
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property><!--块大小-->
        <name>dfs.blocksize</name>
        <value>67108864</value>
    </property>
    <property><!--NameNode文件保存路径-->
        <name>dfs.namenode.name.dir</name>
        <value>file:/home/tools/hadoop/hadoop-3.3.4/data/namenode</value>
    </property>
    <property><!--DataNode保存路径地址-->
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/tools/hadoop/hadoop-3.3.4/data/datanode</value>
    </property>
</configuration>

yarn-site.xml

<configuration>
    <property> <!--运行的任务超过内存的最大限制,可以将其任务停止-->
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property><!--指定MR走shuffle-->
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property><!--指定资源调度resourcemanager节点-->
        <name>yarn.resourcemanager.hostname</name>
        <value>node1</value>
    </property>
    <property><!--一个job任务使用容器的最小内存-->
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>128</value>
    </property>
    <property><!--一个job任务使用容器的最大内存-->
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>2048</value>
    </property>

    <property><!--yarn允许管理的物理内存大小-->
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>2048</value>
    </property>
    <property><!--yarn对物理内存的限制检查-->
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>false</value>
    </property>
    <property><!--yarn对虚拟内存的限制检查-->
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
    <property>
        <name>yarn.application.classpath</name>
        <value>控制台输入hadoop classpath,将返回的内容Hadoop classpath路径写在这里</value>
    </property>
    <property><!--日志聚集功能,默认关闭-->
        <name>yarn.log-aggregation-enable</name>
        <value>true</value>
    </property>
    <property><!--日志聚集地址-->
        <name>yarn.log.server.url</name>
        <value>http://node1:19888/jobhistory/logs</value>
    </property>
    <property><!--日志保留时间 7日-->
        <name>yarn.log-aggregation.retain-seconds</name>
        <value>604800</value>
    </property>
</configuration>

mapred-site.xml

<configuration>
    <property><!--指定mapreduce使用yarn运行-->
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property><!--指定历史任务日志服务器地址-->
        <name>mapreduce.jobhistory.address</name>
        <value>node1:10020</value>
    </property>
    <property><!--指定历史任务日志服务器web地址-->
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>node1:19888</value>
    </property>
</configuration>

hadoop-env.sh

export JAVA_HOME=/tools/jdk/jdk1.8.0_261
export HADOOP_HOME=/home/tools/hadoop/hadoop-3.3.4

配置完成之后创建保存数据的目录

mkdir -p /home/tools/hadoop/hadoop-3.3.4/data/temp
mkdir -p /home/tools/hadoop/hadoop-3.3.4/data/namenode
mkdir -p /home/tools/hadoop/hadoop-3.3.4/data/datanode

 3.分发安装包

将配置好的包分发到所有服务器中(如果目标服务器目录不存在,需要在目标服务器上创建目录)

scp -r  /home/tools/hadoop/hadoop-3.3.4 node2:/home/tools/hadoop/

scp -r  /home/tools/hadoop/hadoop-3.3.4 node3:/home/tools/hadoop/

在三台服务器中分别执行,给用户赋值安装包目录权限(如果数据目录在外部 也需要给数据目录赋值权限)

chown -R myuser:myuser /home/tools/hadoop/hadoop-3.3.4

分发和目录权限赋值可以直接使用脚本完成,脚本send.sh如下

#!/bin/bash
# 需要分发的服务器列表
hosts=(node2 node3)
# 需要发送的安装包目录
path=/home/tools/hadoop/hadoop-3.3.4
# 当前用户
user=myuser
parentDir=`dirname $path`
chown -R $user:$user $path
sum=${#hosts[*]}
index=0
for host in ${hosts[@]}
do
        echo 剩余服务器 $(($sum-$index))
        sleep 1
        index=$(($index+1))
        #创建目录
        ssh $host "mkdir -p $parentDir"
        #推送文件
        scp -r $path  $host:$parentDir
        ssh $host "chown -R $user:$user $path"
done

分发命令 

sh send.sh

执行结果如下

4.启动集群

切换myuser用户并且三台服务器之间已经配置了免密登录

在主节点NameNode中格式化集群hdfs namenode -format

快速启动(版本3的datanode和nodemanagers不能全部启动,只能启动当前机器,所以需要去其他机器上挨着启动):

启动HDFS<Hadoop_Home>/sbin/start-dfs.sh
启动Yarn<Hadoop_Home>/sbin/start-yarn.sh

详细启动

启动NameNodehdfs --workers --daemon start namenode
启动DataNodehdfs --workers --daemon start datanode
启动副本NameNodehdfs --workers --daemon start secondary
启动ResourceManageryarn --daemon start resourcemanager
启动NodeManageryarn --daemon start nodemanager 
启动MR历史日志服务mapred --daemon start historyserver

三. HA集群

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/364737.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于企业文档能力开放,你想知道的都在这里了

最近一个朋友向我请教关于企业文档能力开放的事&#xff0c;说了一大堆的问题&#xff0c;我是做技术的&#xff0c;有很多基础知识和理论要向同行学习&#xff0c;所以给他解答了一通&#xff0c;但是朋友觉得解释的没啥实际用处。。。其实这个能力对很多人来说可能都不太明白…

MYBatis-Plus常用注解@TableName、@TableId、@TableField、@TableLogic

1-1&#xff1a;TableName 注解作用&#xff1a;设置实体类对应的表明 value作用&#xff1a;value指定数据库中的表名 如果我们不设置这个注解&#xff0c;我们操作的数据库的表就由BaseMapper 泛型决定&#xff08;SysLog&#xff09; TableName(value "sys_Log&qu…

学习动漫插画的网络班排行榜

很多小伙伴不知道动漫插画培训机构哪个好&#xff0c;找不到靠谱的插画班&#xff0c;今天给大家整理了国内动漫插画培训机构排名&#xff01; 一&#xff1a;动漫插画培训机构排名 1、轻微课&#xff08;五颗星&#xff09; 主打课程有日系插画、游戏原画、古风插画、动漫漫画…

python基于vue个人家庭理财记账管理系统

近年来在计算机的迅速发展的背景下&#xff0c;家庭理财领域与传统手工记账相比&#xff0c;使用计算机系统来管理不仅克服了地域上的局限性&#xff0c;而且增强了用户在时间和空间上的体验&#xff0c;以及能够让用户随时随地进行需要的操作&#xff0c;可以很好的规避传统的…

【建议收藏】Jenkins+postman+newman之API全自动化测试

1 背景 本文要介绍的环境在我司已经投入使用&#xff0c;举个简单的真实使用场景&#xff0c;开发提供了300多个API&#xff0c;每个API都有各种参数&#xff0c;所以我们会先在postman中为这300多个API编写300*n个testcase&#xff0c;然后在jenkins上跑&#xff1b;到此有人…

【Spark分布式内存计算框架——离线综合实战】2. 业务需求

1.3 业务需求 对广告数据进行初步ETL处理和业务报表统计分析&#xff0c;整体业务需求如下图所示&#xff1a; 两个主要方面的业务&#xff1a; 第一个、数据【ETL 处理】 依据IP地址&#xff0c;调用第三方库解析为省份province和城市city&#xff1b;将ETL后数据保存至PAR…

消费升级趋势下,平台如何在广告电商模式中攫取新流量

如今电商平台飞速发展&#xff0c;越来越多的人加入电商运营的行列&#xff0c;同行竞争逐渐变得激烈起来&#xff0c;为了能够让平台有更多的展现机会&#xff0c;提升平台的商品转化率&#xff0c;大家都很重视平台的优化&#xff0c;因为一个好的平台可以给自身带来更多的流…

比特数据结构与算法(第四章_上)树和二叉树和堆的概念及结构

1.树概念及结构1.1树的概念树是一种非线性的数据结构&#xff0c;它是由 n&#xff08;n > 0&#xff09;个有限节点组成的一个具有层次关系的集合。那么为什么叫 "树" 呢&#xff1f; &#xff08;节点也可以称结点&#xff0c;建议称结点&#xff0c;和结构体对…

REDIS中的缓存穿透,缓存击穿,缓存雪崩原因以及解决方案

需求引入一般在项目的开发中,都是使用关系型数据库来进行数据的存储&#xff0c;通常不会存在什么高并发的情况&#xff0c;可是一旦涉及大数据量的需求&#xff0c;比如商品抢购&#xff0c;网页活动导致的主页访问量瞬间增大&#xff0c;单一使用关系型数据库来保存数据的系统…

多孔弹性材料中传播的膨胀波方法(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密…

海量并发低延时 RTC-CDN 系统架构设计(下)

上半部分内容&#xff1a;海量并发低延时 RTC-CDN 系统架构设计&#xff08;上&#xff09;低延时 RTC-CDN 系统的架构传统 CDN 直播发展多年&#xff0c;为了优化延时&#xff0c;业界基本上朝两大优化方向&#xff1a;优化传输层协议和在传输层协议的基础上优化应用层协议。R…

Hadoop环境搭建(1)

一、在已安装的虚拟机上面进行修改&#xff08;以CentOS 7为例&#xff09;①修改主机名查看自己主机名&#xff0c;命令hostname第一种修改主机名方法&#xff0c;命令vi /etc/hostname第二种修改主机名方法&#xff0c;命令hostnamectl set -hostname 自定义主机名可以更改为…

简单介绍如何使用robotium进行自动化测试

创建一个简单的工程作为被测程序&#xff0c;运行后显示如下界面&#xff1a; 2.创建一个Test Project 1). 打开eclipse&#xff0c;选择File->New->Project…->Android Test Project&#xff0c;点击Next。 2). 在Test Project Name中输入测试工程的名称&#xff…

华为HCIP-Datacom认证题库(H12-821)

第一套&#xff08;100题&#xff09; 1. &#xff08;单选题&#xff09;下面关于0SPF的特殊区域&#xff0c;描述错误的是: A.Totally Stub Area允许ABR发布缺省的三类LSA,不接受五类LSA和细化三类LSA B.NSSA Area和Stub区域的不同在于该区域允许自治系统外部路由的引入&…

「实践总结」订单超时自动取消

在进行开发的过程中&#xff0c;在开发的时候&#xff0c;有遇到相关的延时支付相关的问题&#xff0c;在解决延时支付的相关的问题的时候&#xff0c;会有很多种的解决办法&#xff0c;现在就讲对应的解决办法先进行相关的总结操作&#xff1b;「引言」在开发中&#xff0c;往…

mysql索引失效的几种情况

失效的几种情况 1、select * from xxx 2、索引列上有计算 3、索引列上有函数 4、like左边包含‘%’ 5、使用or关键字 6、not in和not exists 7、order by 8、不满足最左匹配原则 给code、age和name这3个字段建好联合索引&#xff1a;idx_code_age_name。 该索引字段的顺…

ChatGPT告诉你:项目管理能干到60岁吗?

早上好&#xff0c;我是老原。这段时间最火的莫过于ChatGPT&#xff0c;从文章创作到论文写作&#xff0c;甚至编程序&#xff0c;简直厉害的不要不要的。本以为过几天热度就自然消退了&#xff0c;结果是愈演愈烈&#xff0c;热度未减……大家也从一开始得玩乐心态&#xff0c…

注意,这本2区SCI期刊最快18天录用,还差一步录用只因犯了这个错

发表案例分享&#xff1a; 2区医学综合类SCI&#xff0c;仅18天录用&#xff0c;录用后28天见刊 2023.02.10 | 见刊 2023.01.13 | Accepted 2023.01.11 | 提交返修稿 2022.12.26 | 提交论文至期刊部系统 录用截图来源&#xff1a;期刊部投稿系统 见刊截图来源&#xff1a…

npm link

正文npm link的用法假如我们想自己开发一个依赖包&#xff0c;以便在多个项目中使用。一种可行的方法&#xff0c;也是npm给我们提供的标准做法&#xff0c;那就是我们独立开发好这个 "依赖包"&#xff0c;然后将它直接发布到 npm镜像站 上去&#xff0c;等以后想在其…

熟读阿里总结的 Java10w 字总结,15 天拿下 5 个大厂 offer(阿里,美团,字节...)

Java 面试都会有很多程序员找工作、跳槽等一系列的安排。说实话&#xff0c;面试中 7 分靠能力&#xff0c;3 分靠技能&#xff1b;在刚开始的时候介绍项目都是技能中的重中之重&#xff0c;它也是可以决定一次面试的成败的&#xff0c;那么在面试的时候你会如何介绍自己、熟练…