Apache Hadoop生态部署-hadoop单机安装

news2025/7/25 10:10:43

目录

查看服务架构图-服务分布、版本信息

1:安装包下载

2:配置环境变量

3:服务配置

(1)core-site.xml

(2)配置 hadoop-env.sh

(3)HDFS 配置文件hdfs-site.xml

(4)YARN 配置文件yarn-site.xml

(5)MapReduce 配置文件mapred-site.xml

(6)配置 workers

三:启动集群

3.1:第一次启动集群

3.2:启动 HDFS

 3.3:启动 YARN

3.4:启动历史服务器

四:服务管理命令


Apache Hadoop生态-目录汇总-持续更新

系统环境:centos7

Java环境:Java8

1:安装包下载

安装包下载地址:

可以去官网下载,或者通过百度网盘,上传到服务器上

链接:https://pan.baidu.com/s/1N9LTxEK2nedHdAxGIwhzeQ?pwd=yyds

提取码:yyds

2:配置环境变量

sudo vim /etc/profile.d/hadoop.sh
export HADOOP_HOME=/usr/local/hadoop3.2.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH='hadoop classpath'

立即生效
source /etc/profil

3:服务配置

(1)core-site.xml

创建数据目录
mkdir -p ${HADOOP_HOME}/data

sudo vim $HADOOP_HOME/etc/hadoop/core-site.xml
<!-- 指定 hdfs NameNode 的地址 -->
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node100:8020</value>
</property>

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

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

<!-- 指定hadoop数据目录--> 
<property> 
    <name>hadoop.tmp.dir</name>
    <value>/usr/local/hadoop-3.2.2/data</value>
</property>

(2)配置 hadoop-env.sh

默认情况pid存储在/tmp下,时间长了会被清掉
sudo mkdir $HADOOP_HOME/pids
sudo vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
export HADOOP_SECURE_PID_DIR=${HADOOP_HOME}/pids
export HADOOP_PID_DIR=${HADOOP_HOME}/pids

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root



不指定user会遇到下面的问题,不过在后面配置了kerberos同样会解决
ERROR: but there is no HDFS_NAMENODE_USER defined. Aborting operation.
ERROR: but there is no HDFS_DATANODE_USER defined. Aborting operation.
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation
ERROR: but there is no YARN_NODEMANAGER_USER defined. Aborting operation.
ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Aborting operation.

(3)HDFS 配置文件hdfs-site.xml

sudo vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
<!-- nn web 端访问地址 默认9870  h2版本50070-->
<property>
    <name>dfs.namenode.http-address</name>
    <value>node100:9870</value>
</property>
<!-- 2nn web 端访问地址 默认9868 h2版本50090-->
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node100:9868</value>
</property>

<!-- 测试环境指定HDFS副本的数量1 默认3-->
<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

(4)YARN 配置文件yarn-site.xml

这里的资源根据服务器的内存进行配置, 如果机器有6G,可以设置4G,预留一些即可

<!--yarn单个容器允许分配的最大最小内存 -->

yarn.scheduler.minimum-allocation-mb    可以设置512

yarn.scheduler.maximum-allocation-mb    可以设置4G  4096

<!-- yarn容器允许管理的物理内存大小 -->

yarn.nodemanager.resource.memory-mb  可以设置4G  4096

sudo vim $HADOOP_HOME/etc/hadoop/yarn-site.xml
<configuration>

<!-- 环境变量的继承 3.1x需要设置 -->
<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>

<!-- 指定 MR 走 shuffle  默认空  mapreduce_shuffle  -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<!-- 指定 ResourceManager 的地址 默认:0.0.0.0-->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node100</value>
</property>

<!-- 设置yarn任务优先级0-5 -->
<property>
    <name>yarn.cluster.max-application-priority</name>
    <value>5</value>
</property>

<!-- 容器最小内存,默认 1G -->
<property>
    <name>yarn.scheduler.minimum-allocation-mb</name>
    <value>1024</value>
</property>

<!-- 容器最大内存,默认 8G   之前是4096 -->
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>6144</value>
</property>

<!-- NodeManager 使用内存数,默认 8G -->
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>10240</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>

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

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

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

