hadoop完全分布式环境搭建详细版

news2024/9/21 10:58:49

1. hadoop集群规划

1.准备3台客户机(关闭防火墙,静态ip,主机名称)

2.安装jdk

3.配置环境变量

4.安装hadoop,hadoop版本是3.1.3,包名为hadoop-3.1.3.tar.gz

5.配置环境变量

6.配置集群

7.单点启动

8.配置ssh

9.群起集群并测试集群

注意: NameNode和SecondaryNameNode和ResourceManage三者很消耗内存,不要安装在同一台服务器上

image-20221118133413157

2. hadoop具体安装步骤

2.0 端口号说明

namenode端口号说明

namenode版本号端口号
1.x8020
2.x9000
3.0.x9020
3.1.x8020

namenode web端口号说明

namenode web端口号版本号端口号
1.x 2.x50070
3.x9870

secondarynamenode web端口号说明

secondarynamenode web端口号版本号端口号
1.x 2.x50090
3.x9868

2.1 上传

2.2 解压

2.3 修改hadoop相关配置文件

有core-site.xml,hdfs-site.xml,yarn-site.xml,mapred-site.xml,works

(1)core-site.xml修改的内容有:

①NameNode的内部连接地址;

②hadoop数据存储的目录,默认是linux临时目录,到日期会被清除掉;

③配置hdfs登录的静态用户moxi,(好处是当使用的是moxi用户启动的hadoop,有权限进行删除);

