Hadoop快速搭建指南
前言
作为一个处理大数据的工具,Hadoop已经成为许多企业进行数据处理和分析的首选。但如果你第一次接触它,设置和配置可能看起来有点棘手。因此,我将为你提供一个详细的指南,让你可以快速搭建并运行Hadoop集群。
环境
- 操作系统:Ubuntu 22.04 LTS
- Hadoop版本:3.3.6
- Java版本:OpenJDK 11
准备工作
在开始之前,你需要确保系统上已经安装了Java 11。你可以使用以下命令进行安装:
sudo apt update
sudo apt install -y openjdk-11-jdk
安装完成后,确认Java版本:
java -version
输出应该类似于:
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment (build 11.0.11+9-Ubuntu-0ubuntu2.20.04)
OpenJDK 64-Bit Server VM (build 11.0.11+9-Ubuntu-0ubuntu2.20.04, mixed mode)
下载并安装Hadoop
接下来,让我们下载并安装Hadoop。
步骤1:下载Hadoop
你可以直接从Apache Hadoop官网下载最新版:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
步骤2:解压缩并移动Hadoop
解压缩下载的文件并将其移动到/usr/local
目录:
tar -xzvf hadoop-3.3.6.tar.gz
sudo mv hadoop-3.3.6 /usr/local/hadoop
步骤3:配置环境变量
为了方便使用Hadoop命令行工具,编辑~/.bashrc
并添加以下行:
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
然后运行以下命令使更改生效:
source ~/.bashrc
步骤4:配置Hadoop
为了让Hadoop正常工作,需要进行一些配置。
编辑hadoop-env.sh
在/usr/local/hadoop/etc/hadoop
目录中找到hadoop-env.sh
文件,并确保以下行指向正确的Java安装路径:
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
配置core-site.xml
创建和编辑/usr/local/hadoop/etc/hadoop/core-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
配置hdfs-site.xml
编辑/usr/local/hadoop/etc/hadoop/hdfs-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
配置mapred-site.xml
复制mapred-site.xml.template
为mapred-site.xml
并编辑:
cp /usr/local/hadoop/etc/hadoop/mapred-site.xml.template /usr/local/hadoop/etc/hadoop/mapred-site.xml
添加以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
配置yarn-site.xml
编辑/usr/local/hadoop/etc/hadoop/yarn-site.xml
文件,添加以下内容:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
格式化NameNode
在启动Hadoop之前,需要格式化Hadoop文件系统。运行以下命令:
hdfs namenode -format
启动Hadoop
Hadoop配置完成后,可以启动相关服务。
启动HDFS
start-dfs.sh
启动YARN
start-yarn.sh
验证Hadoop是否运行
可以通过访问以下URL来验证Hadoop是否成功运行:
- HDFS NameNode:
http://localhost:9870/
- YARN ResourceManager:
http://localhost:8088/
如果看到相关的仪表盘,则说明Hadoop成功启动。
简单的WordCount示例
为了验证Hadoop集群是否可以正常工作,可以使用一个简单的WordCount示例。
创建输入文件夹并添加示例数据
hdfs dfs -mkdir -p /user/hadoop/input
echo "Hello Hadoop Hello World" > input.txt
hdfs dfs -put input.txt /user/hadoop/input
运行WordCount示例
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /user/hadoop/input /user/hadoop/output
查看输出结果
hdfs dfs -cat /user/hadoop/output/part-r-00000
输出结果应类似于:
Hello 2
Hadoop 1
World 1
常见问题及注意事项
- 无法连接到HDFS NameNode:确保
core-site.xml
中fs.defaultFS
的地址正确。 - Java版本兼容问题:确保
JAVA_HOME
路径和hadoop-env.sh
中的Java路径一致。 - 端口冲突问题:如果出现端口被占用的情况,请检查是否有其他服务占用了Hadoop的默认端口。