<!-- nodemanager 的 CPU 核数,不按照硬件环境自动设定时默认是 8 个 -->
<property>
    <name>yarn.nodemanager.resource.cpu-vcores</name>
    <value>8</value>
</property>


<!-- 容器最大 CPU 核数,默认 4 个,修改为 2 个 -->
<property>
    <name>yarn.scheduler.maximum-allocation-vcores</name>
    <value>2</value>
</property>


<property>
    <name>yarn.application.classpath</name>    
    <value>/usr/local/hadoop-3.2.2/etc/hadoop:/usr/local/hadoop-3.2.2/share/hadoop/common/lib/*:/usr/local/hadoop-3.2.2/share/hadoop/common/*:/usr/local/hadoop-3.2.2/share/hadoop/hdfs:/usr/local/hadoop-3.2.2/share/hadoop/hdfs/lib/*:/usr/local/hadoop-3.2.2/share/hadoop/hdfs/*:/usr/local/hadoop-3.2.2/share/hadoop/mapreduce/lib/*:/usr/local/hadoop-3.2.2/share/hadoop/mapreduce/*:/usr/local/hadoop-3.2.2/share/hadoop/yarn:/usr/local/hadoop-3.2.2/share/hadoop/yarn/lib/*:/usr/local/hadoop-3.2.2/share/hadoop/yarn/*</value>  
</property>  

<property>
    <name>yarn.resourcemanager.scheduler.client.thread-count</name>
    <value>3</value>
</property>

</configuration>

(5)MapReduce 配置文件mapred-site.xml

sudo vim $HADOOP_HOME/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定 MapReduce 程序运行在 Yarn 上 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<!--运行hdfs自带wordcount功能出现错误-->
<property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.2</value>
</property>
<property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.2</value>
</property>
<property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/usr/local/hadoop-3.2.2</value>
</property>

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

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

</configuration>

(6)配置 workers

该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

sudo vim workers
node100

三:启动集群

3.1:第一次启动集群

需要在namenode节点执行格式化操作

(注意:格式化 NameNode,会产生新的集群 id,导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。

如果集群在运行过程中报错,需要重新格式化 NameNode 的话,一定要先停止 namenode 和 datanode 进程,并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)

[root@node100 ~]# cd $HADOOP_HOME
[root@node100 hadoop-3.2.2]# hdfs namenode -format
出现如下提示表示格式化成功
2023-02-24 06:19:16,927 INFO common.Storage: Storage directory /usr/local/hadoop-3.2.2/data/dfs/name has been successfully formatted.
2023-02-24 06:19:16,999 INFO namenode.FSImageFormatProtobuf: Saving image file /usr/local/hadoop-3.2.2/data/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2023-02-24 06:19:17,305 INFO namenode.FSImageFormatProtobuf: Image file /usr/local/hadoop-3.2.2/data/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 399 bytes saved in 0 seconds .
2023-02-24 06:19:17,335 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2023-02-24 06:19:17,350 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
2023-02-24 06:19:17,351 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at node100/192.168.1.100
************************************************************/

3.2:启动 HDFS

[root@node100 hadoop-3.2.2]# start-dfs.sh

[root@node100 hadoop-3.2.2]# jps
3633 DataNode
3858 SecondaryNameNode
4131 Jps
3494 NameNode

查看页面 hdfs集群 http://node100:9870

 3.3:启动 YARN

[root@node100 hadoop-3.2.2]# start-yarn.sh

[root@node100 hadoop-3.2.2]# jps
多出
4322 ResourceManager
4464 NodeManager

查看yarn集群 http://node100:8088/cluster

3.4:启动历史服务器

[root@node100 hadoop-3.2.2]# mapred --daemon start historyserver

[root@node100 hadoop-3.2.2]# jps
多出
4928 JobHistoryServer

查看历史服务web http://node100:19888/jobhistory

四:服务管理命令

整体启动/关闭

启动hdfs+yarn
[root@node100 hadoop-3.2.2]# start-all.sh

关闭hdfs+yarn
[root@node100 hadoop-3.2.2]# stop-all.sh