④配置moxi为代理用户(因为在使用hive的时候,每一个用户都会创建一个hiveserver2,这个客户端非常占用空间,就想着所有用户用同一个hiveserver2,提交作业,如果不配置不可以,配置了就能用。

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定NameNode的地址 -->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop102:8020</value>
	</property>
<!-- 指定hadoop数据的存储目录 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/module/hadoop-3.1.3/data</value>
	</property>

<!-- 配置HDFS网页登录使用的静态用户为moxi -->
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>moxi</value>
	</property>

<!-- 配置该moxi(superUser)允许通过代理访问的主机节点 -->
    <property>
        <name>hadoop.proxyuser.atguigu.hosts</name>
        <value>*</value>
	</property>
<!-- 配置该moxi(superUser)允许通过代理用户所属组 -->
    <property>
        <name>hadoop.proxyuser.moxi.groups</name>
        <value>*</value>
	</property>
<!-- 配置该moxi(superUser)允许通过代理的用户-->
    <property>
        <name>hadoop.proxyuser.moxi.users</name>
        <value>*</value>
	</property>
</configuration>

(2)hdfs-site.xml修改的内容有:

①配置nn web端访问的地址,配置为hadoop102:9870

②配置2nn web端访问地址,配置为hadoop104:9868

③配置hdfs副本的数量,一般指定为3个,测试集群一般是1个

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
	<!-- nn web端访问地址-->
	<property>
        <name>dfs.namenode.http-address</name>
        <value>hadoop102:9870</value>
    </property>
    
	<!-- 2nn web端访问地址-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>hadoop104:9868</value>
    </property>
    
    <!-- 环境指定HDFS副本的数量3 -->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
</configuration>

(3)yarn-site.xml修改的内容有:

①指定MR走shuffle

②指定ResourceManager的地址:在hadoop103

③环境变量的继承

④yarn单个容器允许分配的最大最小内存,(默认是8G,需要修改,限定为和服务器一样大),这个参数每个机器单独设置,(内存为8,4,4和6,3,3需要修改,最大内存和服务器分配的最大内存一样,否则,内存超出会崩)

⑤yarn容器允许管理的物理内存大小,这个参数每个机器单独设置

⑥关闭yarn对虚拟内存的限制,物理内存不能关闭。(默认都是true,检测nodemanager和其它组件内存使用情况,超过内存大小就阻止它使用,把他干掉,很危险,需要关闭;虚拟内存,就是把超出内存的空间运行在磁盘上)

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MR走shuffle -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    
    <!-- 指定ResourceManager的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>hadoop103</value>
    </property>
    
    <!-- 环境变量的继承 -->
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
    
    <!--yarn单个容器允许分配的最大最小内存,最大内存不超过虚拟机分配的内存-->
    <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
    </property>
    <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>4096</value>
    </property>
    
    <!-- yarn容器允许管理的物理内存大小,最大内存不超过虚拟机分配的内存 -->
    <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>4096</value>
    </property>
    
    <!-- 关闭yarn对物理内存和虚拟内存的限制检查 -->
    <property>
        <name>yarn.nodemanager.pmem-check-enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>yarn.nodemanager.vmem-check-enabled</name>
        <value>false</value>
    </property>
</configuration>

(4)mapred-site.xml修改的内容有:

①指定mapreduce程序在yarn上运行

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
	<!-- 指定MapReduce程序运行在Yarn上 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

(5)配置集群works:

在1.x和2.x名字叫slaves,不叫works。

把默认的localhost删掉,注意:填写下面的hadoop102,hadoop103,hadoop104,需要提前做好主机名和ip地址的映射;下面的文件不能有空格例如在hadoop102后面不能有空格;也不能有空行,在hadoop104下面不能有空行

hadoop102
hadoop103
hadoop104

2.4 配置历史服务器

为什么要配置历史服务器?

任务在运行过程中,会记录运行过程的日志,不配置,运行结束了就结束了。

在hadoop-3.1.3/etc/hadoop/mapred-site.xml文件下配置

<!-- 历史服务器端地址 -->
<property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop102:10020</value>
</property>

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

2.5 配置日志聚集功能

作用:不配置,查看日志需要在各自台上查询各自的,这是很麻烦的一件事,如果配置过之后,就可以在一台设备上,查看所有设备的日志,这是很方便的

在 yarn-site.xml上配置。

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

<!-- 设置日志聚集服务器地址 -->
<property>  
    <name>yarn.log.server.url</name>  
    <value>http://hadoop102:19888/jobhistory/logs</value>
</property>

<!-- 设置日志保留时间为7天 -->
<property>
    <name>yarn.log-aggregation.retain-seconds</name>
    <value>604800</value>
</property>

2.6 分发hadoop到其它集群

[moxi@hadoop102 hadoop-3.1.3]$ xsync /opt/module/hadoop-3.1.3/

2.7 配置hadoop环境变量

[moxi@hadoop102 hadoop-3.1.3]$ sudo vim /etc/profile.d/my_env.sh

添加如下内容:

#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

2.8 分发环境变量

注意:在root下,需要把分发指令路径写完整。

[moxi@hadoop102 hadoop-3.1.3]$ sudo /home/moxi/bin/xsync /etc/profile.d/my_env.sh

2.9 source 是之生效

[moxi@hadoop102 module]$ source /etc/profile.d/my_env.sh
[moxi@hadoop103 module]$ source /etc/profile.d/my_env.sh
[moxi@hadoop104 module]$ source /etc/profile.d/my_env.sh

2.10 第一次启动需要格式化namenode

如果集群是第一次启动,需要在hadoop102节点格式化NameNode(注意格式化之前,一定要先停止上次启动的所有namenode和datanode进程,然后再删除data和log数据)

[moxi@hadoop102 hadoop-3.1.3]$ bin/hdfs namenode -format

2.11 单节点启动集群

(1)启动HDFS

[moxi@hadoop102 hadoop-3.1.3]$ sbin/start-dfs.sh

(2)在配置了ResourceManager的节点(一定要在hadoop103上启动,因为在103上配置的)启动YARN

[moxi@hadoop103 hadoop-3.1.3]$ sbin/start-yarn.sh

2.12 在web端查看页面

①Web端查看HDFS的Web页面:http://hadoop102:9870/

②Web端查看yarn的web页面:http://hadoop103:8088/

2.13 hadoop群起集群配置

在一台设备上启动所有进程。

进入目录/home/moxi/bin

编辑文件vim hdp.sh

#!/bin/bash
if [ $# -lt 1 ]
then
    echo "No Args Input..."
    exit ;
fi
case $1 in
"start")
        echo " =================== 启动 hadoop集群 ==================="

        echo " --------------- 启动 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh"
        echo " --------------- 启动 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop/sbin/start-yarn.sh"
        echo " --------------- 启动 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver"
;;
"stop")
        echo " =================== 关闭 hadoop集群 ==================="

        echo " --------------- 关闭 historyserver ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver"
        echo " --------------- 关闭 yarn ---------------"
        ssh hadoop103 "/opt/module/hadoop/sbin/stop-yarn.sh"
        echo " --------------- 关闭 hdfs ---------------"
        ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh"
