引言
Hadoop 是一个开源的分布式计算框架,广泛用于大数据处理和分析。本文将详细介绍如何在单台机器上安装和配置 Hadoop 伪分布式模式。伪分布式模式允许我们在一台机器上模拟多节点集群的行为,非常适合学习和测试 Hadoop。
环境准备
操作系统
- CentOS 7(或其他 Linux 发行版)
工具
- SSH 服务器
- Java Development Kit (JDK) 1.8
- Hadoop 3.1.3
安装步骤
1. 安装 JDK
上传 JDK 压缩包
将 jdk-8u221-linux-x64.tar.gz
上传到 /usr/local
目录:
scp jdk-8u221-linux-x64.tar.gz user@your-hostname:/usr/local/
user@your-hostname 是主机名
解压 JDK
登录到目标机器并解压 JDK:
sh user@your-hostname
cd /usr/local
sudo tar -zxvf jdk-8u221-linux-x64.tar.gz
设置环境变量
编辑 /etc/profile
文件,添加 JDK 的路径:(也可以用vi或者vim编辑器)
sudo nano /etc/profile
添加以下内容
export JAVA_HOME=/usr/local/jdk1.8.0_221
export PATH=$JAVA_HOME/bin:$PATH
:使环境变量生效:
source /etc/profile
验证安装
验证 Java 是否正确安装:
2. 安装 Hadoop
上传 Hadoop 压缩包
将 hadoop-3.1.3.tar.gz
上传到 /usr/local
目录:
scp hadoop-3.1.3.tar.gz user@your-hostname:/usr/local/
解压 Hadoop
登录到目标机器并解压 Hadoop:
ssh user@your-hostname
cd /usr/local
sudo tar -zxvf hadoop-3.1.3.tar.gz
设置环境变量
编辑 /etc/profile
文件,添加 Hadoop 的路径:
sudo nano /etc/profile
添加以下内容:
xport HADOOP_HOME=/usr/local/hadoop-3.1.3
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
使环境变量生效:
3. 配置 Hadoop
编辑 core-site.xml
编辑 core-site.xml
文件,设置 HDFS 的默认地址和临时目录:
sudo nano /usr/local/hadoop-3.1.3/etc/hadoop/core-site.xml
添加以下内容:
创建临时目录
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/app/hadoop/tmp</value>
</property>
</configuration>
创建临时目录
确保临时目录存在:
sudo mkdir -p /app/hadoop/tmp
sudo chown -R user:hadoop /app/hadoop/tmp
编辑 hdfs-site.xml
编辑 hdfs-site.xml
文件,设置副本数量和数据存储目录:
sudo nano /usr/local/hadoop-3.1.3/etc/hadoop/hdfs-site.xml
添加以下内容:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///app/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///app/hadoop/hdfs/datanode</value>
</property>
</configuration>
创建 HDFS 目录
确保 HDFS 目录存在:
udo mkdir -p /app/hadoop/hdfs/namenode
sudo mkdir -p /app/hadoop/hdfs/datanode
sudo chown -R user:hadoop /app/hadoop/hdfs
编辑 yarn-site.xml
编辑 yarn-site.xml
文件,设置 ResourceManager 的地址和启用 MapReduce Shuffle 服务:
sudo nano /usr/local/hadoop-3.1.3/etc/hadoop/yarn-site.xml
添加以下内容:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.local-dirs</name>
<value>/app/hadoop/yarn/local</value>
</property>
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>/app/hadoop/yarn/log</value>
</property>
<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>
建 YARN 目录
确保 YARN 目录存在:
sudo mkdir -p /app/hadoop/yarn/local
sudo mkdir -p /app/hadoop/yarn/log
sudo chown -R user:hadoop /app/hadoop/yarn
编辑 mapred-site.xml
编辑 mapred-site.xml
文件,设置 MapReduce 框架运行在 YARN 上:
sudo cp /usr/local/hadoop-3.1.3/etc/hadoop/mapred-site.xml.template /usr/local/hadoop-3.1.3/etc/hadoop/mapred-site.xml
sudo nano /usr/local/hadoop-3.1.3/etc/hadoop/mapred-site.xml
添加以下内容:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
4. 配置 SSH 免密登录
为了方便管理和操作,我们需要配置 SSH 免密登录。
生成 SSH 密钥对
生成 SSH 密钥对:
ssh-keygen -t rsa -P ''
将公钥添加到 authorized_keys
文件中:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
测试免密登录
测试 SSH 免密登录:
ssh localhost
5. 启动 Hadoop 集群
格式化 NameNode
首次启动 Hadoop 集群前,需要格式化 NameNode:
hdfs namenode -format
启动 HDFS 和 YARN
启动 HDFS 和 YARN 服务:
start-dfs.sh
start-yarn.sh
6. 验证安装
查看 HDFS 状态
查看 HDFS 状态:
hdfs dfsadmin -report
查看 YARN 节点
查看 YARN 节点状态:
yarn node -list
运行 MapReduce 示例
运行一个简单的 MapReduce 示例程序:
hdfs dfs -mkdir /input
hdfs dfs -put /usr/local/hadoop-3.1.3/etc/hadoop/* /input/
hadoop jar /usr/local/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar wordcount /input /output
hdfs dfs -cat /output/part-r-00000
结论
通过以上步骤,我们成功地在单台机器上安装并配置了 Hadoop 伪分布式模式。这种模式非常适合学习和测试 Hadoop 的基本功能。希望本文对您有所帮助!