(1)整体启动/停止 HDFS

start-dfs.sh/stop-dfs.sh

(2)整体启动/停止 YARN

start-yarn.sh/stop-yarn.sh

(3)分别启动/停止 HDFS 组件

hdfs --daemon start/stop namenode/datanode/secondarynamenode

(4)启动/停止 YARN

yarn --daemon start/stop resourcemanager/nodemanager

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

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

相关文章

【Redis】数据库和缓存如何保证一致性?

【Redis】数据库和缓存如何保证一致性&#xff1f; 文章目录【Redis】数据库和缓存如何保证一致性&#xff1f;常见方案先更新缓存&#xff0c;再更新数据库先更新数据库&#xff0c;再更新缓存并发情况下的思考先删除缓存&#xff0c;再更新数据库先更新数据库&#xff0c;再删…

StopWatch计时器

前言 开发中&#xff0c;为了评估性能&#xff0c;我们通常会使用System.currentTimeMillis() 去计算程序运行耗时 long startTimeSystem.currentTimeMillis();//业务代码... long endTimeSystem.currentTimeMillis(); System.out.println("耗时:" (endTime-startT…

Java多线程(三)---synchronized、Lock和volatile

Java内存模型&#xff08;非JVM&#xff09;Java内存模型(Java Memory Model简称JMM)&#xff0c;是一种共享内存模型&#xff0c;是多线程的东西&#xff0c;并不是JVM&#xff08;Java Virtual Machine(Java虚拟机)的缩写&#xff09;&#xff0c;这是俩玩意儿&#xff01;&a…

Ubuntu 22.04.2 发布,可更新至 Linux Kernel 5.19

Ubuntu 22.04 LTS (Jammy Jellyfish) Ubuntu 22.04.2 发布&#xff0c;可更新至 Linux Kernel 5.19 请访问原文链接&#xff1a;Ubuntu 22.04 LTS (Jammy Jellyfish)&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;www.sysin.org 发行说…

ssh远程登录报错:kex_exchange_identification: Connection closed by remote host

基本信息系统&#xff1a;MacOS Catalina 10.15.7报错信息&#xff1a;终端登录远程服务器时报错&#xff1a;kex_exchange_identification: Connection closed by remote host复制然而服务商的一键登录或VNC登录正常。解决方案首先使用以下命令debug登录过程&#xff0c;以便定…

这可能是Spring Boot Starter 讲的最清楚的一次了

前面我们简单介绍了如何使用消息中间件Apache Pulsar&#xff0c;但是在项目中那样使用&#xff0c;显然是不太好的&#xff0c;不管从易用性和扩展性来看&#xff0c;都是远远不够&#xff0c; 为了和springboot项目集成&#xff0c;写一个pulsar-spring-boot-starter是非常有…

Linux核心技能:2023主流监控Prometheus详解,附官方可复制中文文档教程

Prometheus既是一个时序数据库&#xff0c;又是一个监控系统&#xff0c;更是一套完备的监控生态解决方案。作为时序数据库&#xff0c;目前Prometheus已超越了老牌的时序数据库OpenTSDB、Graphite、RRDtool、KairosDB等&#xff0c;如图所示。 &#xff08;来源网络&#xff0…

QT+OpenGL鼠标操作和模型控制

文章目录QTOpenGL鼠标操作和模型控制鼠标拾取理论有点小复杂从鼠标计算射线第 0 步&#xff1a;2D 视口坐标第 1 步&#xff1a;3d归一化设备坐标第 2 步&#xff1a;4d齐次剪辑坐标第 3 步&#xff1a;4d眼(相机)坐标第 4 步&#xff1a;4d 世界坐标代码展示模型控制多模型加载…

自动执行自动化测试用例

phpunit 接口自动化测试系列 所有自动化测试用例最终的目的都是一样的&#xff0c;实现无人值守的自动化运行。而目前最常用的就是Jenkins来实现这个功能&#xff0c;在前面的WebdriverPython页面自动化的教程中我们已经详细讲解了如何将自动化测试用例接入到Jenkins中。本章我…

RK系列(RK3568) i2s 音频输入 麦克风驱动