;;
*)
    echo "Input Args Error..."
;;
esac

给权限

chmod 777 hdp.sh

使用指南:

hdp.sh start

安装包链接:

链接:https://pan.baidu.com/s/1NUBmKLx6K71H95OZwOweag?pwd=kpv1
提取码:kpv1

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

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

相关文章

Ubuntu20.04静态路由表连通局域网各网段主机 Vmware WorkStation

文章目录示例拓扑虚拟机的三种网络模式虚拟网络编辑器的设置虚拟主机与虚拟路由设置细节Ubuntu20.04设置静态IP给R1添加双网卡给R1、R2开启转发功能配置路由表References示例拓扑 宿主机是Windows11 PC与Router均为 Ubuntu20.04系统。 虚拟机的三种网络模式 虚拟机默认是只初…

如何利用InVest模型估算区域产水量

1.什么是InVEST模型 InVEST模型&#xff08;Integrated Valuation of Ecosystem Services and Tradeoffs &#xff09;是生态系统服务评估与权衡模型的简称&#xff0c;是美国自然资本项目组开发的、用于评估生态系统服务功能量及其经济价值、支持生态系统管理和决策的一套模型…

十四、使用 Vue Router 开发单页应用(1)

本章概要 感受前端路由 HTML 使用路由模块开发使用路由 传统的 Web 应用程序不同页面间的跳转都是向服务器发起请求&#xff0c;服务器处理请求后向浏览器推送页面。 在单页应用程序中&#xff0c;不同视图&#xff08;组件的模板&#xff09;的内容都是在同一个页面中渲染&…

golang 琐碎知识

golang 琐碎知识&#xff08;持续进行&#xff09; 时间格式 time.now.Format("2006-01-02T 15:04:05")make声明切片bug Golang&#xff1a;statusList : make([]*model.StatusList, 6) 会声明一个长为6的null切片&#xff0c;使用append添加时不会将null覆盖掉去掉切…

JMeter入门教程(10) --函数助手

文章目录1.CSVRead2.Random3.RandomString4.RandomDate5.time在JMeter的选项菜单中有一个“函数助手对话框”&#xff0c;点击打开“函数助手”对话框&#xff0c;使用函数助手&#xff0c;我们可以从“选择一个功能”下拉列表中选择一个函数&#xff0c;并为其参数设定值。表格…

SQL函数之分割

数据库中有一张地区数据统计表,但是并不规则 ,记录类似于,225100:02:3:20160725是一串代码,以:分割,第1位为地区代码,第2位为分类代码,第3位为数量,第4位为日期 地区代码含义225100-上海 225200-江苏 225300-浙江 为可能有某些位不存在,缺位时计算规则如下: 1、…

Golang开发习惯:变量、常量声明使用惯例

《Go语言精进之路》第二、三章部分内容学习记录笔记。 1.基本原则 Golang开发中&#xff0c;可遵守简单且一致的命名原则&#xff0c;力求命名精简、易懂和一致。 package声明 Golang的package声明以小写形式的单个词进行命名&#xff1a; shopservice、utils、logs、tcc、l…

计算机毕业论文java毕业设计选题源代码

&#x1f496;&#x1f496;更多项目资源&#xff0c;最下方联系我们✨✨✨✨✨✨ 目录 Java项目介绍 资料获取 Java项目介绍 《【论文】S2SH药膳馆会员管理系统》该项目采用技术jsp、strust2、Spring、hibernate、tomcat服务器、mysql数据库 &#xff0c;项目含有源码、论…

十四、使用 Vue Router 开发单页应用(2)

本章概要 动态路由匹配 查询参数 路由匹配语法 参数的自定义正则表达式可重复参数可选参数 嵌套路由 14.2 动态路由匹配 实际项目开发时&#xff0c;经常需要把匹配某种模式的路由映射到同一个组件。例如&#xff0c;有一个 Book 组件&#xff0c;对于所有 ID 各不相同的图书…

MOOC 大数据Note

