保姆级教程教你如何安装Hadoop,实现Hadoop单机(非分布式)配置

下载Ubutu镜像

前往阿里镜像站https://mirrors.aliyun.com/oldubuntu-releases/releases/16.04.0/?spm=a2c6h.25603864.0.0.6be57ff3u2zMGR
选择下载ubuntu-16.04-desktop-amd64.iso
下载时间较久,请耐心等待

创建实验用虚拟机

选择创建新的虚拟机
在这里插入图片描述选择典型并下一步

在这里插入图片描述

选择安装程序光盘映像文件点击浏览,选中此前下载的光盘镜像文件

在这里插入图片描述

如下图设置
在这里插入图片描述
在这里插入图片描述

设置最大虚拟机占用内存100GB(并不会立即使用100GB),并选中将虚拟磁盘存储为单个文件
在这里插入图片描述

点击完成
在这里插入图片描述
等待虚拟机安装完成
安装完成后,如下图所示
在这里插入图片描述
选择xmudblab并输入123456,回车即登录完成
按下CTRL+ALT+T键,即可打开终端命令行
点击窗口左上角的圆X按钮,即可关闭终端
在这里插入图片描述选择左边栏中的 Floppy Disk 即可进行系统文件管理(类似打开Windows我的电脑)
打开后,选中Floppy Disk右键,再点击Quit,即可关闭
在这里插入图片描述
至此,完成虚拟机的安装

配置虚拟机环境

创建hadoop用户

sudo useradd -m hadoop -s /bin/bash
sudo passwd hadoop		# 给Hadoop用户设置密码
sudo adduser hadoop sudo	# 给Hadoop用户提权,避免不必要的权限问题

配置网络

点击VM上边的编辑,选择虚拟网络编辑器,点击右下角的更改设置,对NAT模式进行修改
在这里插入图片描述选择名称为VMnet8的NAT模式,取消使用本地DHCP服务器,并如下设置子网IP及子网掩码
先点击应用,再点击确定,保存设置
在这里插入图片描述在Ubutu虚拟机中,点击喇叭左边的按钮,选择编辑网络连接

在这里插入图片描述
点击因特网,选中第一个网络连接,并点击编辑在这里插入图片描述
点击IPV4,并点击下方的Method,选中Manual选项
然后点击Add添加IPV4地址,子网地址为172.25.254.10子网掩码为255.255.255.0网关为172.25.254.2

IPV4地址的设置与VM的虚拟网络编辑器息息相关

然后设置DNS:114.114.114.114
最后点击Save,进行保存退出,再点击Close,然后重启Ubutu虚拟机在这里插入图片描述

更新apt

点击右边的设置界面,选择软件包&更新
在这里插入图片描述
点击Download ...右边的倒三角,在弹出的窗口中,往上滑,找到China并点击,选择...aliyun...,并点击Choose Server
在这里插入图片描述
点击Reload重新加载,等待加载完成,若加载失败,选择其他中国服务器,再进行加载在这里插入图片描述

# 加载完成后,打开终端,并输入命令,进行更新
sudo apt-get update	# 成功更新,如下图所示
sudo apt-get install vim -y # 安装新的编辑器

在这里插入图片描述

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

sudo apt-get install openssh-server	# Ubuntu 默认已安装了 SSH client,此外还需要安装 SSH server
ssh localhost	# 尝试远程连接本机
exit	# 退出刚才的 ssh localhost
cd ~/.ssh/	# 若没有该目录,请先执行一次ssh localhost
ssh-keygen -t rsa	# 会有提示,都按回车就可以
cat ./id_rsa.pub >> ./authorized_keys	# 加入授权
# 这样,本机就可以被远程连接(使用xshell来代替VM)
# 另一方面,实现了Hadoop集群、单节点模式 SSH 的免密登陆
# 从此处开始,以后操作均在xshell中进行

安装Java环境

# 安装 Java 环境(Java 21.0.04)
sudo apt-get install wget -y	# 安装下载工具
wget https://download.oracle.com/java/21/latest/jdk-21_linux-x64_bin.tar.gz	
# 若虚拟机下载失败,请使用Windows前往官网进行下载,下载完成后,上传至虚拟机
sudo mkdir /usr/lib/jvm -p	# 创建放置Java的目录
sudo tar -zxvf ./jdk-21_linux-x64_bin.tar.gz -C /usr/lib/jvm	# 解压Java压缩包

