Ubuntu Server 24.04 上安装 Hadoop 3.4.0

虚拟机环境

为了方便一些小朋友参考,把这部分内容整理了一下。

Ubuntu Server 24.04 LTS的一个 VirtualBox 虚拟机的下载链接:https://pan.baidu.com/s/1ggVI-_Cuab2ylcjvKRWRwg?pwd=z5m3 提取码:z5m3

用户名和密码都是hadoop。

Hadoop的安装

以下是在 Ubuntu Server 24.04 上安装 Hadoop 的步骤:

  1. 更新系统:首先,更新你的系统到最新状态。
sudo apt-get update
sudo apt-get upgrade
  1. 安装 Java:Hadoop 需要 Java 运行环境,你可以通过以下命令安装 OpenJDK:
sudo apt-get install openjdk-8-jdk
  1. 下载 Hadoop:从 Apache Hadoop 的官方网站下载最新稳定版的 Hadoop。你可以使用 wget 命令来下载:
wget -c https://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.4.0/hadoop-3.4.0.tar.gz

请注意,上述链接可能会随着新版本的发布而改变。

  1. 解压 Hadoop:使用 tar 命令解压下载的文件:
tar xzf hadoop-3.4.0.tar.gz
sudo mv hadoop-3.4.0 /usr/local/hadoop
  1. 配置 Hadoop:配置 Hadoop 的环境变量。 nano ~/.bashrc 打开配置文件,并在文件末尾添加以下行:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export PATH=/usr/local/hadoop/bin:$PATH
export PATH=/usr/local/hadoop/sbin:$PATH

然后,运行以下命令使配置生效:

source ~/.bashrc
sudo hostnamectl set-hostname mini //改一下主机名,避免和其他的重复
  1. 验证安装:运行以下命令验证 Hadoop 是否安装成功:
hadoop version

如果安装成功,这个命令应该会输出你安装的 Hadoop 版本信息。

  1. 安装SSH、配置SSH无密码登陆

集群、单节点模式都需要用到 SSH 登陆(类似于远程登陆,你可以登录某台 Linux 主机,并且在上面运行命令),Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server:

sudo apt-get install openssh-server

安装后,可以使用如下命令登陆本机:

ssh localhost

此时会有如下提示(SSH首次登陆提示),输入 yes 。然后按提示输入密码 hadoop,这样就登陆到本机了。

但这样登陆是需要每次输入密码的,我们需要配置成SSH无密码登陆比较方便。

首先退出刚才的 ssh,就回到了我们原先的终端窗口,然后利用 ssh-keygen 生成密钥,并将密钥加入到授权中:

exit         # 退出刚才的 ssh localhost
cd ~/.ssh/   # 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa   # 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

~的含义: 在 Linux 系统中,~ 代表的是用户的主文件夹,即 "/home/用户名" 这个目录,如你的用户名为 hadoop,则 ~ 就代表 "/home/hadoop/"。 此外,命令中的 # 后面的文字是注释,只需要输入前面命令即可。

此时再用 ssh localhost 命令,无需输入密码就可以直接登陆了。

  1. 配置 Hadoop 伪分布式

修改之前先备份文件:

cp /usr/local/hadoop/etc/hadoop/core-site.xml /usr/local/hadoop/etc/hadoop/core-site.xml.back
cp /usr/local/hadoop/etc/hadoop/hdfs-site.xml /usr/local/hadoop/etc/hadoop/hdfs-site.xml.back

Hadoop 可以在单节点上以伪分布式的方式运行,Hadoop 进程以分离的 Java 进程来运行,节点既作为 NameNode 也作为 DataNode,同时,读取的是 HDFS 中的文件。

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/ 中,伪分布式需要修改2个配置文件 core-site.xmlhdfs-site.xml 。Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现。

修改配置文件 core-site.xml (通过 nano 编辑会比较方便: nano /usr/local/hadoop/etc/hadoop/core-site.xml),将当中的

<configuration>
</configuration>

修改为下面配置:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

同样的,修改配置文件 hdfs-site.xml (通过 nano 编辑会比较方便: nano /usr/local/hadoop/etc/hadoop/hdfs-site.xml):

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/tmp/dfs/data</value>
    </property>
</configuration>

Hadoop 的运行方式是由配置文件决定的(运行 Hadoop 时会读取配置文件),因此如果需要从伪分布式模式切换回非分布式模式,需要删除 core-site.xml 中的配置项。

此外,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。

配置完成后,执行 NameNode 的格式化:

cd /usr/local/hadoop
./bin/hdfs namenode -format

然后可以使用 start-all.sh 脚本来启动 Hadoop 了:

start-all.sh

现在,你的 Hadoop 应该已经以伪分布式模式运行了。你可以使用 jps 命令来检查 Hadoop 的进程是否已经启动。如果 Hadoop 已经启动,jps 命令应该会显示 NameNodeDataNodeSecondaryNameNodeNodeManagerResourceManager 这几个进程。

在Hadoop 2.x版本中,NameNode的Web界面默认在50070端口。但是在Hadoop 3.x版本中,这个端口已经改变为9870。 在浏览器中访问http://localhost:9870/(对于Hadoop 3.x)或http://localhost:50070/(对于Hadoop 2.x)来访问NameNode的Web界面。

Category
Tagcloud
Hardware Software VisPy RTL-SDR MayaVi Story Hackintosh Science GIS Translate Junck RaspberryPi Photography Hack Telescope FuckChunWan Visualization Conda Kivy Hadoop GlumPy Life Poem Camera University Lens QGIS Linux Scholar Game macOS Lesson Communicate Microscope Video Chat VTK FuckZhihu Moon Python Download Radio Programming Pyenv Book Hate VirtualBox HBase Memory Mount&Blade Server Raspbian Xcode Learning QT NAS Mac IDE Data Library GeoPython Photo PyOpenCL Translation Geology Shit Disease ChromeBook DIY Discuss PHD CUDA OpenCL FckZhiHu