MOOC 大数据NoteSparkSpark 一个软件栈满足不同交互场景Lineage 血缘关系创建 转换 动作ShuffleMapStageSpark的部署和应用方式RDD操作分为转换&#xff08;Transformation&#xff09;和动作&#xff08;Action&#xff09;两种类型&#xff0c;下列属于动作&#xff08;Actio…

开发工具——gcc/g++

开发工具gcc/g 完成代码的编写完后&#xff0c;要形成可执行程序&#xff0c;需要编译工具进行对代码的编译。 C语言的编译工具是gcc&#xff0c;c的编译工具是g。 如果g没有的话&#xff0c;可以切换到root执行命令yum install -y gcc-c C语言和C的编译&#xff1a; gc…

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我&#xff0c;温暖你」这部剧非常火&#xff0c;讲述的是程序员的爱情故事。 其中陈飞宇饰演的男主李峋&#xff0c;在剧中用程序做出的爱心跳动效果&#xff0c;非常炫。 网上各个大佬也是纷纷给出看法&#xff0c;综合就是不太可能用C语言来实现的。 大概率是AE…

Reg注册表读写

在Windows 95及其后继版本中&#xff0c;采用了一种叫做“注册表”的数据库来统一进行管理&#xff0c;将各种信息资源集中起来并存储各种配置信息。按照这一原则&#xff0c;Windows各版本中都采用了将应用程序和计算机系统全部配置信息容纳在一起的注册表&#xff0c;用来管理…

Java内存溢出故障案例及Linux内存机制探究

文章目录Java内存溢出故障案例及Linux内存机制探究OOM Killer触发机制分析如何避免系统触发OOM Killer这部分内容属于demo案例分享&#xff0c;解决线上运维问题&#xff0c;思路是最重要的 Java内存溢出故障案例及Linux内存机制探究 这是一个线上数据分析应用故障案例&#…

Java—反射

文章目录什么是反射反射定义java创建对象的三个阶段反射过程反射第一步&#xff1a;获取类对象获取类对象的三种方式反射第二步&#xff1a;获取类信息如何获取类信息&#xff1f;1、获取成员变量&#xff1a;2、获取方法&#xff1a;3、获取构造器反射第三步&#xff1a;使用反…

vue学习笔记——简单入门总结(四)

文章目录1.Vue3的特性和变化1.1.创建vue3项目1.2.分析main.js变化&#xff1a;1.3.setup--组合式api的开端1.4.ref函数和reactive函数&#xff1a;1.5.watch监视属性1.5.watchEffect函数1.6.vue3生命周期&#xff1a;1.Vue3的特性和变化 1.1.创建vue3项目 1.这里我们使用脚手架…

RegAD-Registration based Few-Shot Anomaly Detection论文学习

摘要 本文为少样本异常检测&#xff08;FSAD&#xff09;&#xff0c;这是一种实用但尚未被研究的异常检测&#xff08;AD&#xff09;&#xff0c;少样本意味着在训练中只为每个类别提供有限数量的正常图像。 现有的少样本异常检测的研究主要使用的是 一类别一模型 学习范式…

李宏毅《DLHLP》学习笔记7 - Voice Conversion

视频链接&#xff1a;https://www.youtube.com/watch?vJj6blc8UijY&listPLJV_el3uVTsO07RpBYFsXg-bN5Lu0nhdG&index9&ab_channelHung-yiLee 课件链接&#xff1a;https://speech.ee.ntu.edu.tw/~tlkagk/courses/DLHLP20/Voice%20Conversion%20(v3).pdf 1. 语音转…

JAVA+MySQL 图书馆借阅信息管理系统

图书馆是当下很多大学生和有志青年学习和借阅图书的场所,图书馆每天都有大量的人员需要接待,如何能够更好的对用户的这些借阅信息进行信息化的管理是当下大多数图书馆管理人员所关心的问题 本系统是通过JAVA和MYSQL来进行开发的,通过本系统可以对图书馆内的图书信息,用户信息以…

基于PCIe的NVMe协议在FPGA中实现方法

NVMe协议是工作在PCIE的最上层协议层的&#xff0c;故需要先搞清楚PCIE。本文基于Xilinx的UltraScale&#xff0c;开发工具为Vivado2021.2。学习中以spec为主&#xff0c;其它资料辅助参考(重点介绍学习方法及资料&#xff0c;有时间再加细节)。请勿转载&#xff01; 1 PCIe学…