当前位置: 首页 > news >正文

hadoop伪分布式配置(单机)

前言

        伪分布式模式(Pseudo-Distributed Mode)是Hadoop的一种运行模式,适用于模拟一个小规模的集群环境,主要用于开发和测试。

        伪分布式模式是指在单台机器上模拟多台服务器的工作环境,Hadoop的守护进程(如NameNode、DataNode、JobTracker、TaskTracker等)都在同一台机器上运行,但相互独立。

        设置Hadoop参数的主要方式是配置一系列由Hadoop守护进程和客户端读取的配置文件,如之前提及的hadoop-env.sh,还包括core-site.xml、hdfs- site.xml、mapred-site.xml、log4j.properties、taskcontroller.cfg等,伪分布式需要修改四个文件,修改的顺序没有特殊要求

环境要求:jdk1.8,hadoop3.4 ,将java和hadoop环境加入系统环境变量中

部署

一、配置ssh公私钥

Hadoop 的启动和管理(如 start-dfs.shstart-yarn.sh)需要 主节点(Master)通过 SSH 远程登录到所有工作节点(Workers) 来启动守护进程(如 DataNode、NodeManager)。

ssh localhost  #此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码,本机root密码
exit             # 退出刚才的 ssh localhost
cd ~/.ssh/       # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa   # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys    # 加入授权

二、修改hadoop的配置文件

1. 查看jdk和hadoop的版本,要先将jdk和hadoop下载在本地

2. core-site.xml是Hadoop集群的核心配置文件,包含 了 Hadoop 全局级别的配置设置。配置该文件

常见配置

Ø fs.default.name:指定HDFS的NameNode的URI,包括协议、主机名和端口号。这是集群中每一台机器都需要知道的NameNode地址,DataNode和独立的客户端程序都通过这个URI与NameNode交互。
Ø hadoop.tmp.dir:Hadoop文件系统依赖的基础配置,很多路径都依赖它。如果hdfs-site.xml中不配置NameNode和DataNode的存放位置,默认就放在这个路径下。
Ø io.file.buffer.size:指定文件读写时使用的缓冲区大小。
Ø fs.trash.interval:清理回收站的间隔,单位为分钟,默认为0,表示hdfs里删除的文件不会进入回收站,而是直接删除,可以按需修改
 cd /usr/local/hadoop/cd etc/hadoop/pwdcp  core-site.xml core-site.xml.bak  #防止文件写入错误vim core-site.xml #文件内容
<configuration><!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/hadoop/tmp</value>
</property>
</configuration>tail -12 core-site.xml

3. hdfs-site.xml 是 HDFS 的特定配置文件,包含了与HDFS 相关的配置设置。配置该文件。

常见配置:
Ø dfs.replication:决定HDFS中文件块的数据备份个数。对于一个实际的应用,通常设为3,以保证数据的可靠性。少于三个的备份可能会影响到数据的可靠性(系统故障时,可能会造成数据丢失)。
Ø dfs.name.dir:NameNode存储Hadoop文件信息的本地系统路径。这个值只对NameNode有效,DataNode并不需要使用它。
Ø dfs.data.dir:DataNode在本地磁盘存放block的位置,可以是以逗号
分隔的目录列表。DataNode循环向磁盘中写入数据,每个DataNode可单独指定与其它DataNode不一样的存储路径。
Ø dfs.namenode.http-address:指定 NameNode 的 HTTP 地址。
Ø dfs.permissions.enabled:启用或禁用 HDFS 的权限查。
Ø dfs.namenode.handler.count:NameNode用来处理来自DataNode的RPC请求的线程数量。建议设置为DataNode数量的10%,一般在10~200个之间。
Ø dfs.datanode.handler.count:DataNode用来连接NameNode的RPC请求的线程数量,取决于系统的繁忙程度。设置太小会导致性能下降甚至报错。
Ø dfs.datanode.max.xcievers:DataNode可以同时处理的数据传输连接数。默认值通常是256,但根据集群的规模和需求,可能需要调整这个值。
vim hdfs-site.xml 
#文件内容,加在文章末尾</property>
<!-- 指定Hadoop名称节点主机配置 -->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name><value>master:50090</value>
</property>tail -12 hdfs-site.xml

4.配置文件, yarn-site.xml是YARN的配置文件,它包含了YARN的各种配置信息,如ResourceManager的地址、NodeManager的资源配置、日志级别、任务调度器等。

常见配置:

