温馨提示×

Hadoop在Linux上的安装步骤

小樊
44
2025-10-06 01:55:03
栏目: 智能运维

Hadoop在Linux上的安装步骤(以Ubuntu 22.04为例)

1. 环境准备

  • 操作系统:推荐使用Ubuntu 22.04 LTS(64位)或其他稳定Linux发行版(如CentOS 7)。
  • 硬件要求:至少4GB内存、20GB可用磁盘空间(生产环境需更高配置)。
  • 软件依赖:需安装Java(JDK 8或11)、SSH服务(用于节点间通信)。

2. 安装Java环境

Hadoop基于Java开发,需先安装JDK并配置环境变量:

  • 安装OpenJDK 11(推荐):
    sudo apt update
    sudo apt install openjdk-11-jdk -y
    
  • 验证Java安装
    java -version
    
    输出应包含Java版本信息(如openjdk version "11.0.xx")。

3. 配置SSH免密登录(单机/集群必需)

Hadoop通过SSH进行节点间通信,需配置本地免密登录:

  • 生成SSH密钥对
    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    
  • 添加公钥到授权文件
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys  # 设置文件权限
    
  • 测试免密登录
    ssh localhost
    
    若无需输入密码即可登录,则配置成功。

4. 下载并解压Hadoop

  • 下载Hadoop(以3.3.5为例,可从Apache官网或镜像站获取):
    wget https://downloads.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
    
  • 解压到指定目录(如/usr/local):
    sudo tar -zxvf hadoop-3.3.5.tar.gz -C /usr/local
    sudo mv /usr/local/hadoop-3.3.5 /usr/local/hadoop  # 重命名便于管理
    
  • 修改目录权限(避免权限问题):
    sudo chown -R $USER:$USER /usr/local/hadoop
    

5. 配置Hadoop环境变量

编辑~/.bashrc文件,添加Hadoop相关环境变量:

nano ~/.bashrc

在文件末尾添加以下内容(根据实际路径调整):

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HADOOP_HOME/lib/native

使配置生效:

source ~/.bashrc
  • 验证Hadoop安装
    hadoop version
    
    输出应显示Hadoop版本及编译信息。

6. 配置Hadoop核心文件

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

6.1 hadoop-env.sh

设置Java路径(若JAVA_HOME已在环境变量中定义,可跳过):

nano $HADOOP_HOME/etc/hadoop/hadoop-env.sh

找到# export JAVA_HOME=行,取消注释并修改为:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # 根据实际Java路径调整
6.2 core-site.xml

配置HDFS的默认文件系统URI(指向NameNode):

nano $HADOOP_HOME/etc/hadoop/core-site.xml

替换为以下内容:

<configuration>
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>
6.3 hdfs-site.xml

配置HDFS数据存储路径及副本数(单机模式副本数为1):

nano $HADOOP_HOME/etc/hadoop/hdfs-site.xml

替换为以下内容:

<configuration>
  <property>
    <name>dfs.replication</name>
    <value>1</value>  <!-- 单机模式设为1 -->
  </property>
  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/usr/local/hadoop/tmp/dfs/name</value>  <!-- NameNode数据目录 -->
  </property>
  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/usr/local/hadoop/tmp/dfs/data</value>  <!-- DataNode数据目录 -->
  </property>
</configuration>
6.4 mapred-site.xml

配置MapReduce框架为YARN(需先创建该文件,若不存在则复制模板):

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template $HADOOP_HOME/etc/hadoop/mapred-site.xml
nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

替换为以下内容:

<configuration>
  <property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
</configuration>
6.5 yarn-site.xml

配置YARN资源管理器:

nano $HADOOP_HOME/etc/hadoop/yarn-site.xml

替换为以下内容:

<configuration>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>

7. 格式化HDFS NameNode

首次启动HDFS前,需格式化NameNode(会清除原有数据,仅第一次需要):

hdfs namenode -format

8. 启动Hadoop服务

  • 启动HDFS
    start-dfs.sh
    
  • 启动YARN
    start-yarn.sh
    
  • 查看进程状态
    jps
    
    正常输出应包含以下进程:
    • NameNode(HDFS主节点)
    • DataNode(HDFS数据节点)
    • ResourceManager(YARN资源管理器)
    • NodeManager(YARN节点管理器)

9. 验证Hadoop功能

  • 查看HDFS根目录
    hdfs dfs -ls /
    
  • 上传本地文件到HDFS(如localfile.txt):
    hdfs dfs -put localfile.txt /user/$USER/
    
  • 下载HDFS文件到本地
    hdfs dfs -get /user/$USER/localfile.txt .
    
  • 运行MapReduce示例(如WordCount):
    hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar wordcount /user/$USER/input /user/$USER/output
    

10. 可选:配置防火墙(若启用)

若系统启用了防火墙,需允许Hadoop相关端口通信:

sudo firewall-cmd --permanent --zone=public --add-port=9000/tcp  # HDFS NameNode
sudo firewall-cmd --permanent --zone=public --add-port=50070/tcp  # HDFS Web UI
sudo firewall-cmd --permanent --zone=public --add-port=8088/tcp  # YARN Web UI
sudo firewall-cmd --reload

通过以上步骤,即可在Linux系统上完成Hadoop的单机部署。如需扩展为集群,需在多台机器上重复上述步骤,并配置slaves文件(指定DataNode节点)及集群间的SSH免密登录。

0