【大数据】Hadoop3集群搭建

本文档详细介绍了如何搭建Hadoop3集群,包括准备阶段,如下载官方源码或安装包,安装Java8,配置集群环境;以及启动完全分布式集群的步骤,涉及配置文件的修改和集群节点的设置,最后提供了启动和停止集群的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hadoop3集群搭建

一、准备

官方文档-Setting up a Single Node Cluster

  1. 官网下载
# 科学上网下载比较快,可以自己电脑下好了在上传到服务器
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0-src.tar.gz
# 解压文件
tar -zxvf hadoop-3.3.0-src.tar.gz
# maven构建
  • 也可以直接下载安装包
# 比较大,科学上网下载比较快
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz
# 解压文件
tar -zxvf hadoop-3.3.0.tar.gz
  1. 安装 java8
# 默认安装的是 java-1.8.0-openjdk.x86_64
yum install java 
# 默认安装到 /usr/lib/jvm/

# 下载常用 java 命令,例如:jps\jstack\jstat\jmap
yum install java-devel

# 注册root环境变量
vim ~/.bashrc

# 加入下面的(示例的JAVA_HOME 只针对于 yum 安装的)
export JAVA_HOME=/usr/lib/jvm/jre
export CLASSPATH=.:$JAVA_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
  1. 准备集群环境配置
  • 解压文件及挪动
# 目前我是将软件挪到了 /opt 下
mv hadoop-3.3.0 /opt
cd /opt
ln -s hadoop-3.3.0 hadoop
  • etc/hadoop/hadoop-env.sh
# set to the root of your Java installation
export JAVA_HOME=/usr/lib/jvm/jre
# 配置一下个资源启动用户
# ps: 我这个是内网,且只有我用才这么配置的都是 root
export HADOOP_USER_NAME=root
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
  • 尝试是否ok
# 尝试是否可用
./bin/hadoop

二、启动完全分布式集群

官方文档-Hadoop Cluster Setup

  1. 先修改一台机器的配置
  • etc/hadoop/hadoop-env.sh
# 提高 namenode 堆内存
export HDFS_NAMENODE_OPTS="-XX:+UseParallelGC -Xmx4g"
  • /etc/profile
# 设置hadoop环境地址
HADOOP_HOME=/opt/hadoop
export HADOOP_HOME
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
  • etc/hadoop/core-site.xml
<configuration>
  <!-- NameNode URI	-->
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop001:9000</value>
  </property>
  
  <!-- Size of read/write buffer used in SequenceFiles. 131072	-->
  <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
  </property>
  
</configuration>
  • etc/hadoop/hdfs-site.xml
<configuration>
  <!-- namenode 配置 -->
  <!-- namenode 本地存储 namespace and transactions logs -->
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/data/hadoop/nn</value>
  </property>
  <!-- dfs 单 block 存储大小;3.x 默认 268435456 256MB;2.x 默认 128MB -->
  <property>
    <name>dfs.blocksize</name>
    <value>268435456</value>
  </property>
  <!-- name node 处理 RPC 线程数量 默认 100 -->
  <property>
    <name>dfs.namenode.handler.count</name>
    <value>40</value>
  </property>
  <!-- block 副本数量 默认 3 -->
  <property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
  
  <!-- datanode 配置 -->
  <!-- datanode 本地文件存储位置 -->
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/data/hadoop/dn</value>
  </property>
  
  <!-- 静态页面访问 dfs 的用户 -->
  <property>
    <name>hadoop.http.staticuser.user</name>
    <value>root</value>
  </property>
</configuration>
  • etc/hadoop/yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
  
	<!-- Configurations for ResourceManager and NodeManager -->
  <!-- ignored -->
  
  
  
  <!-- Configurations for ResourceManager -->
  <property>
    <!-- resourcemanager 配置,需要设定好 -->
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop001</value>
  </property>
  
  
  <!-- Configurations for NodeManager -->
  <!-- Multiple paths help spread disk i/o. -->
  <!-- Comma-separated list of paths on the local filesystem where intermediate data is written. -->
  <property>
        <name>yarn.nodemanager.local-dirs</name>
        <value>/data/hadoop/nm</value>
  </property>
  <!-- 每个节点的虚拟核数 默认:8 -->
  <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name>
        <value>2</value>
  </property>
  <!-- 单个任务可申请最多的核数 默认:32 -->
  <property>
        <name>yarn.scheduler.maximum-allocation-vcores</name>
        <value>2</value>
  </property>
  <!-- 可用总内存数量 默认:8192 -->
  <!-- 目前:8GB	系统:2GB	HBase:1GB -->
  <!-- 16GB	系统:2GB	HBase:2GB -->
  <!-- 24GB	系统:4GB	HBase:4GB -->
  <property>
        <name>yarn.nodemanager.resource.memory-mb</name>
        <value>3172</value>
  </property>
  <!-- 每个容器的最小内存分配 默认:1024 -->
  <property>
        <name>yarn.scheduler.minimum-allocation-mb</name>
        <value>512</value>
  </property>
  <!-- 每个容器的最大内存分配 默认:8192 -->
  <property>
        <name>yarn.scheduler.maximum-allocation-mb</name>
        <value>3172</value>
  </property>
  
  <!-- mapreduce_shuffle配置,运行 mr 时,此处还是要配置一下,避免找不到 mapreduce_shuffle -->
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
    <value>org.apache.hadoop.mapred.ShuffleHandler</value>
  </property>
  
