Linux系统下Hadoop集群搭建与配置详细教程:从环境准备到集群启动

一、前期准备工作

1. 环境规划

假设我们有三台虚拟机,分别作为 NameNode 和 DataNode,集群规划如下:

节点名称主机名IP地址角色
主节点namenodehadoop01NameNode、ResourceManager
从节点1datanode1hadoop02DataNode、NodeManager
从节点2datanode2hadoop03DataNode、NodeManager
2. 系统配置
  • 安装操作系统:在三台虚拟机上安装 CentOS 或 Ubuntu 等 Linux 发行版。
  • 关闭防火墙:在所有节点上关闭防火墙,以避免对通信造成阻碍。
    systemctl stop firewalld
    systemctl disable firewalld
    
  • 修改主机名:根据规划修改每台虚拟机的主机名。
    hostnamectl set-hostname hadoop01
    
  • 配置网络:确保所有节点在同一网络下,并且可以相互访问。
3. 配置免密登录
  • 在主节点上生成 SSH 密钥对:
    ssh-keygen -t rsa
    
  • 将公钥复制到所有从节点的 ~/.ssh/authorized_keys 文件中:
    ssh-copy-id hd@hadoop02
    ssh-copy-id hd@hadoop03
    

二、安装 Java 和 Hadoop

1. 安装 Java
  • 下载并安装 JDK,例如 JDK 1.8。
  • 解压到指定目录,如 /export/servers/
  • 配置环境变量,编辑 /etc/profile 文件,添加以下内容:
    export JAVA_HOME=/export/servers/jdk1.8.0_141
    export PATH=$PATH:$JAVA_HOME/bin
    export CLASSPATH=.:$JAVA_HOME/lib
    
  • 使环境变量生效:
    source /etc/profile
    
2. 安装 Hadoop
  • 下载 Hadoop 3.3.4,并将其解压到 /export/servers/ 目录下。
  • 配置环境变量,编辑 /etc/profile 文件,添加以下内容:
    export HADOOP_HOME=/export/servers/hadoop-3.3.4
    export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    
  • 使环境变量生效:
    source /etc/profile
    

三、Hadoop 集群配置

1. 配置 hadoop-env.sh

编辑 /export/servers/hadoop-3.3.4/etc/hadoop/hadoop-env.sh 文件,设置 JAVA_HOME

export JAVA_HOME=/export/servers/jdk1.8.0_141
2. 配置 core-site.xml

编辑 /export/servers/hadoop-3.3.4/etc/hadoop/core-site.xml 文件,添加以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://namenode:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/data/hadoop/tmp</value>
    </property>
</configuration>
3. 配置 hdfs-site.xml

编辑 /export/servers/hadoop-3.3.4/etc/hadoop/hdfs-site.xml 文件,添加以下内容:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>2</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/export/data/hadoop/hdfs/namenode</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/export/data/hadoop/hdfs/datanode</value>
    </property>
</configuration>
4. 配置 yarn-site.xml

编辑 /export/servers/hadoop-3.3.4/etc/hadoop/yarn-site.xml 文件,添加以下内容:

<configuration>
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>namenode</value>
    </property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
5. 配置 workers

编辑 /export/servers/hadoop-3.3.4/etc/hadoop/workers 文件,添加从节点的主机名:

hadoop02
hadoop03

四、分发配置文件

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

scp -r /export/servers/hadoop-3.3.4 hd@hadoop02:/export/servers/
scp -r /export/servers/hadoop-3.3.4 hd@hadoop03:/export/servers/

五、集群启动

1. 格式化 HDFS

在主节点上运行以下命令:

hdfs namenode -format
2. 启动 HDFS 和 YARN

在主节点上运行以下命令:

start-dfs.sh
start-yarn.sh
3. 验证集群状态
  • 在主节点上运行 jps 命令,检查 NameNode、DataNode、ResourceManager 和 NodeManager 等进程是否正常启动。
  • 访问 HDFS Web UI:http://<namenode IP>:9870
  • 访问 YARN Web UI:http://<namenode IP>:8088

六、常见问题及解决方法

1. DataNode 未启动
  • 确保 dfs.datanode.data.dir 指定的目录存在且有权限。
  • 确保从节点可以访问主节点的 9000 端口。
2. 网络问题
  • 确保所有节点的网络配置正确,可以通过 ping 命令测试。
3. 权限问题
  • 确保 Hadoop 安装目录和数据目录的权限正确,可以使用 chmod 命令调整。

七、集群管理

1. 添加新节点

如果需要添加新的 DataNode,只需将 Hadoop 安装包分发到新节点,并在主节点的 workers 文件中添加新节点的主机名,然后重启 HDFS。

2. 高可用性配置

为了提高集群的可靠性,可以配置 Hadoop 的高可用性(HA)。通过设置多个 NameNode 和 JournalNode,可以在一个 NameNode 失败时自动切换到另一个 NameNode。

3. 监控和日志管理
  • 使用 Hadoop 自带的 Web UI 监控集群状态。
  • 查看日志文件以排查问题,日志文件通常位于 /export/servers/hadoop-3.3.4/logs 目录下。

八、后续操作

1. 运行示例程序

运行 Hadoop 自带的示例程序测试集群功能:

hadoop jar /export/servers/hadoop-3.3.4/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar grep /input /output 'dfs[a-z.]+' 
2. 数据存储和处理
  • 将数据上传到 HDFS:
    hdfs dfs -put /local/path /hdfs/path
    
  • 使用 MapReduce 或其他框架(如 Spark)处理数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值