一、Hadoop介绍
Hadoop软件库是一个计算框架,可以使用简单的编程模型以集群的方式对大型数据集进行分布式处理。
1. Hadoop发展史及生态圈
- Hadoop起源于Apache Nutch项目,始于2002年,是Apache Lucene的子项目之一。
- 2006年2月,成为一套完整而独立的软件,并被命名为Hadoop。
- 2008年1月,Hadoop成为Apache顶级项目。
- 2009年7月,MapReduce和HDFS成为Hadoop的独立子项目。
- 2010年5月,Avro脱离Hadoop项目,成为Apache顶级项目。
- 2010年5月,HBase脱离Hadoop项目,成为Apache顶级项目。
- 2010年9月,Hive脱离Hadoop项目,成为Apache顶级项目。
- 2010年9月,Pig脱离Hadoop项目,成为Apache顶级项目。
- 2011年1月,Zookeeper脱离Hadoop项目,成为Apache顶级项目。
- 2011年12月,Hadoop 1.0.0版本发布。
- 2012年10月,Impala加入Hadoop生态圈。
- 2013年10月,Hadoop 2.0.0版本发布。
- 2014年2月,Spark成为Apache顶级项目。
- 2017年12月,Hadoop 3.0.0版本发布。
- 2023年3月,Hadoop 3.3.5版本发布。
2. Hadoop核心功能及优势
- 分布式存储系统:HDFS
HDFS是Hadoop分布式文件系统(Hadoop Distributed File System)的简称,是Hadoop生态系统中的核心项目之一,也是分布式计算中数据存储管理的基础。
- 分布式计算框架:MR
MapReduce是一种计算模型,核心思想就是“分而治之”,可以用于TB级的大规模并行计算。Map阶段处理后形成键值对形式的中间结果;Reduce对中间结果相同的“键”对应的“值”进行处理,得到最终结果。
- 资源管理平台:YARN
YARN(Yet Another Resource Negotiator)是Hadoop的资源管理器,可以为上层应用提供统一的资源管理和调度,为集群的资源利用率、统一管理、数据共享等方面提供了便利。
- 高扩展
Hadoop是一个高度可扩展的存储平台,可以存储和分发超数百个并行操作的廉价的服务器集群。能够打破传统的关系数据库无法处理大量数据的限制,Hadoop能够提供TB级别数据的运算能力。
- 成本低
Hadoop可以将廉价的机器组成服务器集群来分发处理数据,成本较低,学习者及普通用户也能够很方便的在自己的PC上部署Hadoop环境。
- 高效率
Hadoop能够并发的处理数据任务,并且能够在不同的节点之间移动数据,可以保证各个节点的动态平衡。
- 容错性
Hadoop可以自动维护多份数据的副本,如果计算任务失败,Hadoop能够针对失败的节点重新处理。
3. 部署方式介绍
- 单机模式
单机模式是一个最简的安装模式,因为Hadoop本身是基于Java编写的,所以只要配置好Java的环境变量就可以运行了。在这种部署方式中我们不需要修改任何的配置文件,也不需要启动任何的服务,只需要解压缩、配置环境变量。
虽然配置很简单,但是能做的事情也是很少的。因为没有各种守护进程,所以分布式数据存储以及资源调度等等服务都是不能使用的,但是我们可以很方便的测试MapReduce程序。
- 伪分布模式
伪分布模式是学习阶段最常用的模式,可以将进程都运行在同一台机器上。在这种模式下,可以模拟全分布模式下的运行状态,基本上可以完成全分布模式下的所有操作,伪分布模式是全分布模式的一个特例。
- 全分布模式
在全分布模式下,会在配置文件中体现出主节点与分节点,可以指定哪些机器上运行哪些服务以达到的成本与效率的平衡。在企业中主要采用的都是全分布式模式,节点从数十个到上百个不等。在学习阶段,如果个人PC的性能足够强劲,也可以使用多台虚拟机代替。
二、Hadoop下载
1. 下载地址
在百度中搜索Hadoop,前两条就会显示我们需要的网站,目前Hadoop属于Apache基金会,所以我们打开网址时注意一下是apache.org
。
进入后来到Hadoop的官网,点击Download就可以打开下载界面:https://hadoop.apache.org/releases.html。
2. 版本选择
现在我们使用的是开源社区版,目前的主流版本为2.x.y和3.x.y。
在选择Hadoop的版本时,我们应该考虑到与其他生态圈软件的兼容问题。通常的组建方式有两种:
- 根据各组件的兼容性要求手动选择版本并搭建
- 使用CDH(Cloudera’s Distribution Including Apache Hadoop)自动选择版本并解决兼容问题
在学习阶段,由于进行的操作比较简单,不需要特别的在意版本的兼容问题,但是建议两种方式大家都能够去进行了解和实践。
3. 安装包下载
目前的3.x版本中已经支持了对于不同系统架构的支持,但是对于安装过程和使用都无影响,本文以3.3.5为例。source为软件源码,binary为所需,根据系统架构点击链接进入:
点击任意一个镜像地址开始下载,直击链接:
- 【x64】https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz
- 【arm】https://dlcdn.apache.org/hadoop/common/hadoop-3.3.5/hadoop-3.3.5-aarch64.tar.gz
可以直接使用wget命令下载到Linux系统。
三、前置环境
Hadoop的运行需要Java环境,先确保已经正确安装配置JDK。
1. 检查已有JDK环境
可以使用java -version来验证已经安装的版本,也可以使用以下命令:
update-java-alternatives --list
使用该命令时需要预先安装java-common:sudo apt install java-common
2. 卸载不需要的版本
如果已经安装的版本不是所需要的,可以先进行卸载,软件名称就是上文中查询到的。
sudo apt remove java-1.8.0-openjdk-arm64
3. 安装对应版本的JDK
JDK 1.8版本基本可以和所有的大数据生态圈组件很好的兼容,如果需要也可以换成其它版本,建议提前确认好版本兼容性。
sudo apt install openjdk-8-jdk
安装完成后可以使用java -version命令进行验证。
4. 创建Hadoop用户
使用大数据生态圈组件,建议创建一个单独的用户,如:hadoop。
sudo adduser hadoop
可以将hadoop用户添加到sudo组,使其拥有更高的权限:
sudo usermod -aG sudo hadoop
修改Hadoop软件压缩包的所属为hadoop:
sudo chown hadoop:hadoop hadoop-3.3.5-aarch64.tar.gz
移动软件包至hadoop用户家目录,并切换到hadoop用户:
sudo mv ~/Software/hadoop-3.3.5-aarch64.tar.gz /home/hadoop/ su - hadoop
四、本地模式
Hadoop的本地模式即不需要启动任务服务进程,仅仅通过携带的软件环境运行计算任务,可以方便的进行程序测试。
1. 解压安装
- 解压缩
tar -zvxf hadoop-3.3.5-aarch64.tar.gz
- 环境变量配置
由于使用的是apt安装的JDK,系统当中并没有配置JAVA_HOME变量,可以通过上文提到的命令查看安装位置。
编辑家目录下的.bashrc文件,可在文件结尾写入以下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-arm64 export PATH=$PATH:$JAVA_HOME/bin export HADOOP_HOME=/home/hadoop/hadoop-3.3.5 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
- 刷新测试
配置完成后使其立即生效,并通过hadoop命令进行测试:
source ~/.bashrc hadoop version
2. 运行测试
Hadoop本身自带了一个案例jar包,可以让我们直接执行一个Hello World,路径为share/hadoop/mapreduce
。
- 测试数据准备
新建一个txt文件,注意保存的路径【可以直接在jar包所在路径下创建】,读取时需要用到。
touch data.txt vi data.txt # 在文件中写入以下内容 good good study day day up today is a good day
- 运行计算任务
- wordcount:jar包中自带的一个可执行类
- data.txt:数据输入文件路径
- output:结果输出文件夹名称【需要指定一个还不存在的目录】
进入到example的jar包所在路径,执行以下命令:
hadoop jar hadoop-mapreduce-examples-3.3.5.jar wordcount data.txt output