5154

Good Luck To You!

CentOS 7如何搭建Hadoop 2.8完全分布式集群?

在 CentOS 7 系统上部署 Hadoop 2.8 是构建大数据处理平台的一个经典且稳定的选择,这套组合以其成熟性、稳定性和广泛的社区支持,成为许多企业和开发者入门与实践大数据技术的基石,本文将详细介绍在 CentOS 7 环境下,从零开始搭建一个 Hadoop 2.8 伪分布式集群的完整流程,涵盖环境准备、核心配置、启动验证等关键步骤。

CentOS 7如何搭建Hadoop 2.8完全分布式集群?

环境准备

在安装 Hadoop 之前,必须确保系统环境满足其运行的基本要求,一个干净、配置正确的环境是后续工作顺利进行的前提。

安装 Java 环境 Hadoop 是基于 Java 开发的,Java 开发工具包(JDK)是必需的,Hadoop 2.8 官方推荐使用 JDK 1.7 或 1.8 版本,这里以 JDK 1.8 为例。

可以通过 yum 命令进行安装:

sudo yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel

安装完成后,需要配置 JAVA_HOME 环境变量,编辑 /etc/profile 文件,在文件末尾添加以下内容:

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
export PATH=$PATH:$JAVA_HOME/bin

保存并退出后,执行 source /etc/profile 使配置立即生效,通过 java -versionecho $JAVA_HOME 命令验证安装与配置是否成功。

创建 Hadoop 专用用户 出于安全和管理便利性的考虑,建议为 Hadoop 创建一个独立的用户,而不是直接使用 root 用户。

sudo useradd hadoop
sudo passwd hadoop

后续的所有 Hadoop 相关操作,都将在此用户下进行。

配置 SSH 免密登录 Hadoop 集群内部节点(即使是伪分布式模式的本地节点)之间的通信依赖于 SSH,配置免密登录可以简化启动流程。

切换到 hadoop 用户,并执行以下命令:

su - hadoop
ssh-keygen -t rsa

一路按回车键,生成密钥对,然后将公钥追加到授权列表中:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

修改 .ssh 目录权限:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

通过 ssh localhost 命令测试,若无需输入密码即可登录,则配置成功。

CentOS 7如何搭建Hadoop 2.8完全分布式集群?

关闭防火墙和 SELinux 在学习和测试环境中,为了简化网络配置,可以暂时关闭防火墙和 SELinux。

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo setenforce 0

编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 修改为 SELINUX=disabled,确保系统重启后也保持关闭状态。

Hadoop 下载与核心配置

下载与解压 从 Apache Hadoop 官方归档网站下载 Hadoop 2.8.x 的稳定版本(hadoop-2.8.5.tar.gz),使用 wget 命令下载或下载后上传至服务器。

解压安装包并创建一个方便管理的软链接:

tar -zxvf hadoop-2.8.5.tar.gz -C /usr/local
cd /usr/local
sudo ln -s hadoop-2.8.5 hadoop
sudo chown -R hadoop:hadoop /usr/local/hadoop

配置环境变量 同样地,将 Hadoop 的路径加入到环境变量中,编辑 /etc/profile 文件,追加:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行 source /etc/profile 使其生效。

修改 Hadoop 核心配置文件 进入 $HADOOP_HOME/etc/hadoop 目录,这里是 Hadoop 所有配置文件的所在地,伪分布式模式主要需要修改以下几个文件:

  • hadoop-env.sh: 确保 JAVA_HOME 路径正确。
    export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
  • core-site.xml: 配置 HDFS 的默认文件系统地址和 Hadoop 临时目录。
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://localhost:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>file:/usr/local/hadoop/tmp</value>
        </property>
    </configuration>
  • hdfs-site.xml: 配置 HDFS 的副本数量(伪分布式设为1)以及数据存储目录。
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
    </configuration>
  • yarn-site.xml: 配置 YARN 相关的服务。
    <configuration>
        <property>
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
  • mapred-site.xml: 此文件需要先从模板 mapred-site.xml.template 复制而来,配置 MapReduce 运行在 YARN 框架上。
    cp mapred-site.xml.template mapred-site.xml

    然后编辑 mapred-site.xml

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>