平台&#xff1a;Android12SOC&#xff1a;RK3568外围芯片&#xff1a;XS9922i2s简介&#xff1a;从上图看I2s主要的线有&#xff1a;SDO SCLK LRCK MCLK I2S协议只定义三根信号线&#xff1a;串行时钟信号SCLK(BCLK)、数据信号SD和左右声道选择信号WS。&#xff08;1&#xff…

QT入门Containers之QStackedWidget

目录 一、QStackedWidget界面相关 1、布局介绍 2、插入界面 3、插入类界面 二、Demo展示 此文为作者原创&#xff0c;创作不易&#xff0c;转载请标明出处&#xff01; 一、QStackedWidget界面相关 1、布局介绍 QStackedWidget这个控件在界面布局时&#xff0c;使用还…

JVM整体分析篇

这里写目录标题JVM的组成部分1.类装载子系统1.1一个类加载到JVM的过程1.2类加载机制1.3为什么设计双亲委派机制1.4怎么打破双亲委派机制2.运行时数据区2.1线程私有及共享2.2JVM内存区结构2.3JVM参数设置经验3.Java对象的生命周期3.1.对象的创建3.2.对象大小的计算&#xff08;6…

六、程序计数器(PC寄存器)

JVM中的程序计数寄存器&#xff08;Program Counter Register&#xff09;中&#xff0c;Register 的命名源于CPU的寄存器&#xff0c;寄存器存储指令相关的现场信息。CPU只有把数据装载到寄存器才能够运行。 这里&#xff0c;并非是广义上所指的物理寄存器&#xff0c;或许将其…

Python中实现将内容进行base64编码与解码

一、需求说明需要使用Python实现将内容转为base64编码&#xff0c;解码&#xff0c;方便后续的数据操作。二、base64简介Base64是一种二进制到文本的编码方式【是一种基于 64 个可打印字符来表示二进制数据的表示方法&#xff08;由于 2^664&#xff0c;所以每 6 个比特为一个单…

PHP/7.2.11 缺少 apache2/logs/httpd.pid 文件

启动服务时&#xff1a;systemctl restart httpd.service&#xff0c;报错&#xff1a;● httpd.service - httpd serviceLoaded: loaded (/etc/systemd/system/httpd.service; enabled; vendor preset: disabled)Active: failed (Result: exit-code) since 五 2023-02-24 16:1…

Matlab进阶绘图第2期—线型热图

线型热图由共享X轴的多条渐变直线组成&#xff0c;其颜色表示某一特征值。 与传统热图相比&#xff0c;线型热图适应于X轴数据远多于Y轴&#xff08;条数&#xff09;的情况&#xff0c;可以很好地对不同组数据间的分布情况进行比较&#xff0c;也因此可以在一些期刊中看到它的…

IM即时通讯架构技术:可靠性、有序性、弱网优化等

消息的可靠性是IM系统的典型技术指标&#xff0c;对于用户来说&#xff0c;消息能不能被可靠送达&#xff08;不丢消息&#xff09;&#xff0c;是使用这套IM的信任前提。 换句话说&#xff0c;如果这套IM系统不能保证不丢消息&#xff0c;那相当于发送的每一条消息都有被丢失的…

Unity 对接 ML-Agents 初探

一、ML-Agents 是什么 The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. We provide implementations (based on PyTorch) of state-of-the…

为什么很多人转行IT考虑后端开发Java?

顺应互联网时代发展的选择 在计算机广泛运用于社会的各个角落的今天&#xff0c;选择学习一门计算机语言真的很不错&#xff0c;它会让你的生活从此与众不同。软件渗透到组织的运营和管理的后台之中&#xff0c;形成了组织运营支撑平台。这种形态是传统软件的重要应用场景。在…

matlab simulink Buck三电平dcdc变换器

1、内容简介略653-可以交流、咨询、答疑2、内容说明三电平dc/dc变换器的发展是建立在三电平逆变器的基础上的&#xff0c;由于在三电平dc/dc变换器中每个开关管的电压应力是输入直流电压的一半&#xff0c;具有降低开关管电压应力、减小输入输出滤波器大小、减小储能电感和电容…