Hadoop生态圈:HDFS + MapReduce实战
·
Hadoop生态圈核心组件
Hadoop生态圈以HDFS和MapReduce为核心,配合YARN、HBase、Hive等工具构成完整的大数据处理体系。
HDFS(分布式文件系统)
HDFS是Hadoop的存储基石,设计用于存储超大规模数据并提供高容错性。
- 架构:采用主从结构,包含NameNode(管理元数据)和DataNode(存储实际数据块)。
- 关键命令:
hdfs dfs -ls / # 查看根目录 hdfs dfs -put localfile /hdfspath # 上传文件 - 配置参数:
dfs.replication(副本数,默认3)、dfs.blocksize(块大小,默认128MB)。
MapReduce(分布式计算框架)
MapReduce通过分治思想处理海量数据,分为Map和Reduce两个阶段。
- 编程模型:
public class WordCount extends Configured implements Tool { public static class TokenizerMapper extends Mapper<...> { public void map(...) { // 分割输入文本为<word,1>键值对 } } public static class IntSumReducer extends Reducer<...> { public void reduce(...) { // 聚合相同单词的计数 } } // 驱动代码 } - 优化技巧:合并小文件(使用
CombineFileInputFormat)、调整Reduce任务数(mapreduce.job.reduces)。
实战案例:词频统计
-
准备数据
将文本文件上传至HDFS:hdfs dfs -mkdir /input hdfs dfs -put sample.txt /inputinfo.xiqianle.com8868|
portal.xiqianle.com8868|
news.sdyongtaigg.com8868|
app.sdyongtaigg.com8868|
shop.sdyongtaigg.com8868|
vip.sdyongtaigg.com8868|
live.sdyongtaigg.com8868|
tv.sdyongtaigg.com8868|
game.sdyongtaigg.com8868|
blog.sdyongtaigg.com8868| -
提交MapReduce作业
打包JAR文件并运行:hadoop jar wordcount.jar WordCount /input /output -
结果验证
查看输出目录中的结果:hdfs dfs -cat /output/part-r-00000
常见问题排查
- DataNode未启动:检查日志
/var/log/hadoop/hdfs.log,确认端口是否冲突。 - Reduce阶段卡住:调整
mapreduce.reduce.memory.mb参数增加内存分配。
扩展工具
- YARN:资源管理器,替代早期MapReduce的JobTracker。
- Hive:SQL化查询工具,底层转换为MapReduce作业。
通过结合HDFS的存储能力和MapReduce的计算能力,可高效处理TB/PB级数据。
更多推荐
所有评论(0)