debian

如何在Debian上配置Hadoop集群

小樊
41
2025-09-26 02:27:03
栏目: 智能运维

一、环境准备

  1. 节点规划:搭建Hadoop集群需至少3个节点(1个NameNode主节点、1个NameNode备用节点、1个及以上DataNode;若启用YARN高可用,还需1个ResourceManager主节点、1个备用节点)。确保所有节点处于同一局域网,能互相通信。
  2. 系统更新与基础软件安装:在所有节点执行sudo apt update && sudo apt upgrade -y更新系统;安装OpenJDK 8(或更高版本,推荐Temurin):sudo apt install -y openjdk-8-jdk(或使用Temurin源安装);安装SSH服务:sudo apt install -y openssh-server,用于节点间无密码登录。

二、安装Hadoop

  1. 下载与解压:从Apache官网下载稳定版Hadoop(如3.3.x),解压至/usr/local目录:wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz && sudo tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/
  2. 配置环境变量:编辑~/.bashrc(或/etc/profile),添加以下内容:
    export HADOOP_HOME=/usr/local/hadoop-3.3.6
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64  # 或Temurin路径
    
    执行source ~/.bashrc使配置生效;验证安装:hadoop version,应显示Hadoop版本信息。

三、配置SSH免密登录

  1. 生成密钥对:在主节点(如NameNode)执行ssh-keygen -t rsa -b 4096,按提示回车(默认保存路径~/.ssh/id_rsa,无需设置密码)。
  2. 分发公钥:将公钥复制到所有节点(包括自身):ssh-copy-id hadoop@namenodessh-copy-id hadoop@datanode1hadoop为集群统一用户名,需提前在各节点创建)。
  3. 测试免密登录:执行ssh hadoop@namenodessh hadoop@datanode1,无需输入密码即可登录,验证配置成功。

四、配置Hadoop核心文件 所有节点需配置core-site.xmlmapred-site.xml;NameNode节点需配置hdfs-site.xml;若启用YARN,需配置yarn-site.xml

  1. core-site.xml:设置HDFS默认通信地址和临时目录:
    <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://namenode:9000</value>  <!-- 主节点主机名 -->
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/opt/hadoop/tmp</value>  <!-- 临时目录,需提前创建 -->
        </property>
    </configuration>
    
  2. hdfs-site.xml(NameNode节点):配置HDFS副本数、NameNode数据目录、DataNode数据目录及高可用(可选):
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>3</value>  <!-- 数据副本数,根据节点数量调整 -->
        </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>
        <!-- 高可用配置(可选) -->
        <property>
            <name>dfs.ha.namenodes.mycluster</name>
            <value>nn1,nn2</value>  <!-- NameNode ID列表 -->
        </property>
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn1</name>
            <value>namenode1:8020</value>
        </property>
        <property>
            <name>dfs.namenode.rpc-address.mycluster.nn2</name>
            <value>namenode2:8020</value>
        </property>
        <property>
            <name>dfs.namenode.shared.edits.dir</name>
            <value>qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster</value>  <!-- JournalNode共享目录 -->
        </property>
        <property>
            <name>dfs.ha.automatic-failover.enabled</name>
            <value>true</value>  <!-- 启用自动故障转移 -->
        </property>
    </configuration>
    
  3. mapred-site.xml:配置MapReduce运行框架为YARN:
    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    
  4. yarn-site.xml(ResourceManager节点):配置YARN资源管理器地址及Shuffle服务:
    <configuration>
        <property>
            <name>yarn.resourcemanager.hostname</name>
            <value>resourcemanager</value>  <!-- ResourceManager主机名 -->
        </property>
        <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>
        <!-- 高可用配置(可选) -->
        <property>
            <name>yarn.resourcemanager.ha.enabled</name>
            <value>true</value>
        </property>
        <property>
            <name>yarn.resourcemanager.cluster-id</name>
            <value>yarn-cluster</value>
        </property>
        <property>
            <name>yarn.resourcemanager.ha.rm-ids</name>
            <value>rm1,rm2</value>
        </property>
        <property>
            <name>yarn.resourcemanager.zk-address</name>
            <value>namenode1:2181,namenode2:2181,namenode3:2181</value>
        </property>
    </configuration>
    

五、配置主机名解析 编辑所有节点的/etc/hosts文件,添加集群节点的IP地址与主机名映射(替换为实际IP):

127.0.0.1   localhost
192.168.1.100 namenode
192.168.1.101 datanode1
192.168.1.102 datanode2
192.168.1.103 resourcemanager

保存后执行ping namenode测试解析是否正确。

六、初始化HDFS(仅NameNode节点) 在NameNode节点执行hdfs namenode -format,格式化HDFS元数据目录(此操作会清除原有数据,仅首次启动需执行)。

七、启动Hadoop集群

  1. 启动HDFS:在NameNode节点执行start-dfs.sh,启动NameNode和DataNode服务;执行jps查看进程,应显示NameNodeDataNode
  2. 启动YARN:在ResourceManager节点执行start-yarn.sh,启动ResourceManager和NodeManager服务;执行yarn node -list查看NodeManager列表,验证YARN启动成功。
  3. (可选)启动高可用组件:若配置了HDFS或YARN高可用,需启动JournalNode(hadoop-daemons.sh start journalnode)和ZooKeeper集群(zkServer.sh start),并验证ZooKeeper状态(zkServer.sh status)。

八、验证集群状态

  1. HDFS验证:执行hdfs dfs -ls /,若返回“Permission denied”,可执行hdfs dfs -mkdir -p /user/hadoop创建用户目录,再执行hdfs dfs -ls /查看根目录。
  2. YARN验证:执行yarn node -list,应显示所有NodeManager节点信息;提交测试任务:hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 100,验证YARN任务调度功能。
  3. Web UI验证:访问NameNode Web界面(http://namenode:9000)、ResourceManager Web界面(http://resourcemanager:8088),查看集群状态。

0
看了该问题的人还看了