vim ~/.bashrc	# 编辑环境变量
...	# 在最下一行输入
export JAVA_HOME=/usr/lib/jvm/jdk-21.0.4
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH

source ~/.bashrc	# 刷新环境变量
java -version	# 安装成功,命令显示如下

在这里插入图片描述

安装 Hadoop3.3.5

wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz	# 同理,下载Hadoop
sudo tar -zxvf ./hadoop-3.3.5.tar.gz -C /usr/local

cd /usr/local/
sudo mv ./hadoop-3.3.5/ ./hadoop
sudo chown -R hadoop:hadoop hadoop/	# 修改权限

在这里插入图片描述

/usr/local/hadoop/bin/hadoop version	# 安装成功,显示如下

在这里插入图片描述

Hadoop单机配置(非分布式)

Hadoop 默认模式为非分布式模式(本地模式),无需进行其他配置即可运行
非分布式即单 Java 进程,方便进行调试

运行例子:将 input 文件夹中的所有文件作为输入,筛选当中符合正则表达式 dfs[a-z.]+ 的单词并统计出现的次数,最后输出结果到 output 文件夹中

cd /usr/local/hadoop
mkdir ./input
cp ./etc/hadoop/*.xml ./input   # 将配置文件作为输入文件
./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep ./input ./output 'dfs[a-z.]+'
cat ./output/*          # 查看运行结果

在这里插入图片描述Hadoop 默认不会覆盖结果文件,因此再次运行上面实例会提示出错,需要先将 ./output 删除

rm -r ./output

部署Hadoop伪分布式

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

Hadoop 的配置文件位于 /usr/local/hadoop/etc/hadoop/
Hadoop的配置文件是 xml 格式,每个配置以声明 property 的 name 和 value 的方式来实现

# 以下是伪分布式需要修改的配置文件
vim ./etc/hadoop/core-site.xml
...
<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>

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

vim ./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>

在这里插入图片描述

vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
# 在第54行基础上,去掉注释,并添加JAVA的具体路径
export JAVA_HOME=/usr/lib/jvm/jdk-21.0.4

在这里插入图片描述配置完成后,执行 NameNode 的格式化

cd /usr/local/hadoop
./bin/hdfs namenode -format	# 启动完成,如下图所示

在这里插入图片描述开启 NameNode 和 DataNode 守护进程

cd /usr/local/hadoop
./sbin/start-dfs.sh  # start-dfs.sh是个完整的可执行文件,中间没有空格
# 启动完成,如下图所示

在这里插入图片描述

# 可通过 jps 命令来判断是否启动成功
hadoop@ubuntu:/usr/local/hadoop$ jps
6355 SecondaryNameNode
6566 Jps
6007 NameNode
6138 DataNode
# SecondaryNameNode NameNode DataNode 均出现,表示启动成功

启动成功后,可以访问Web界面http://localhost:9870查看NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件,此方法需要Windows主机有虚拟机的主机解析?

运行Hadoop伪分布式

./bin/hdfs dfs -mkdir -p /user/hadoop	# 在 HDFS 中创建用户目录
./bin/hdfs dfs -mkdir input
./bin/hdfs dfs -put ./etc/hadoop/*.xml input
./bin/hdfs dfs -ls input	# 查看文件列表

在这里插入图片描述
伪分布式运行 MapReduce 作业的方式跟单机模式相同,区别在于伪分布式读取的是HDFS中的文件(不是Ubutu虚拟机中的文件)

./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.5.jar grep input output 'dfs[a-z.]+'

./bin/hdfs dfs -cat output/* # 查看的是位于 HDFS 中的输出结果

在这里插入图片描述Hadoop 运行程序时,输出目录不能存在,否则会提示错误
因此若要再次执行,需要执行如下命令删除 output 文件夹

./bin/hdfs dfs -rm -r output    # 删除 output 文件夹

若要关闭 Hadoop,则运行

./sbin/stop-dfs.sh

下次启动 hadoop 时,无需进行 NameNode 的初始化,只需要运行 ./sbin/start-dfs.sh 就可以

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值