Ubuntu安装hadoop
本文主要介绍在虚拟机 Ubuntu24.04 上安装 Hadoop,具体操作如下所示。
共享文加夹设置请参考网址:https://editor.csdn.net/md/?articleId=153210246
第1章 创建 hadoop 用户
在安装 Hadoop 之前首先需要创建一个用户 hadoop,避免后续 Hadoop 出现一些不可使用的问题。具体操作如下所示。
①创建hadoop用户并为其设置密码与添加管理员权限
# 创建用户。
sudo useradd -m hadoop -s /bin/bash
# 添加管理员权限。
sudo adduser hadoop sudo
# 设置密码。
sudo passwd hadoop
②在 MobaXterm 上改用hadoop用户来直接登录虚拟机
#切换用户
su - hadoop
③hadoop 用户(可访问共享文件夹),设置后需要Exit或重新登录hadoop用户。
sudo usermod -aG vboxsf $USER
④最后检查是否配置成功。
ls -l /media/sf_vmshare/
第2章 安装Hadoop
当 hadoop 用户创建完成之后,重新以 hadoop 用户进行 SSH 登录,然后进行安装大数据组件 Hadoop。具体操作如下所示。
- Hadoop 下载地址:https://hadoop.apache.org/
- Hadoop 学习文档:https://hadoop.apache.org/docs/stable/
①安装hadoop,解压缩。目标程序安装路径是: /opt/app, 数据文件路径是: /opt/data
# 创建文件夹。
cd /opt
sudo mkdir app
sudo mkdir data
sudo chown -R hadoop:hadoop app
sudo chown -R hadoop:hadoop data# 解压缩。
cd /opt/app
tar zxvf /media/sf_vmshare/hadoop-3.4.0.tar.gz
②添加环境变量。在 ~/.profile 的尾部,添加:
sudo vi ~/.profile
export HADOOP_HOME=/opt/app/hadoop-3.4.0
退出 SSH 连接并重新登录
③修改 hadoop 的配置文件,在里面找到 JAVA_HOME 的那一行,在下面添加 OpenJDK-11 的路径。修改如下:
cd $HADOOP_HOME/etc/hadoop
vi hadoop-env.sh
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
④试运行,它会在屏幕上打印出帮助信息
cd $HADOOP_HOME
bin/Hadoop
2.1 单节点独立运行
⑤默认情况下,hadoop 是以非分布式模式,以单个的 Java 进程在单节点上独立(Standalone)运行。这对于调试很重要(分布式或多节点情况下都不便于调试)。
以下示例将复制一些 xml 文件用作输入,查找并显示正则表达式的每个匹配项。输出将写入到 output 文件夹:
cd $HADOOP_HOME
# 创建文件夹。
mkdir input# 复制一些 xml 文件到 input 文件夹中。
cp etc/hadoop/*.xml input# 运行 hadoop 示例。
bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.0.jar grep input output 'dfs[a-z.]+'# 查看输出。
cat output/*
完成后,清理干净:
cd $HADOOP_HOME
rm -rf input
rm -rf output
2.2伪分布式
⑥伪分布式也是在单节点上运行,和前述单节点的区别是,Hadoop 的服务进程(daemon)是分别运行在各自的 JVM 进程当中。
配置:
修改配置文件 etc/hadoop/core-site.xml,添加配置属性如下:
<configuration><property><name>hadoop.tmp.dir</name><value>file:/opt/data/hadoop/tmp</value><description>A base for other temporary directories.</description></property><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
修改配置文件 etc/hadoop/hdfs-site.xml,添加下面的配置属性:
<configuration><property><name>dfs.replication</name><value>1</value></property><property><name>dfs.namenode.name.dir</name><value>file:/opt/data/hadoop/tmp/dfs/name</value></property><property><name>dfs.datanode.data.dir</name><value>file:/opt/data/hadoop/tmp/dfs/data</value></property></configuration>
⑦设置免密的 SSH:
先试试用 SSH 登录到自己(localhost)。
ssh localhost
若登录过程中需要用户输入登录密码,则需要进行下面的免密登录设置。否则,说明免密登录已经设置成功,可以忽略下面第2步。
设置免密登录:
# 生成 RSA 的密钥对。
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa# 将公钥复制到已授权文件中。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys# 修改已授权文件的属性(仅自己可读写)。
chmod 0600 ~/.ssh/authorized_keys
完成后,再次尝试第1步,它应该能够免密码登录了。
2.3 执行本地 MapReduce 工作
①下面执行一个本地的 MapReduce 工作。格式化文件系统。注意,这个格式化文件系统的操作只需要执行一次。
cd $HADOOP_HOME
bin/hdfs namenode -format
注意到其中提示“has been successfully formated” 表示格式化成功。
②启动名称节点(NameNode)和数据节点(DataNode)的服务进程:
sbin/start-dfs.sh
jps
注,启动日志会被写入到 $HADOOP_HOME/logs 文件夹里。如果启动发生错误,可以到日志里面查看具体原因。 启动后还可以检查一下 Java 进程,确认都已正常启动。屏幕输出如下例:我们可以看到,Hadoop 启动成功后存在3个 Java 进程:NameNode, DataNode 和 SecondaryNameNode。
③通过浏览器,访问名称节点的 Web 界面。 名称节点(NameNode)在虚拟机上开启了 Web 服务: http://localhost:19870
启动。屏幕输出如下例:我们可以看到,Hadoop 启动成功后存在3个 Java 进程:NameNode, DataNode 和 SecondaryNameNode。
[外链图片转存中…(img-Ck4cxu20-1760358282682)]
③通过浏览器,访问名称节点的 Web 界面。 名称节点(NameNode)在虚拟机上开启了 Web 服务: http://localhost:19870