Hadoop用于提供可信赖的弹性分布式计算,hadoop使得我们可以把计算逻辑分布到海量的机器上面去以提升计算性能并且实现高可用。
Hadoop分为以下四个模块
模块 | 功能 |
---|---|
通用模块 | 用于支撑Hadoop的工具模块 |
Hadoop Distributed File System (HDFS) | 分布式的文件系统 |
YARN | 用于任务调度和集群资源管理的框架 |
MapReduce | 基于YARN的海量数据并行处理系统 |
HDFS模块
HDFS模块用于存储数据,它的核心思想是Google的GFS,即把数据分成块(block)存储在多个机器上,同时每个块可能还会有多个备份以保证数据的高可用。
HDFS运行在多个节点之上,不同的节点可能有不同的身份。
节点类型 | 节点介绍 |
---|---|
命名节点(NameNode) | 命名节点用于管理其它存储节点,是“管理员”节点并且只有一个,它存储了文件路径和具体的文件块之间的映射关系。 |
副命名节点(Secondary NameNode) | 命名节点的备份,可以有多个 |
数据节点(DataNode) | 存储数据块的节点,具有存储和读写数据的功能 |
MapReduce模块
通过分治法把任务拆解分到多个节点上进行计算,之后再把计算结果汇总,即Map和Reduce。
配置hadoop环境
首先我们需要安装Java并且正确配置JAVA_HOME
,然后从网页上下载Hadoop压缩包,这里我选择的是hadoop-3.3.2.tar.gz
版本的压缩包。
创建hadoop用户
useradd -m hadoop
进入hadoop用户
su - hadoop
下载压缩包
wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.2/hadoop-3.3.2.tar.gz --no-check-certificate
解压压缩包
tar -zxvf hadoop-3.3.2.tar.gz
进入文件夹
cd hadoop-3.3.2
执行Hadoop
Hadoop的执行分为三种模式
本地模式
本地模式就是Local (Standalone) Mode,是一个在本地执行用于debug的模式。下面这个例子是把hadoop的配置文件复制到input
文件夹中,然后通过正则表达式查找input
文件夹里面的文件内容,并且把结果输出到output
文件夹
mkdir inputcp etc/hadoop/*.xml inputbin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.2.jar grep input output 'dfs[a-z.]+'cat output/*
输出结果为
1 dfsadmin
伪分布式模式
这种模式是只在一个节点上面运行多个Java进程,包含了一些很机械的代码,不记录了,直接参考Hadoop官方文档Setting up a Single Node Cluster就可以了。
完全的分布式操作模式
HDFS的搭建
因为这部分内容稍微有些复杂,所以放到单独的一篇文章中进行介绍。
MapReduce的搭建
这部分的内容同样也放到了一篇单独的文章中进行了介绍。
参考
Hadoop: Setting up a Single Node Cluster
Hadoop Cluster Setup