Java技术栈 —— Hadoop入门(一)
一、Hadoop第一印象
上面是Wiki的定义,Hadoop也称为大数据存储与计算的基础架构。
一、参考文章或视频链接 |
---|
[1] Apache Hadoop - Apache website |
[2] Apache Hadoop - Wiki |
二、安装Hadoop
在执行文章[2]所说的./sbin/start-dfs.sh
时,我遇到了一个报错
programmer@pc-ubuntu:~/DevelopEnvironment/hadoop-3.3.6$ ./sbin/start-dfs.sh
Starting namenodes on [localhost]
localhost: ssh: connect to host localhost port 22: Connection refused
Starting datanodes
localhost: ssh: connect to host localhost port 22: Connection refused
Starting secondary namenodes [pc-ubuntu]
pc-ubuntu: ssh: connect to host pc-ubuntu port 22: Connection refused
根据参考文章[3],需要提前准备环境与配置端口
sudo apt -y install openssh-server openssh-client
# {your_hadoop_home}/etc/hadoop/hadoop-env.sh file
export HADOOP_SSH_OPTS="-p 22"
pdsh
是Parallel Distributed SHell
并行分布式 Shell的缩写,是一种并行分布式运维工具。它可以并行执行对远程目标主机的操作,在有批量执行命令或分发任务的运维需求时,使用这个命令可达到事半功倍的效果。同时,PDSH还支持交互模式,当要执行的命令不确定时,可直接进入PDSH命令行,非常方便。
PDSH通常用于大批量服务器的配置、部署、文件复制等运维操作,在使用时,仍需要配置本地主机和远程主机间的单向SSH信任。另外,PDSH还附带了pdcp命令,此命令可以将本地文件批量复制到远程的多台主机上,这在大规模的文件分发环境下是非常有用的。但我在安装pdsh后反而出现了访问拒绝,请看参考文章[4]和[5]。
配置免密登录时的命令解析:
最后按照参考文章[2]的描述,单机版Hadoop安装完成。

Hadoop 3.0.0版本后,访问地址从http://localhost:50070 变更为http://localhost:9870
。[6] 看到如下访问效果后,你就可以愉快的开始与Hadoop玩耍了。
二、参考文章或视频链接 |
---|
[1] Apache Hadoop - Apache website |
重点参考:[2] 《史上最详细的hadoop安装教程(含坑点)》- CSDN |
[3] Hadoop: connect to host localhost port 22: Connection refused when running start-dfs.sh - Stackoverflow |
这篇说卸载pdsh[4] 安装pdsh后反而pdsh Permission denied的问题 - Solution1 |
这篇说修改pdsh配置[5] 安装pdsh后反而pdsh Permission denied的问题 - Solution2 |
[6] http localhost 50070 not working in HADOOP |
三、Hadoop解析
3.1 Hadoop生态介绍
看到hadoop官网的左侧导航栏[1],可以证明,三大组件是HDFS、MapReduce、YARN,曾经被我弄混的HBase等词汇,则是Hadoop生态下的其中一个模块,而非Hadoop本身的核心组件,在更详细的介绍Hadoop之前,这些边界必须厘清,不然总有弄糊涂的一天。
Apache Hadoop的前身是Google的 Google File System (GFS),GFS也是一个分布式的文件系统,以下是一些Hadoop的特点

图1 - Hadoop 生态框架 —— 参考文章[2] PS:此图没画出模块之间的关系

图2 - Hadoop 生态框架 —— 参考文章[6]
3.1 参考文章或视频链接 |
---|
[1] Hadoop Documentation- Apache |
重点阅读:[2] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya |
[3] 大数据学习(二)Hadoop - 知乎 |
[4] Hadoop Ecosystem |
[5] Hadoop Ecosystem Components and Its Architecture |
[6] Hadoop Ecosystem - A Comprehensive Guide for 2024 |
3.1.1 MapReduce - 核心组件
MapReduce由Google公司提出,论文名称是 MapReduce: Simplified Data Processing on Large Clusters,作者是Jeffrey Dean and Sanjay Ghemawat,第一个作者Jeffrey Dean牛到什么程度?他是Tensorflow项目的负责人😮,太牛了,牛的冒烟了,已经翱翔了,这谁跟的了啊,这个人假以时日,必成大器,但是我个人猜测他能成为Tensorflow项目的负责人,刨去纯技术的因素,更多的是因为Jeffrey Dean在Google是元老,有着丰富的人脉关系与项目管理经验,从其个人履历来看,他过去的项目经历并没有与机器学习等AI方向有关联,但保不准人家就是厉害,各个方面都NB,其余请自行百度。可以看到下面这张图,Map就是拆解,Reduce就是组合,Map计算各个key对应的value,Reduce将相同的key的value整合起来。

图3 - MapReduce原理图 (来自【深入浅出讲解 MapReduce】- bilibili)
3.1.1 参考文章或视频链接 |
---|
[1] MapReduce: Simplified Data Processing on Large Clusters.pdf CSDN资源地址(免费):MapReduce: Simplified Data Processing on Large Clusters.pdf |
[2] 《深入浅出讲解 MapReduce》- bilibili |
[3] 《【狂野大数据】一天搞定大数据之MapReduce》- bilibili |
[4] 《关于谷哥传奇工程师Jeff Dean的笑话》 |
[5] Jeff Dean - 百度百科 |
[6] 有谁可以介绍一下谷歌大牛Jeff Dean以及与他相关的事迹么? - 知乎 |
[7] 《Markdown 使用 Emoji 表情》- CSDN |
[8] MapReduce可不可以只要Reduce不要Map?- bilibili spark中可以直接reduce |
3.1.2 HDFS - 核心组件
HDFS(Hadoop Distributed File System 存储的文件系统)
3.1.3 YARN - 核心组件
YARN = Yet Another Resource Negotiator
,直译为另一种资源协调者,那么意译就是Hadoop的资源管理系统,
3.1.3 参考文章或视频链接 |
---|
[1] What does yarn (package manager) (in Linux) stand for? |
3.1.4 其它组件
3.1.4.1 HBase
图2中,HBASE是在HDFS之上的,这也印证了 runs on top of HDFS
的说法,这里有点可以类比与MySQL底层使用B+树作为存储结构的意思了。具体可以看参考文章
3.1.4.1 参考文章或视频链接 |
---|
重点阅读:[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya |
[2] 《Hbase 和 MySQL 的区别是什么?一文深度对比!》 |
[3] 《美团一面:为什么选用Hbase,Hbase和MySQL的区别是什么?》 |
[4] 【头条面试:请描述MySQL的B+树索引原理,B+树索引有哪些好处】- bilibili |
重点观看:[5] 【B+树,B-link树,LSM树…一个视频带你了解常用存储引擎数据结构(中)】- bilibili |
3.1.4.2 Hive
由此我们可以看出Hive与HDFS也是不一样的,其具体区别
3.1.4.2 参考文章或视频链接 |
---|
重点阅读:[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya |
[2] Hive VS HBase: What Is The Difference? |
3.1.4.3 Spark
Apache Spark 是用于大数据工作负载的开源分布式处理系统。它利用内存中缓存和优化的查询执行,对任何大小的数据进行快速分析查询。它提供 Java、Scala、Python 和 R 语言的开发 API,并支持跨多个工作负载(批处理、交互式查询、实时分析、机器学习和图形处理)重用代码。[2]
3.1.4.3 参考文章或视频链接 |
---|
[1] Introduction to the Hadoop Ecosystem for Big Data and Data Engineering - Analytics Vidhya |
[2] What is Apache Spark? |