为了更清晰地展示配置,以下是一个核心配置文件的小编总结表格:

配置文件 属性 建议值
core-site.xml fs.defaultFS hdfs://localhost:9000
core-site.xml hadoop.tmp.dir file:/usr/local/hadoop/tmp
hdfs-site.xml dfs.replication 1
yarn-site.xml yarn.nodemanager.aux-services mapreduce_shuffle
mapred-site.xml mapreduce.framework.name yarn

格式化与启动

格式化 NameNode 在首次启动 HDFS 之前,必须对 NameNode 进行格式化,这个操作会初始化 HDFS 的文件系统元数据。注意:此操作会清空所有 HDFS 数据,且只需执行一次。

hdfs namenode -format

在输出日志中看到 "has been successfully formatted" 字样,即表示格式化成功。

启动 Hadoop 集群 Hadoop 的启动脚 conveniently 分为 HDFS 和 YARN 两部分。

CentOS 7如何搭建Hadoop 2.8完全分布式集群?

# 启动 HDFS
start-dfs.sh
# 启动 YARN
start-yarn.sh

也可以使用一条命令同时启动:start-all.sh

启动后,使用 jps 命令查看 Java 进程,伪分布式模式下,应该能看到 NameNodeDataNodeSecondaryNameNodeResourceManagerNodeManager 这几个核心进程。

验证安装

Web UI 界面验证 Hadoop 提供了直观的 Web 界面来监控集群状态。

  • HDFS 管理界面:http://<服务器IP>:50070
  • YARN 资源管理界面:http://<服务器IP>:8088 通过浏览器访问这些地址,可以查看集群概况、节点状态、存储信息以及正在运行的任务等。

运行 MapReduce 示例 Hadoop 自带了一些示例程序,可以用来验证整个集群是否工作正常,以经典的 WordCount 为例:

# 在 HDFS 上创建输入目录
hdfs dfs -mkdir -p /user/hadoop/input
# 将本地文件上传到 HDFS
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml input
# 运行 WordCount 作业
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar wordcount input output
# 查看运行结果
hdfs dfs -cat output/part-r-00000

如果能看到单词计数的输出结果,恭喜你,Hadoop 2.8 伪分布式环境已经成功搭建并运行。


相关问答FAQs

Q1: 为什么每次启动 Hadoop 前都要格式化 NameNode?这有必要吗?

A: 这是一个常见的误解。NameNode 格式化只需要在首次安装部署时执行一次。 格式化(hdfs namenode -format)的作用是初始化 HDFS 的文件系统元数据,它会创建并清空 NameNode 和 DataNode 的工作目录,如果在已有数据的集群上再次执行格式化,会导致所有元数据丢失,造成数据灾难,除非你希望彻底清空并重建整个 HDFS 文件系统,否则切勿重复格式化,正常情况下,每次重启服务器或 Hadoop 服务,直接使用 start-dfs.shstart-yarn.sh 启动即可。

Q2: 如何检查 Hadoop 集群的整体状态是否健康?

A: 检查 Hadoop 集群状态有多种方法,可以结合使用:

  1. jps 命令:这是最直接的方式,在集群的每个节点上执行 jps,检查所有必需的守护进程是否都已启动,对于伪分布式模式,应该看到 NameNode, DataNode, SecondaryNameNode, ResourceManager, NodeManager,缺少任何一个进程都意味着相应组件启动失败,需要查看日志排查。
  2. Web UI:这是最直观的方式,通过访问 NameNode 的 50070 端口,可以查看 HDFS 的总体容量、使用情况、存活 DataNode 数量等,通过访问 ResourceManager 的 8088 端口,可以查看集群资源总量、已用资源、正在运行和已完成的任务列表,UI 会用颜色和状态图标清晰地标识集群的健康状况。
  3. HDFS 命令:执行如 hdfs dfsadmin -report 这样的命令,可以在终端获取一份详细的集群报告,包括每个 DataNode 的容量和使用情况,执行 hdfs dfs -ls / 可以检查文件系统根目录是否可访问。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年11月    »
12
3456789
10111213141516
17181920212223
24252627282930
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.