Ø yarn.resourcemanager.hostname:指定 ResourceManager 的主机名。
Ø yarn.nodemanager.aux-services:指定YARN节点管理器所使用的辅助服务。
Ø yarn.log-aggregation-enable:设置为true时,YARN将启用日志聚合功能。这意 味着,运行完成的Container或任务的日志将被上传到HDFS(Hadoop分布式文件系统)上,而不是保存在各个NodeManager的本地磁盘上。这一功能有助于减轻NodeManager的负载,并提供一个中央化的存储和分析机制,使得用户可以更方便地查看和管理日志。
Ø yarn.log-aggregation.retain-seconds: 用于指定这些聚合后的日志在HDFS上保存的时间,单位为秒。超过这个时间后,系统将自动删除这些日志,以节省存储空间。
Ø yarn.resourcemanager.address:ResourceManager暴露给Client的地址,Client可以利用这个地址向ResourceManager提交应用程序,也可以用来杀死某个应用程序等。
Ø yarn.resourcemanager.scheduler.address:ResourceManager暴露给ApplicationMaster的访问地址,ApplicationMaster可以通过该地址从ResourceManager处申请和释放资源。
Ø yarn.resourcemanager.resource-tracker.address:ResourceManager暴露给NodeManager的地址,NodeManager可以通过该地址向ResourceManager发送心跳,也可以拉取到待执行的任务。
Ø yarn.nodemanager.resource.memory-mb:NodeManager的可用物理内存总量。这个参数一旦被设置,在YARN的整个运行过程中不允许被动态修改。
Ø yarn.nodemanager.vmem-pmem-ratio:用于设置一个比例,即每使用1MB的物理内存最多可以用多大的虚拟内存。
Ø yarn.nodemanager.resource.cpu-vcores:NodeManager的可用虚拟CPU总数。
 vim yarn-site.xml 
#文件内容
<!-- Site specific YARN configuration properties --><!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
</configuration>tail -12 yarn-site.xml

5. 配置文件,mapred-site.xml是Apache Hadoop中用于配置MapReduce框架的文件。

常见配置:

Hadoop2.X并没有像1.X提供mapred-site.xml文件,需要将样本文件复制为可使用的配置文件:
Ømv mapred-site.xml.template mapred-site.xml  ,Hadoop3.X已经提供mapred-site.xml文件,本文所使用的为hadoop3.x。
Ømapreduce.jobtracker.address:指定 JobTracker 的地址和端口号。
Ømapreduce.framework.name:指定 MapReduce 框架的实现。对于 Hadoop 2.x,通常使用 YARN 作为资源管理器,因此设置为 yarn
Ømapreduce.map.memory.mb 和mapreduce.reduce.memory.mb:分别设置 Map 和Reduce 任务的内存大小(以 MB 为单位)
Ømapreduce.map.java.opts 和mapreduce.reduce.java.opts:设置 Map 和Reduce 任务的 JVM 选项。

vim mapred-site.xml 
#文件内容<!-- 指定MR运行在Yarn上 --> 
<property> 
<name>mapreduce.framework.name</name>  <value>yarn</value></property><property><name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property> 
<property>
<name>mapreduce.map.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>
<property> 
<name>mapreduce.reduce.env</name>
<value>HADOOP_MAPRED_HOME=/usr/local/hadoop</value>
</property>tail -20 mapred-site.xml

6、分别在以下3个配置文件(hadoop-env.sh和yarn-env.sh、mapred-env.sh)的最末尾添加java的环境变量。

6.1 hadoop-env.sh文件包含以下主要环境变量:

Ø JAVA_HOME:指定Java运行环境的位置。
Ø HADOOP_LOG_DIR:设置日志文件的存储位置。
Ø HADOOP_HEAPSIZE:设置Hadoop进程的堆内存大小。
Ø HADOOP_PID_DIR:指定进程ID文件的存储位置。
6.2 yarn-env.sh是Apache Hadoop YARN(YetAnother Resource Negotiator)的一个配置文件,主要用于定义YARN运行时的环境变量。这个文件在Hadoop的安装目录下的etc/hadoop目录
中可以找到。
 
6.3 mapred-env.sh 主要配置项:
Ø 设置JAVA_HOME:指定Java运行环境的路径。
Ø 设置HADOOP_JOB_HISTORYSERVER_HEAPSIZE:定义JobHistoryServer进程的内存大小。
Ø 设置日志级别:通过HADOOP_MAPRED_ROOT_LOGGER配置日志记录的详细程度。
cd /usr/local/java/jdk1.8.0_451/
pwd
cd -
vim hadoop-env.sh 
tail -1  hadoop-env.sh 
#文件内容,在配置文件最末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_451
vim yarn-env.sh 
tail -1  yarn-env.sh 
#文件内容,在配置文件最末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_451
vim mapred-env.sh 
tail -1 mapred-env.sh 
#文件内容,在配置文件最末尾添加
export JAVA_HOME=/usr/local/java/jdk1.8.0_451