</configuration>
  • etc/hadoop/mapred-site.xml
<configuration>
  <!-- Configurations for MapReduce Applications -->
  <!-- 执行调度框架选用 yarn -->
	<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
  </property>
  
  <!-- 3.x 后需要指定 mr 的这个路径 -->
  <property>
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
  <property>
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
  <property>
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
  </property>
  
  <!-- map操作最大内存 默认:1536 1.5G -->
  <property>
        <name>mapreduce.map.memory.mb</name>
        <value>512</value>
  </property>
  <!-- map操作java参数 默认:-Xmx1024M -->
  <property>
        <name>mapreduce.map.java.opts</name>
        <value>-Xmx512M</value>
  </property>
  
  <!-- reduce操作最大内存 默认:3072 3G -->
  <property>
        <name>mapreduce.reduce.memory.mb</name>
        <value>1024</value>
  </property>
  <!-- reduce操作java参数 默认:-Xmx2560M -->
  <property>
        <name>mapreduce.reduce.java.opts</name>
        <value>-Xmx1024M</value>
  </property>
  <!-- reduce操作shuffle的网络拷贝的并行数  默认:50 -->
  <!-- Higher number of parallel copies run by reduces to fetch outputs from very large number of maps. -->
  <property>
        <name>mapreduce.reduce.shuffle.parallelcopies</name>
        <value>50</value>
  </property>
  
  <!-- io排序最大内存 默认:512 -->
  <!-- map阶段排序时会使用该值占用堆内存,请注意 -->
  <property>
        <name>mapreduce.task.io.sort.mb</name>
        <value>128</value>
  </property>
  <!-- io排序一次的流数量 默认:100 -->
  <property>
        <name>mapreduce.task.io.sort.factor</name>
        <value>100</value>
  </property>
  
  
  <!-- Configurations for MapReduce JobHistory Server -->
  <!-- mapreduce.jobhistory.address	Default port is 10020. -->
  <!-- mapreduce.jobhistory.webapp.address	Default port is 19888. -->
  <!-- mapreduce.jobhistory.intermediate-done-dir	Default /mr-history/tmp. -->
  <!-- mapreduce.jobhistory.done-dir Default /mr-history/done. -->
  
  
</configuration>
  
  • etc/hadoop/workers
hadoop001
hadoop002
hadoop003
  1. 复制两台服务器

阿里云可以通过快照+镜像+实例启动模板,快速新整两台

  1. 配置免密登录
# 相关命令或文件,不细致描述了
ssh-keygen
~/.ssh/authorized_keys 
  1. 启动集群

可以自行分配节点

# namenode初始化
# cluster_name可以不传 hdfs namenode -format <cluster_name>
hdfs namenode -format
hdfs --daemon start namenode

# 启动 datanode
hdfs --daemon start datanode

# ps: 这个 dfs 是全部启动的命令 dfs
start-dfs.sh

# 启动 yarn 的程序
yarn --daemon start resourcemanager
yarn --daemon start proxyserver
yarn --daemon start nodemanager
start-yarn.sh

# 启动 mr 历史服务器
mapred --daemon start historyserver

# 一下启动全部
start-all.sh
  1. 停止集群(备用)
hdfs --daemon stop namenode
hdfs --daemon stop datanode
stop-dfs.sh

yarn --daemon stop resourcemanager
yarn --daemon stop nodemanager
stop-yarn.sh

yarn stop proxyserver
mapred --daemon stop historyserver

stop-all.sh 

# 刷新配置
yarn rmadmin -refreshSuperUserGroupsConfiguration
  1. 界面
# 阿里云有防火墙,不可以直接访问,可以配置隧道。尽量不开外网访问,容易被攻击。
NameNode	http://nn_host:port/	Default HTTP port is 9870.
ResourceManager	http://rm_host:port/	Default HTTP port is 8088.
MapReduce JobHistory Server	http://jhs_host:port/	Default HTTP port is 19888.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值