Hadoop实战:从零搭建大数据环境到运行第一个MapReduce程序(Linux版)
Hadoop实战:从零搭建大数据环境到运行第一个MapReduce程序(Linux版)
1. 环境准备与基础配置
在开始Hadoop之旅前,我们需要确保Linux环境满足基本要求。推荐使用Ubuntu 20.04 LTS或CentOS 7作为操作系统,它们对Hadoop有良好的兼容性。以下是需要准备的组件清单:
- Java Development Kit (JDK) 8:Hadoop的核心依赖
- SSH无密码登录:集群节点间通信的基础
- Hadoop 3.3.4:当前稳定版本
首先安装JDK并配置环境变量:
sudo apt update
sudo apt install openjdk-8-jdk -y
echo 'export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64' >> ~/.bashrc
source ~/.bashrc
验证Java安装是否成功:
java -version
# 应显示类似:openjdk version "1.8.0_312"
接下来配置SSH免密登录:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
# 测试本地SSH连接
ssh localhost
2. Hadoop集群安装与配置
下载并解压Hadoop二进制包:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
tar -xzvf hadoop-3.3.4.tar.gz -C /opt/
sudo mv /opt/hadoop-3.3.4 /opt/hadoop
配置Hadoop环境变量:
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc
echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc
source ~/.bashrc
Hadoop的核心配置文件位于$HADOOP_HOME/etc/hadoop/目录,需要修改以下文件:
core-site.xml - 定义HDFS地址和临时目录:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop/tmp</value>
</property>
</configuration>
hdfs-site.xml - 配置HDFS参数:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/datanode</value>
</property>
</configuration>
mapred-site.xml - 配置MapReduce框架:
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
yarn-site.xml - 配置YARN资源管理器:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.env-whitelist</name>
<value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
</property>
</configuration>
3. 启动Hadoop集群
在首次启动前,需要格式化HDFS:
hdfs namenode -format
启动HDFS和YARN服务:
start-dfs.sh
start-yarn.sh
验证服务是否正常运行:
jps
# 应显示以下进程:
# NameNode
# DataNode
# ResourceManager
# NodeManager
# SecondaryNameNode
可以通过Web界面访问集群状态:
- HDFS: http://localhost:9870
- YARN: http://localhost:8088
4. 运行第一个MapReduce程序
我们将实现经典的词频统计(WordCount)程序。首先在HDFS上创建输入目录并上传测试文件:
hdfs dfs -mkdir -p /user/hadoop/input
echo "Hello World Hello Hadoop" > test.txt
hdfs dfs -put test.txt /user/hadoop/input
Hadoop自带WordCount示例程序,可以直接运行:
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /user/hadoop/input /user/hadoop/output
查看输出结果:
hdfs dfs -cat /user/hadoop/output/part-r-00000
# 应显示:
# Hadoop 1
# Hello 2
# World 1
5. 集群管理与问题排查
5.1 常用管理命令
HDFS文件操作:
# 列出目录内容
hdfs dfs -ls /
# 创建目录
hdfs dfs -mkdir /data
# 从本地复制文件到HDFS
hdfs dfs -put localfile /data
# 从HDFS复制文件到本地
hdfs dfs -get /data/remotefile .
YARN应用管理:
# 列出运行中的应用
yarn application -list
# 终止应用
yarn application -kill application_id
5.2 常见问题解决
端口冲突:如果遇到端口被占用错误,检查netstat -tulnp并修改相应配置文件中的端口号。
磁盘空间不足:Hadoop需要足够的磁盘空间存储数据块和日志,定期清理hadoop.tmp.dir指定的目录。
内存不足:可以在yarn-site.xml中调整:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>2048</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>2048</value>
</property>
6. 性能优化与扩展
6.1 配置参数调优
HDFS块大小:根据数据特点调整dfs.blocksize(默认128MB),大文件处理可增大至256MB。
MapReduce内存设置:
<!-- mapred-site.xml -->
<property>
<name>mapreduce.map.memory.mb</name>
<value>1024</value>
</property>
<property>
<name>mapreduce.reduce.memory.mb</name>
<value>2048</value>
</property>
6.2 多节点集群配置
要将单节点扩展为多节点集群,需要:
- 在所有节点上安装相同版本的Hadoop和JDK
- 修改
etc/hadoop/workers文件,添加所有DataNode主机名 - 在NameNode上生成SSH密钥并分发到各节点
- 在所有节点上同步配置文件
- 在NameNode上格式化HDFS并启动集群
6.3 监控与日志
Hadoop提供详细的日志信息,位置在:
- NameNode日志:
$HADOOP_HOME/logs/hadoop-*-namenode-*.log - DataNode日志:
$HADOOP_HOME/logs/hadoop-*-datanode-*.log - YARN日志:
$HADOOP_HOME/logs/yarn-*-resourcemanager-*.log
对于生产环境,建议集成Prometheus和Grafana进行可视化监控。
更多推荐
所有评论(0)