我们可以在官方网站Apache Hadoop上查看最新的信息,当我们需要安装Hadoop时我们可以在Hadoop Download上进行下载。
我本次安装的是Hadoop 3.3.x,它需要Linux中有安装JDK,JDK的版本最好是8。关于详细的Hadoop和Java版本兼容性请看Hadoop Java Versions。
单机版本
单机安装是最简单的Hadoop环境搭建方式,但是它不具备Hadoop分布式设计思想,不能通过多服务器水平扩展实现计算能力的提升,也不能容忍单台机器故障。所以适合学习和开发用途。
单机模式的特点:运行在一台主机上,按默认配置以非分布式模式运行的一个独立Java进程。它直接使用本地文件系统,而不是分布式文件系统,不需要加载任何 Hadoop 的守护进程,一般用于本MapReduce 程序的调试。默认情况下,Hadoop处于该模式,用于开发和调试。
我们可以参考Local (Standalone) Mode进行单机安装。安装的环境为亚马逊云宁夏区域的一台X64 EC2上,运行的Linux为Amazon Linux 2023(属于RHEL系,兼容CentOS、RHEL、Fedora)。
安装JDK8
首先下载JDK8
ruby
# 方便起见使用Amazon corretto JDK8 X64版本
wget https://corretto.aws/downloads/latest/amazon-corretto-8-x64-linux-jdk.tar.gz
然后解压并配置JAVA_HOME
环境变量
bash
# 解压
tar -zxvf amazon-corretto-8-x64-linux-jdk.tar.gz
# 重命名解压后得到的jdk文件夹,方便后续管理,我命名为jdk8
mv amazon-corretto-8.402.06.1-linux-x64/ jdk8
配置JAVA_HOME
环境变量和PATH
bash
# 查看当前目录的路径
pwd
# 查看当前目录下的文件列表,找到jdk8
ls
# 编辑当前用户的环境变量
vim ~/.bash_profile
当前用户的环境变量中,我们可以直接指定JAVA_HOME
环境变量和PATH
bash
export JAVA_HOME=/home/ec2-user/jdk8
export PATH=$PATH:$JAVA_HOME/bin
最后我们应用当前环境变量设置,并检测JDK8是否安装正确
安装Hadoop
本次我安装的是Hadoop 3.3.6,我们可以直接在hadoop-3.3.6.tar.gz Download找到下载连接
下载
bash
# 下载
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
# 解压
tar -zxvf hadoop-3.3.6.tar.gz
由于网络原因,一般在国内下载会非常慢,如你发现类似问题,建议直接用迅雷等工具下载好了再传到服务器上
然后解压并配置HADOOP_HOME
环境变量
bash
# 解压
tar -zxvf hadoop-3.3.6.tar.gz
# 编辑当前用户的环境变量
vim ~/.bash_profile
当前用户的环境变量中,我们可以直接指定HADOOP_HOME
环境变量和PATH
bash
export HADOOP_HOME=/home/ec2-user/hadoop-3.3.6
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
最后我们应用当前环境变量设置,并检测HADOOP是否安装正确
bash
# 检查JAVA_HOME
echo $JAVA_HOME
# 检查java版本
java -version
# 检查hadoop版本
hadoop version
测试
hadoop自带一些简单的样例,我们可以利用这些样例来进行功能测试
测试1:wordcount 单词次数统计
可以统计一个文件里面单词出现的次数
我们首先可以创建一个文件
bash
# 进入用户home目录
cd ~
# 创建一个文件
vim wordcount_test.txt
在wordcount_test.txt中填入下面的文字
Amazon EMR Easily run and scale Apache Spark, Hive, Presto, and other big data workloads
然后进入到hadoop自带的mapreduce文件样例文件夹中,执行测试
bash
#进入到hadoop自带的mapreduce文件样例文件夹中
cd hadoop-3.3.6/share/hadoop/mapreduce/
ls
# 执行测试,使用hadoop-mapreduce-examples-3.3.6.jar中的wordcount方法来统计~/wordcount_test.txt中单词出现的个数并将结果输出到~/output
hadoop jar hadoop-mapreduce-examples-3.3.6.jar wordcount ~/wordcount_test.txt ~/output
查看结果,输出的统计结果在~/output文件夹下
bash
cat ~/output/part-r-00000
我们可以看到单词被正确的统计了
测试2:圆周率计算
Hadoop自带圆周率估算函数,我们可以用来进行功能测试,比如下面的命令:第一个100是运行100次map任务,第二个200是每个map任务投掷次数,所以总投掷次数是100×200,你可以调整这2个值。值越大运算耗时越长但是估算出的圆周率越精确
lua
hadoop jar hadoop-mapreduce-examples-3.3.6.jar pi 100 200