Hadoop入门基础(二):Hadoop集群安装与部署详解(超详细教程)

一、环境准备

1. 集群规划

首先,需要为集群中的每台机器设置角色和网络配置。在此示例中,我们使用三台机器:

角色 主机名 IP地址
NameNode master 192.168.1.101
DataNode1 slave1 192.168.1.102
DataNode2 slave2 192.168.1.103

2. 软件要求

  • 操作系统:CentOS 7或Ubuntu 20.04
  • Java JDK:Hadoop需要JDK 8或更高版本
安装Java JDK

在所有节点上安装Java:

bash 复制代码
sudo apt-get update  # Ubuntu
sudo apt-get install openjdk-8-jdk -y

# 或者在CentOS上
sudo yum install java-1.8.0-openjdk-devel -y

验证Java安装:

bash 复制代码
java -version

3. 配置SSH免密登录

为了让Hadoop可以在各节点之间无缝通信,需要在master节点上配置SSH免密登录。

在master节点上生成SSH密钥对:
bash 复制代码
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

将公钥复制到所有节点:

bash 复制代码
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2

测试免密登录是否成功:

bash 复制代码
ssh slave1
ssh slave2

二、下载并安装Hadoop

1. 下载Hadoop

在所有节点上下载Hadoop安装包:

bash 复制代码
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
tar -xzvf hadoop-3.3.6.tar.gz --no-check-certificate
sudo mv hadoop-3.3.6 /usr/local/hadoop

2. 配置环境变量

在每个节点的~/.bashrc文件中添加以下内容:

bash 复制代码
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  # 根据实际路径调整
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

执行以下命令使配置生效:

bash 复制代码
source ~/.bashrc

四、修改Hadoop配置文件

在master节点上修改配置文件,然后将修改后的配置文件分发(文末有分发脚本)到所有节点。

1. 配置core-site.xml

编辑$HADOOP_HOME/etc/hadoop/core-site.xml

XML 复制代码
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
        <description>A base for other temporary directories.</description>
    </property>
</configuration>

2. 配置hdfs-site.xml

编辑$HADOOP_HOME/etc/hadoop/hdfs-site.xml

XML 复制代码
<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:///usr/local/hadoop/hadoop_data/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:///usr/local/hadoop/hadoop_data/hdfs/datanode</value>
    </property>
</configuration>

3. 配置yarn-site.xml

编辑$HADOOP_HOME/etc/hadoop/yarn-site.xml

XML 复制代码
<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>master</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

4. 配置mapred-site.xml

复制默认模板并进行修改:

bash 复制代码
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml

编辑mapred-site.xml

XML 复制代码
<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

5. 配置slaves文件

编辑$HADOOP_HOME/etc/hadoop/slaves文件,列出所有DataNode节点:

bash 复制代码
slave1
slave2

6. 分发配置文件到所有节点

将配置好的Hadoop文件夹分发到所有节点:

bash 复制代码
scp -r /usr/local/hadoop slave1:/usr/local/
scp -r /usr/local/hadoop slave2:/usr/local/

五、启动Hadoop集群

1. 格式化HDFS

在master节点上运行以下命令来格式化HDFS:

bash 复制代码
hdfs namenode -format

2. 启动HDFS和YARN

依次启动HDFS和YARN服务:

bash 复制代码
start-dfs.sh
start-yarn.sh

3. 验证集群状态

启动Hadoop之后,可以通过Web界面查看集群状态:

  • NameNode UI : http://master:9870
  • ResourceManager UI : http://master:8088

4. 验证节点连通性

在master节点上,执行以下命令以检查节点状态:

bash 复制代码
hdfs dfsadmin -report
yarn node -list

六、测试集群

运行Hadoop提供的示例程序,验证集群是否正常工作:

bash 复制代码
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output

验证输出结果

查看生成的结果文件:

bash 复制代码
hdfs dfs -cat /output/part-r-00000

七、总结

本文涵盖了从设置主机名、配置SSH免密登录、安装Java环境到Hadoop配置与启动的详细步骤。通过这些步骤,你可以成功搭建一个Hadoop集群,为大数据学习和实际应用打下坚实的基础。下一步,你可以尝试

配置高可用性或对集群进行性能优化。

八、附录

分发脚本

bash 复制代码
#!/bin/bash

if [ $# -lt 1 ]
then
  echo Not Enough Arguemnet!
  exit;
fi

for host in 10.0.13.239 10.0.13.253 10.0.13.196
do
  echo =============== $host =================
  for file in $@
  do 
    if [ -e $file ]
      then
        pdir=$(cd -P $(dirname $file); pwd)
        fname=$(basename $file)
        ssh -p 36000 $host "mkdir -p $pdir"
        rsync  -e 'ssh -p 36000' -av $pdir/$fname $host:$pdir
      else
        echo $file does not exists!
    fi
  done
done
相关推荐
武子康1 天前
大数据-236 离线数仓 - 会员指标验证、DataX 导出与广告业务 ODS/DWD/ADS 全流程
大数据·后端·apache hive
初次攀爬者2 天前
ZooKeeper 实现分布式锁的两种方式
分布式·后端·zookeeper
武子康2 天前
大数据-235 离线数仓 - 实战:Flume+HDFS+Hive 搭建 ODS/DWD/DWS/ADS 会员分析链路
大数据·后端·apache hive
DianSan_ERP3 天前
电商API接口全链路监控:构建坚不可摧的线上运维防线
大数据·运维·网络·人工智能·git·servlet
够快云库3 天前
能源行业非结构化数据治理实战:从数据沼泽到智能资产
大数据·人工智能·机器学习·企业文件安全
AI周红伟3 天前
周红伟:智能体全栈构建实操:OpenClaw部署+Agent Skills+Seedance+RAG从入门到实战
大数据·人工智能·大模型·智能体
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js高考推荐系统 高考可视化 大数据毕业设计(源码+LW文档+PPT+详细讲解)
大数据·vue.js·hadoop·django·毕业设计·课程设计·推荐算法
计算机程序猿学长3 天前
大数据毕业设计-基于django的音乐网站数据分析管理系统的设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
大数据·django·课程设计
B站计算机毕业设计超人3 天前
计算机毕业设计Django+Vue.js音乐推荐系统 音乐可视化 大数据毕业设计 (源码+文档+PPT+讲解)
大数据·vue.js·hadoop·python·spark·django·课程设计
十月南城3 天前
数据湖技术对比——Iceberg、Hudi、Delta的表格格式与维护策略
大数据·数据库·数据仓库·hive·hadoop·spark