7. 编辑hadoop文件下的worker文件。通过在workers文件中列出这些节点的主机名或IP地址,可以控制哪些节点参与集群中的数据处理任务。

#修改workers,添加主机
sudo vim  usr/local/hadoop/etc/hadoop/workers
#删除其中默认的localhost,改为master
#注意:该文件中添加的内容结尾不允许有空格,文件中不允许有空行。

8. 配置hosts文件

vim /etc/hosts
cat /etc/hosts
#文件内容
#127.0.0.1 localhost
127.0.0.1 hadoop
127.0.1.1 master  #主要修改这一行# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

9. 定义root用户操作,将hadoop的环境变量添加到系统当中,定义root用户操作hdfs namenode等服务

注意:真实环境中,尽量不要使用root用户操作对应服务, 会造成安全隐患.应该如单机模式中那样,定义普通用户来 管理操作
#定义root用户操作hdfs namenode等服务,
vim /etc/profile
#将以下内容写入配置文件profile末尾,并让修改后的文件生效。
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
#保存退出后,运行source /etc/profile

三、格式化hadoop

更改配置并保存后,格式化HDFS的NameNode,在这一步之前,如果hdfs-site.xml中
dfs.namenode.name.dir属性指定的目录不存在,格式化命令会自动创建;如果存在,请确保其权限设置正确,此时格式操作会清除其内部所有的数据并重新建立一个新的文件系统:
# /usr/local/hadoop/bin/hdfs namenode -format

/usr/local/hadoop/bin/hdfs namenode -format  #格式化操作

查看格式化是否成功:

四、启动hadoop进程

#启动前需要配置完成上述所有配置,并确认ssh免密登陆已配置完毕
/usr/local/hadoop/sbin
start-dfs.sh
start-yarn.sh 
#或者使用以下命令
start-all.sh或./start-all.sh #PS:真实环境中,最好不要使用start-all.sh启动服务
jps                         #查看到如下进程则成功

五、验证hadoop

1. 在HDFS中创建用户目录

hdfs dfs -mkdir -p /user/root #使用[用户名]登陆,并完成上述操作,必须/user/后跟对应
的[用户名]
hdfs dfs -mkdir input #创建input目录,用于输入数据
hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input #将所需的xml配置文件复制到input中
#如果系统之前运行过hadoop,则需要删除output目录
hdfs dfs -rm -r output
#运行实例,需要先进入hadoop的文件夹下
cd /usr/local/hadoop
#然后输入如下命令
hadoop jar ./share/hadoop/mapreduce/hadoop- mapreduce-examples-*.jar wordcount input output

2、查看运行结果

hdfs dfs -ls ./output
hdfs dfs -cat output/*

五、关闭hadoop集群

#若需关闭集群,在主机上输入相应关闭的命令。启动集群是先hdfs后yarn,关闭集群是先yarn后hdfs。须在
安装目录的/etc/hadoop目录下
stop-yarn.sh
stop-dfs.sh

相关文章:

  • Unity中的MonoSingleton<T>与Singleton<T>
  • 回测效率提升500%!khQuant打板策略回测性能深度剖析——基于miniQMT的回测系统深度优化【AI量化第29篇】
  • AI矢量软件|Illustrator 2025网盘下载与安装教程指南
  • PAT-甲级JAVA题解(更新中...)
  • 浅写弱口令与命令爆破
  • 中科院报道铁电液晶:从实验室突破到多场景应用展望
  • 动中通天线跟踪性能指标的测试
  • windows11安装scoop 20250602
  • RAG入门 - Retriever(1)
  • 每天总结一个html标签——a标签
  • 第一章:计算机系统概论
  • AI智能体|扣子(Coze)搭建【合同/文档审查】工作流
  • Modern C++(二)预处理器及表达式
  • 嵌入式开发之STM32学习笔记day16
  • 安装DockerDocker-Compose
  • Playwright Python API 测试:从入门到实践
  • LearnOpenGL-笔记-其十三
  • ROS 2源换源后GPG错误解决方法
  • LangChain输出格式化实践:提升测试工程师LLM开发效率的完整指南
  • Python训练营---Day43
  • 做网站与平台的区别/上海哪家seo公司好
  • 驻马店新闻今日头条/优化seo报价
  • 网站开发什么技术/什么是电商
  • 该网站的域名为/百度最新秒收录方法2023
  • wordpress主题url/铁岭网站seo
  • 做网站要什么步骤/竞价托管一般多少钱