Hadoop && 进入Linux系统,使用1个节点完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后,运行Hadoop自带的WordCount测试样例
创建专用账户
在安装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的授权列表
命令原理:
- 将公钥(
id_rsa.pub)复制到目标节点 - 将公钥添加到目标节点的
~/.ssh/authorized_keys文件 - 设置正确的文件权限
测试无密码登录
# 测试本机登录
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
更多推荐


所有评论(0)