首页主机资讯Debian上HDFS集群怎么搭建

Debian上HDFS集群怎么搭建

时间2025-10-30 14:03:03发布访客分类主机资讯浏览790
导读:1. 准备工作 系统要求:确保Debian系统为最新稳定版(如Debian 11/12),关闭防火墙(sudo ufw disable)或放行HDFS相关端口(如9000、50070、8020等)。 硬件要求:NameNode建议至少2G...

1. 准备工作

  • 系统要求:确保Debian系统为最新稳定版(如Debian 11/12),关闭防火墙(sudo ufw disable)或放行HDFS相关端口(如9000、50070、8020等)。
  • 硬件要求:NameNode建议至少2GB内存,DataNode建议1GB以上内存;每个节点需预留足够磁盘空间(如100GB以上)用于存储数据。
  • 网络配置:为每个节点分配静态IP(如master节点192.168.1.100、DataNode节点192.168.1.101-192.168.1.103),编辑/etc/hosts文件添加所有节点的IP与主机名映射(如192.168.1.100 master192.168.1.101 node1)。

2. 安装Java环境 Hadoop依赖Java 11及以上版本,推荐使用OpenJDK:

sudo apt update &
    &
     sudo apt install -y openjdk-11-jdk
# 验证安装
java -version  # 应输出Java 11及以上版本信息

3. 创建Hadoop专用用户 为避免权限问题,创建专用用户并授予权限:

sudo adduser hadoop  # 设置密码及个人信息
sudo usermod -aG sudo hadoop  # 加入sudo组
# 切换至hadoop用户
su - hadoop

4. 下载并解压Hadoop 从Apache官网下载稳定版Hadoop(如3.3.6),解压至/usr/local/并重命名:

wget https://downloads.apache.org/hadoop/core/hadoop-3.3.6/hadoop-3.3.6.tar.gz
sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
# 设置目录权限
sudo chown -R hadoop:hadoop /usr/local/hadoop

5. 配置Hadoop环境变量 编辑/etc/profile文件,添加Hadoop及Java环境变量:

echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >
    >
     /etc/profile
echo 'export HADOOP_HOME=/usr/local/hadoop' >
    >
     /etc/profile
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >
    >
     /etc/profile
# 使配置生效
source /etc/profile

6. 配置SSH免密码登录 在NameNode上生成SSH密钥,并复制至所有节点(包括自身):

ssh-keygen -t rsa -b 4096 -C "hadoop@cluster"  # 直接回车,默认路径
ssh-copy-id hadoop@master  # 复制至NameNode自身
ssh-copy-id hadoop@node1   # 复制至DataNode1
ssh-copy-id hadoop@node2   # 复制至DataNode2
# 测试免密登录(如ssh hadoop@node1应无需密码)

7. 配置Hadoop核心文件 所有配置文件位于$HADOOP_HOME/etc/hadoop/目录下,需修改以下文件:

  • core-site.xml(定义HDFS默认文件系统):
    <
        configuration>
        
        <
        property>
        
            <
        name>
        fs.defaultFS<
        /name>
        
            <
        value>
        hdfs://master:9000<
        /value>
          <
        !-- NameNode地址 -->
        
        <
        /property>
        
        <
        property>
        
            <
        name>
        hadoop.tmp.dir<
        /name>
        
            <
        value>
        /opt/hadoop/tmp<
        /value>
          <
        !-- 临时目录 -->
        
        <
        /property>
        
    <
        /configuration>
        
    
  • hdfs-site.xml(定义HDFS副本数及数据目录):
    <
        configuration>
        
        <
        property>
        
            <
        name>
        dfs.replication<
        /name>
        
            <
        value>
        3<
        /value>
          <
        !-- 副本数(根据节点数调整,如3个节点设为3) -->
        
        <
        /property>
        
        <
        property>
        
            <
        name>
        dfs.namenode.name.dir<
        /name>
        
            <
        value>
        /opt/hadoop/hdfs/namenode<
        /value>
          <
        !-- NameNode元数据目录 -->
        
        <
        /property>
        
        <
        property>
        
            <
        name>
        dfs.datanode.data.dir<
        /name>
        
            <
        value>
        /opt/hadoop/hdfs/datanode<
        /value>
          <
        !-- DataNode数据目录 -->
        
        <
        /property>
        
    <
        /configuration>
        
    
  • mapred-site.xml(定义MapReduce框架):
    <
        configuration>
        
        <
        property>
        
            <
        name>
        mapreduce.framework.name<
        /name>
        
            <
        value>
        yarn<
        /value>
          <
        !-- 使用YARN作为资源管理器 -->
        
        <
        /property>
        
    <
        /configuration>
        
    
  • yarn-site.xml(定义YARN配置):
    <
        configuration>
        
        <
        property>
        
            <
        name>
        yarn.nodemanager.aux-services<
        /name>
        
            <
        value>
        mapreduce_shuffle<
        /value>
          <
        !-- Shuffle服务 -->
        
        <
        /property>
        
        <
        property>
        
            <
        name>
        yarn.nodemanager.aux-services.mapreduce.shuffle.class<
        /name>
        
            <
        value>
        org.apache.hadoop.mapred.ShuffleHandler<
        /value>
        
        <
        /property>
        
        <
        property>
        
            <
        name>
        yarn.resourcemanager.hostname<
        /name>
        
            <
        value>
        master<
        /value>
          <
        !-- ResourceManager地址 -->
        
        <
        /property>
        
    <
        /configuration>
        
    

8. 格式化NameNode 仅在NameNode上执行一次,用于初始化HDFS元数据:

hdfs namenode -format
# 执行后会提示“Successfully formatted”,表示成功

9. 启动HDFS集群 在NameNode上启动HDFS服务(包含NameNode和DataNode):

$HADOOP_HOME/sbin/start-dfs.sh
# 查看进程是否启动
jps  # 应显示NameNode、DataNode进程

10. 验证集群状态

  • Web界面:访问http://master:9870(HDFS Web UI),查看集群状态、节点列表及存储信息。
  • 命令行验证
    hdfs dfsadmin -report  # 查看DataNode状态
    hdfs dfs -mkdir /test  # 创建测试目录
    hdfs dfs -put /home/hadoop/testfile.txt /test  # 上传测试文件
    hdfs dfs -ls /test     # 查看文件是否上传成功
    

注意事项

  • 确保所有节点的时间同步(可使用ntpdate命令同步)。
  • 若启动失败,检查$HADOOP_HOME/logs/目录下的日志文件(如NameNode.logDataNode.log)定位问题。
  • 生产环境中建议配置高可用(HA),避免单点故障。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Debian上HDFS集群怎么搭建
本文地址: https://pptw.com/jishu/738853.html
Debian下HDFS如何备份数据 Debian上HDFS怎么配置

游客 回复需填写必要信息