如何在 Ubuntu 20.04 上安装和配置 Apache Hadoop如何在 Ubuntu 20.04 上安装和配置 Apache Hadoop如何在 Ubuntu 20.04 上安装和配置 Apache Hadoop如何在 Ubuntu 20.04 上安装和配置 Apache Hadoop
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Ubuntu 20.04 上安装和配置 Apache Hadoop

发表 admin at 2025年2月28日
类别
  • 未分类
标签

本教程适用于这些操作系统版本

  • Ubuntu 22.04(Jammy Jellyfish)
  • Ubuntu 20.04(Focal Fossa)

在此页

  1. 先决条件
  2. 更新系统包
  3. 安装Java
  4. 创建 Hadoop 用户并设置无密码 SSH
  5. 安装 Hadoop
  6. 配置 Hadoop
    1. 配置 Java 环境变量
    2. 配置 core-site.xml 文件
    3. 配置 hdfs-site.xml 文件

    1. 配置 yarn-site.xml 文件

    Apache Hadoop 是一个开源框架,用于管理、存储和处理集群系统下运行的各种大数据应用程序的数据。它是用 Java 编写的,带有一些 C 和 shell 脚本的本机代码。它使用分布式文件系统 (HDFS) 并从单个服务器扩展到数千台机器。

    Apache Hadoop 基于四个主要组件:

    • Hadoop Common:它是其他 Hadoop 模块所需的实用程序和库的集合。
    • HDFS:也称为跨多个节点分布的 Hadoop 分布式文件系统。
    • MapReduce :这是一个用于编写应用程序以处理大量数据的框架。
    • Hadoop YARN:也称为 Yet Another Resource Negotiator,是 Hadoop 的资源管理层。

    在本教程中,我们将解释如何在 Ubuntu 20.04 上设置单节点 Hadoop 集群。

    先决条件

    • 运行 Ubuntu 20.04 和 4 GB RAM 的服务器。
    • 在您的服务器上配置了根密码。

    更新系统包

    在开始之前,建议将您的系统包更新到最新版本。您可以使用以下命令执行此操作:

    apt-get update -y
    apt-get upgrade -y

    更新系统后,重新启动它以实施更改。

    安装Java

    Apache Hadoop 是一个基于 Java 的应用程序。因此,您需要在系统中安装 Java。您可以使用以下命令安装它:

    apt-get install default-jdk default-jre -y

    安装后,您可以使用以下命令验证已安装的 Java 版本:

    java -version

    您应该得到以下输出:

    openjdk version "11.0.7" 2020-04-14
    OpenJDK Runtime Environment (build 11.0.7+10-post-Ubuntu-3ubuntu1)
    OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Ubuntu-3ubuntu1, mixed mode, sharing)
    

    创建 Hadoop 用户并设置无密码 SSH

    首先,使用以下命令创建一个名为 hadoop 的新用户:

    adduser hadoop

    接下来,将 hadoop 用户添加到 sudo 组
    usermod -aG sudo hadoop

    接下来,使用 hadoop 用户登录并使用以下命令生成 SSH 密钥对:

    su - hadoop
    ssh-keygen -t rsa

    您应该得到以下输出:

    Generating public/private rsa key pair.
    Enter file in which to save the key (/home/hadoop/.ssh/id_rsa): 
    Created directory '/home/hadoop/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /home/hadoop/.ssh/id_rsa
    Your public key has been saved in /home/hadoop/.ssh/id_rsa.pub
    The key fingerprint is:
    SHA256:HG2K6x1aCGuJMqRKJb+GKIDRdKCd8LXnGsB7WSxApno 
    The key's randomart image is:
    +---[RSA 3072]----+
    |..=..            |
    | O.+.o   .       |
    |oo*.o + . o      |
    |o .o * o +       |
    |o+E.= o S        |
    |=.+o * o         |
    |*.o.= o o        |
    |=+ o.. + .       |
    |o ..  o .        |
    +----[SHA256]-----+
    

    接下来,将此密钥添加到 Authorized ssh keys 并授予适当的权限:

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

    接下来,使用以下命令验证无密码 SSH:

    ssh localhost

    无密码登录后,您可以继续下一步。

    安装 Hadoop

    首先,使用hadoop用户登录,使用以下命令下载最新版本的Hadoop:

    su - hadoop
    wget https://downloads.apache.org/hadoop/common/hadoop-3.2.1/hadoop-3.2.1.tar.gz

    下载完成后,使用以下命令解压缩下载的文件:

    tar -xvzf hadoop-3.2.1.tar.gz

    接下来,将提取的目录移动到 /usr/local/:

    sudo mv hadoop-3.2.1 /usr/local/hadoop

    接下来,使用以下命令创建一个目录来存储日志:

    sudo mkdir /usr/local/hadoop/logs

    接下来,将 hadoop 目录的所有权更改为 hadoop:

    sudo chown -R hadoop:hadoop /usr/local/hadoop

    接下来,您需要配置 Hadoop 环境变量。你可以通过编辑 ~/.bashrc 文件来做到这一点:

    nano ~/.bashrc

    添加以下行:

    export HADOOP_HOME=/usr/local/hadoop
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export YARN_HOME=$HADOOP_HOME
    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
    

    完成后保存并关闭文件。然后,使用以下命令激活环境变量:

    source ~/.bashrc

    配置 Hadoop

    在本节中,我们将学习如何在单个节点上设置 Hadoop。

    配置 Java 环境变量

    接下来,您需要在 hadoop-env.sh 中定义 Java 环境变量,以配置 YARN、HDFS、MapReduce 和 Hadoop 相关的项目设置。

    首先,使用以下命令找到正确的 Java 路径:

    which javac

    您应该看到以下输出:

    /usr/bin/javac
    

    接下来,使用以下命令找到 OpenJDK 目录:

    readlink -f /usr/bin/javac

    您应该看到以下输出:

    /usr/lib/jvm/java-11-openjdk-amd64/bin/javac
    

    接下来,编辑 hadoop-env.sh 文件并定义 Java 路径:

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

    添加以下行:

    export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 
    export HADOOP_CLASSPATH+=" $HADOOP_HOME/lib/*.jar"
    

    接下来,您还需要下载 Javax 激活文件。您可以使用以下命令下载它:

    cd /usr/local/hadoop/lib
    sudo wget https://jcenter.bintray.com/javax/activation/javax.activation-api/1.2.0/javax.activation-api-1.2.0.jar

    您现在可以使用以下命令验证 Hadoop 版本:

    hadoop version

    您应该得到以下输出:

    Hadoop 3.2.1
    Source code repository https://gitbox.apache.org/repos/asf/hadoop.git -r b3cbbb467e22ea829b3808f4b7b01d07e0bf3842
    Compiled by rohithsharmaks on 2019-09-10T15:56Z
    Compiled with protoc 2.5.0
    From source with checksum 776eaf9eee9c0ffc370bcbc1888737
    This command was run using /usr/local/hadoop/share/hadoop/common/hadoop-common-3.2.1.jar
    

    配置 core-site.xml 文件

    接下来,您需要为您的 NameNode 指定 URL。您可以通过编辑 core-site.xml 文件来完成:

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

    添加以下行:

    <configuration>
       <property>
          <name>fs.default.name</name>
          <value>hdfs://0.0.0.0:9000</value>
          <description>The default file system URI</description>
       </property>
    
    </configuration>
    

    完成后保存并关闭文件:

    配置 hdfs-site.xml 文件

    接下来,您需要定义存储节点元数据、fsimage 文件和编辑日志文件的位置。您可以通过编辑 hdfs-site.xml 文件来完成。首先,创建一个用于存储节点元数据的目录:

    sudo mkdir -p /home/hadoop/hdfs/{namenode,datanode}
    sudo chown -R hadoop:hadoop /home/hadoop/hdfs

    接下来,编辑 hdfs-site.xml 文件并定义目录的位置:

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

    添加以下行:

    <configuration>
       <property>
          <name>dfs.replication</name>
          <value>1</value>
       </property>
    
       <property>
          <name>dfs.name.dir</name>
          <value>file:///home/hadoop/hdfs/namenode</value>
       </property>
    
       <property>
          <name>dfs.data.dir</name>
          <value>file:///home/hadoop/hdfs/datanode</value>
       </property>
    </configuration>
    

    保存并关闭文件。

    配置 mapred-site.xml 文件

    接下来,您需要定义 MapReduce 值。您可以通过编辑 mapred-site.xml 文件来定义它:

    sudo nano $HADOOP_HOME/etc/hadoop/mapred-site.xml

    添加以下行:

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

    保存并关闭文件。

    配置 yarn-site.xml 文件

    接下来,您需要编辑 yarn-site.xml 文件并定义 YARN 相关设置:

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

    添加以下行:

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

    完成后保存并关闭文件。

    格式化 HDFS NameNode

    接下来,您需要验证 Hadoop 配置并格式化 HDFS NameNode。

    首先,使用 Hadoop 用户登录并使用以下命令格式化 HDFS NameNode:

    su - hadoop
    hdfs namenode -format

    您应该得到以下输出:

    2020-06-07 11:35:57,691 INFO util.GSet: VM type       = 64-bit
    2020-06-07 11:35:57,692 INFO util.GSet: 0.25% max memory 1.9 GB = 5.0 MB
    2020-06-07 11:35:57,692 INFO util.GSet: capacity      = 2^19 = 524288 entries
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.window.num.buckets = 10
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
    2020-06-07 11:35:57,706 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minutes = 1,5,25
    2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
    2020-06-07 11:35:57,710 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
    2020-06-07 11:35:57,712 INFO util.GSet: Computing capacity for map NameNodeRetryCache
    2020-06-07 11:35:57,712 INFO util.GSet: VM type       = 64-bit
    2020-06-07 11:35:57,712 INFO util.GSet: 0.029999999329447746% max memory 1.9 GB = 611.9 KB
    2020-06-07 11:35:57,712 INFO util.GSet: capacity      = 2^16 = 65536 entries
    2020-06-07 11:35:57,743 INFO namenode.FSImage: Allocated new BlockPoolId: BP-1242120599-69.87.216.36-1591529757733
    2020-06-07 11:35:57,763 INFO common.Storage: Storage directory /home/hadoop/hdfs/namenode has been successfully formatted.
    2020-06-07 11:35:57,817 INFO namenode.FSImageFormatProtobuf: Saving image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 using no compression
    2020-06-07 11:35:57,972 INFO namenode.FSImageFormatProtobuf: Image file /home/hadoop/hdfs/namenode/current/fsimage.ckpt_0000000000000000000 of size 398 bytes saved in 0 seconds .
    2020-06-07 11:35:57,987 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
    2020-06-07 11:35:58,000 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when meet shutdown.
    2020-06-07 11:35:58,003 INFO namenode.NameNode: SHUTDOWN_MSG: 
    /************************************************************
    SHUTDOWN_MSG: Shutting down NameNode at ubunt4/69.87.216.36
    ************************************************************/
    

    启动 Hadoop 集群

    首先,使用以下命令启动 NameNode 和 DataNode:

    start-dfs.sh

    您应该得到以下输出:

    Starting namenodes on [0.0.0.0]
    Starting datanodes
    Starting secondary namenodes [ubunt4]
    

    接下来,通过运行以下命令启动 YARN 资源和节点管理器:

    start-yarn.sh

    您应该得到以下输出:

    Starting resourcemanager
    Starting nodemanagers
    

    您现在可以使用以下命令验证它们:

    jps

    您应该得到以下输出:

    5047 NameNode
    5850 Jps
    5326 SecondaryNameNode
    5151 DataNode
    

    访问 Hadoop Web 界面

    您现在可以使用 URL http://your-server-ip:9870 访问 Hadoop NameNode。您应该看到以下屏幕:

    您还可以使用 URL http://your-server-ip:9864 访问各个 DataNode。您应该看到以下屏幕:

    要访问 YARN 资源管理器,请使用 URL http://your-server-ip:8088。您应该看到以下屏幕:

    结论

    恭喜!您已经在单个节点上成功安装了 Hadoop。您现在可以开始探索基本的 HDFS 命令并设计一个完全分布式的 Hadoop 集群。如果您有任何问题,请随时问我。

©2015-2025 Norria support@alaica.com