创建专用账户

在安装Hadoop时,通常建议创建一个专用的用户账户(例如hadoop)来运行Hadoop服务,避免使用root用户运行Hadoop,减少安全风险并将Hadoop的文件、进程和权限与系统其他部分隔离。专用用户也更易于管理Hadoop相关的文件和目录权限。

首先打开终端,创建一个名为hadoop的用户,如果你安装登录Ubuntu的系统用户名就是hadoop,那么不需要此操作:

sudo useradd -m hadoop -s /bin/bash

useradd命令的-m用来指定用户名,-s用来指定用户登录时所需的shell文件

-s /bin/bash选项指定了用户登录时使用的 shell 程序。

查看是否创建成功

groups hadoop

在这里插入图片描述

有些操作需要使用root权限,所以给与hadoop管理员root权限

sudo adduser hadoop sudo

在这里插入图片描述

接下来更新一下系统和相关软件:

sudo apt-get update

确保你的系统携带vim,输入vim查看

在这里插入图片描述

若没有自行安装:

sudo apt-get install vim

至此,以下命令都建议在hadoop账户下进行

安装Java并配置环境变量

Hadoop及其生态系统依赖于Java环境,原因如下

  • 核心开发语言:Hadoop框架本身是用Java编写的
  • 运行环境:Hadoop的MapReduce任务、HDFS文件系统等核心组件都需要JVM运行
  • 生态系统工具:Hive、HBase、Spark等Hadoop生态工具都基于Java
  • 应用开发:大多数基于Hadoop的应用开发使用Java语言

Ubuntu系统默认不包含完整的Java开发环境,因此需要手动安装。

安装Java开发环境

sudo apt-get install default-jre default-jdk

验证安装

java -version
# 输出示例:openjdk version "11.0.20" 2023-07-18

javac -version
# 输出示例:javac 11.0.20

Hadoop安装与配置

首先下载Hadoop二进制文件,至文档编写日官方最新版是3.4.2,但并不在官方镜像中,因此选择3.4.1下载

[Apache Hadoop](https://hadoop.apache.org/)

以下,binary是标准版。
在这里插入图片描述

# 进入下载目录, 在你的用户目录下
cd ~/Downloads

在这里插入图片描述

# 下载Hadoop
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.4.1/hadoop-3.4.1.tar.gz

在这里插入图片描述
下载好后我们需要验证文件完整性,根据官方给出的快速检查方法在这里插入图片描述

shasum -a 512 hadoop-3.4.1.tar.gz

在官方验证库中寻找:
Index of /hadoop/common/hadoop-3.4.1

在这里插入图片描述
你的代码输出结果和文档哈希值进行比对即可:
在这里插入图片描述

解压并设置用户权限

注意该用户应当与之前设置ssh无密码登录的用户相同,比如你之前使用hadoop用户设置了ssh,此时也要给用户所有权

# 解压到/usr/local目录
sudo tar -zxvf hadoop-3.4.1.tar.gz -C /usr/local/

# 设置所有权(确保当前用户有权限)
sudo chown -R $(whoami):$(whoami) /usr/local/hadoop-3.4.1

创建软链接

# 创建软链接
sudo ln -s /usr/local/hadoop-3.4.1 /usr/local/hadoop

软链接作用:创建虚拟路径:/usr/local/hadoop/usr/local/hadoop-3.4.1版本升级时只需更改链接目标,无需修改所有配置文件保持环境变量HADOOP_HOME路径不变

测试:

ls -l /usr/local/hadoop

在这里插入图片描述

配置Hadoop环境变量

编辑bash配置文件
vim ~/.bashrc

在文件末尾添加以下内容:

# Hadoop Environment Variables
export HADOOP_HOME=/usr/local/hadoop
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

# Java Environment
export JAVA_HOME=你的java安装路径

参数详解

  • HADOOP_HOME:Hadoop安装根目录

  • PATH:添加Hadoop命令路径bin:常用命令(hdfs, yarn, mapred)sbin:管理脚本(start-dfs.sh, stop-yarn.sh等)

  • $PATH:保留原有系统路径

    # 查找 Java 安装路径
    sudo update-alternatives --config java
    

    示例输出

    There is only one alternative in link group java (providing /usr/bin/java): /usr/lib/jvm/java-11-openjdk-amd64/bin/java
    

    去掉末尾的 /bin/java就是 JAVA_HOME的值

应用配置
source ~/.bashrc

验证配置

hadoop version
# 应输出Hadoop版本信息
which hdfs
# 应输出:/usr/local/hadoop/bin/hdfs

SSH无密码登录配置

在 hadoop01 执行

生成密钥对
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa

参数详解

  • -t rsa:使用RSA加密算法
  • -P "":设置空密码(无密码登录)
  • -f ~/.ssh/id_rsa:指定密钥文件路径
  • 生成文件id_rsa:私钥(必须保密)id_rsa.pub:公钥(用于分发)
分发公钥
向本机授权(伪分布式必需)
ssh-copy-id localhost  # 将公钥添加到hadoop01的授权列表

命令原理

  1. 将公钥(id_rsa.pub)复制到目标节点
  2. 将公钥添加到目标节点的~/.ssh/authorized_keys文件
  3. 设置正确的文件权限
测试无密码登录
# 测试本机登录
ssh localhost

预期结果

  • 无需输入密码即可直接登录
  • 登录后执行exit返回原终端

配置伪分布式模式

首先,检查已经完成的步骤:

# 检查Java安装
java -version

# 检查Hadoop安装
hadoop version

# 检查SSH本地无密码登录
ssh localhost

注意,以下配置文件的路径用户将huohuo全部替换为你的用户账户路径,也就是hadoop安装路径

编辑核心配置文件 core-site.xml

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

添加以下内容:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/huohuo/hadoop/tmp</value>
    </property>
</configuration>

编辑HDFS配置文件 hdfs-site.xml

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

添加以下内容:

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

编辑YARN配置文件 yarn-site.xml

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

添加以下内容:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
    <property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>
</configuration>

编辑MapReduce配置文件 mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

添加以下内容:

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

格式化HDFS

注意: 这步只需执行一次,会清除所有现有HDFS数据!

hdfs namenode -format

在 Hadoop 配置文件中设置 JAVA_HOME

# 编辑 Hadoop 环境配置文件
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

找到以下行(通常在文件顶部):

# export JAVA_HOME=

取消注释并设置为你的 Java 路径:

export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64

启动Hadoop服务

# 启动HDFS
start-dfs.sh

# 启动YARN
start-yarn.sh

# 检查运行中的Java进程
jps

在这里插入图片描述

测试WordCount

同样将huohuo替换为你的用户,应该是hadoop(之前设置的专用账户)

# 创建本地测试文件
echo "Hello World Hello Hadoop" > file1.txt
echo "Hello Hadoop Welcome to Hadoop World" > file2.txt

# 在HDFS上创建输入目录
hdfs dfs -mkdir -p /user/huohuo/input

# 上传测试文件到HDFS
hdfs dfs -put file1.txt /user/huohuo/input/
hdfs dfs -put file2.txt /user/huohuo/input/

# 查看上传的文件
hdfs dfs -ls /user/huohuo/input

在这里插入图片描述
运行WordCount程序,这个jar根据你的版本确定,比如我的是:
/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar
运行以下命令查找你的版本:

ls $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar
# 运行WordCount MapReduce作业
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar \
wordcount /user/huohuo/input /user/huohuo/output

查看运行结果

# 查看输出目录
hdfs dfs -ls /user/huohuo/output

# 查看结果文件
hdfs dfs -cat /user/huohuo/output/part-r-00000

在这里插入图片描述
end

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