0


Day03-Hadoop概述-浅浅入门一下

Hadoop简介:是Apache旗下的一个用Java语言实现开源软件框架,是一个存储和计算大规模数据的软件平台。
Hadoop起源: Doug Cutting 创建的,最早起源一个Nutch项目。

三架马车:谷歌的三篇论文加速了hadoop的研发

狭义上来说:Hadoop指Apache这款开源框架,它的核心组件有:HDFS,MR,YANR
广义上来说:Hadoop通常是指一个更广泛的概念——Hadoop生态圈

一、分布式和集群的理解

分布式:就是多个人配合做一件事,保证效率(多个人一起干活)

比如,一个人洗菜一个人炒菜一个人上菜
概念:多台服务器协同配合完成同一个大任务

大数据中分布式的调度主要有2类架构模式——去中心化模式、中心化模式

①中心化模式:有一个中心节点(服务器)来统筹其它服务器的工作,统一指挥,统一调派,避免混乱。也叫做主多从模式,简称主从模式。

个人理解:有一个老大中心/主节点(服务器)管理他们(从节点),统一管理统一干活

在大数据中大多数基础框架都是符合中心化模式的。

②去中心化模式,没有明确的中心。 众多服务器之间基于特定规则进行同步协调


集群:并行/效率、可靠(多个人都可以干这些任务,可以并行或者备份)

比如,三个厨师都可以做这道菜(并行)可以三个人都做这道菜,也可以(备份)一个人做菜两个人看着他做
概念:多台服务器联合起来独立做相同的任务,可以并行也可以备份

注意: 集群如果客户端请求量(任务量)多,多个服务器同时处理不同请求(不同任务),如果请求量少,一台服务器干活,其他服务器做备份使用

二、Hadoop架构

1、HDFS:(分布式文件系统)

特点:

HDFS存储大文件,把大文件默认切割成128M大小的block块,进行存储
HDFS存储块的时候,会给每个块进行备份(一共三份)
HDFS文件系统可存储超大文件,时效性稍差。
HDFS具有硬件故障检测和自动快速恢复功能。
HDFS为数据存储提供很强的扩展能力。
HDFS存储一般为一次写入,多次读取,只支持追加写入,不支持随机修改。
HDFS可在普通廉价的机器上运行。

好理解的方式

   可以把它想象成一个超级大的文件柜,这个文件柜分布在多台计算机上,每台计算机上都有多个小抽屉(我们称为“数据块”),用来存放文件的不同部分。

(数据块是文件存储的基本单元,用于存储文件的实际内容。)

  1. 像管理图书馆一样的NameNode和SecondaryNameNode:- NameNode就像图书馆的馆长,负责记录哪个文件在哪个抽屉(数据块)上,确保能找到所需文件的所有部分。- SecondaryNameNode则像副馆长,帮助馆长确保记录是最新的,防止丢失。
  2. 像存储文件的DataNodes:- DataNodes就像存放书籍的架子,实际存储文件的各个部分。每个DataNode知道自己架子(抽屉)上有哪些书(文件的哪些部分)。

基本概念:

HDFS:全名Hadoop Distributed File System(分布式文件系统)

用于解决海量数据存储
元数据: 描述核心数据的数据(如数据创建者、创建时间、存储位置等,其实就是各种属性)
NameNode:集群当中的主节点,主要用于管理集群当中的各种数据
SecondaryNameNode:主要能用于辅助NameNode进行文件块元数据存储
DataNode:集群当中的从节点,主要用于存储真实的海量的业务数据

Client:发请求就是客户端。文件切分:文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储,与 NameNode 交互,获取文件的位置信息,与 DataNode 交互,读取或者写入数据。
 Client 提供一些命令来管理 和访问HDFS,比如启动或者关闭HDFS。


YARN:(作业调度和集群资源管理的框架)

好理解的方式

    YARN就像是一个大型的数据工厂的主管,负责分配和管理工厂里的所有资源(比如机器、工具和工人等),以确保工厂能够高效、有序地运行。

无论是处理大量的订单,还是管理复杂的生产线,YARN都能够游刃有余,确保每个任务都能得到合适的资源,并且按时完成。

** 1 、ResourceManager** 是工厂的总经理或主管。它负责监管整个工厂的资源(机器、工具、工人等),并确保这些资源能够按照需要分配给各个作业。

    ResourceManager还要监控工厂的整体运行状态,确保作业之间不会因为资源争抢而发生冲突,并且能够高效地完成任务。

** 2、NodeManager** 则是工厂里的工头或班组长。他们直接管理着工厂的生产线(单个节点),负责监督和指导工人完成作业,并确保他们有足够的资源(如机器、原材料等)进行生产。

    同时,NodeManager还需要向ResourceManager汇报工作进度和资源使用情况,以便ResourceManager可以更好地进行整体规划和调度。

基本概念

解决资源任务调度
ResourceManager: 接收用户的计算请求任务,并负责集群的资源管理和分配
NodeManager: 负责执行主节点分配的任务(给MR的计算程序提供资源)


MapReduce:(分布式运算编程框架)

好理解的方式

MapReduce则像是大型的数据工厂里的一种特殊生产线,专门用于处理大量的数据。首先,它将大批量的数据拆分成小份(Map阶段),然后由不同的工人(服务器)同时进行处理。处理完毕后,各个部分的结果会被汇总(Shuffle阶段),最后再进行整合(Reduce阶段),形成最终的产品(分析结果),这个过程非常适合处理大规模数据,因为它可以显著提高效率,减少浪费。

** 1、Map**:Map阶段类似于数据工厂中的拆分和初步加工环节。在这个阶段,原始数据被拆分成小份(即键值对),并由不同的工人(服务器)进行初步处理。每个工人将数据转换为一系列中间键值对,这些键值对应着数据的特征及其关联信息。

** 2、Shuffle**:Shuffle阶段则类似于数据汇总和排序环节。这一阶段将Map阶段的输出按键进行排序和分组,确保具有相同键的键值对被传输到同一个Reducer节点。Shuffle是高效数据处理的关键,因为它通过合并和排序操作,为最终的数据汇总做好了准备。

** 3、Reduce**:Reduce阶段则是最后的整合和产出环节。在这一阶段,所有相同的键值对被合并并传递给Reducer函数进行处理,最终生成所需的分析结果或输出数据。

基本概念

解决海量数据计算
如何计算: 核心思想就是分而治之 Map负责分解,Reduce负责合并
MR程序: 使用java/python然后去编写MR程序,成本高

(成本高如何解决? 在hive平台上编写sql,执行sql底层自动转为MR程序)
MapReduce计算需要的数据和产生的结果需要HDFS来进行存储
MapReduce的运行需要由Yarn集群来提供资源调度。

三、hadoop集群配置好的情况下,集群启动命令

一键启动hdfs和yarn集群

[root@node1 ~]# start-all.sh

(关闭命令:stop-all.sh)

启动jobHistory服务(JobHistory用来记录已经finished的mapreduce运行日志,日志信息存放于HDFS目录中 )

[root@node1 ~]# mapred --daemon start historyserver

(关闭命令:mapred --daemon stop historyserver)


页面:

进入C:\Windows\System32\drivers\etc 目录打开hosts文件,添加以下内容:(下面的ip1、ip2、ip3为虚拟机的IP地址)

ip1 node1
ip2 node2
ip3 node3

配置完成后可以用以下格式访问

HDFS: http://node1:9870/

YARN: http://node1:8088/

jobhistory: http://node1:19888/

注意: 本地映射如果没有配置,就会报hdfs页面不能上传文件等错误...

如果懒得配置,可以用ip地址去访问

HDFS: http://ip地址:9870/

YARN: http://ip地址:8088/

jobhistory: http://ip地址:19888/

四、hdfs的shell命令

在安装好hadoop环境之后,可以执行类似于Linux的shell命令对文件的操作,如ls、mkdir、rm等,对hdfs文件系统进行操作查看,创建,删除等。

hdfs的shell命令有两种格式:

1、hadoop fs -命令 参数

2、hdfs dfs -命令 参数


如果在使用命令的时候没有加根目录/,默认访问的是/user/root ,也就是在此路径执行命令。

查看目录下内容: hdfs dfs -ls 目录的绝对路径
创建目录: hdfs dfs -mkdir 目录的绝对路径
创建文件: hdfs dfs -touch 文件的绝对路径
移动目录/文件: hdfs dfs -mv 要移动的目录或者文件的绝对路径 目标位置绝对路径
复制目录/文件: hdfs dfs -cp 要复制的目录或者文件的绝对路径 目标位置绝对路径
删除目录/文件: hdfs dfs -rm [-r] 要删除的目录或者文件的绝对路径
查看文件的内容: hdfs dfs -cat 要查看的文件的绝对路径 (cat还有head,tail也能查看)
查看hdfs其他shell命令帮助: hdfs dfs --help

把本地文件内容追加到hdfs指定文件中: hdfs dfs -appendToFile 本地文件路径 hdfs文件绝对路径

linux本地上传文件到hdfs中: hdfs dfs -put linux本地要上传的目录或者文件路径 hdfs中目标位置绝对路径
hdfs中下载文件到liunx本地: hdfs dfs -get hdfs中要下载的目录或者文件的绝对路径 linux本地目标位置路径

补充

绝对路径:从根目录开始计算,一直到目标文件或目录,给出一个完整的路径,不会随着当前位置的

表达方式:始终以根目录(/或盘符)开头,并一路指明直至目标文件或目录的具体位置


相对路径:相对于已知的当前路径而言,它依赖于当前所在的位置,并会根据这个位置来描述目标文件的位置。

表达方式:通常不包含根目录信息,使用“../”表示上一级目录,使用“./”表示当前目录,相对更加简洁。


本文转载自: https://blog.csdn.net/qq_59061273/article/details/140903904
版权归原作者 学大数据之菜就多练 所有, 如有侵权,请联系我们删除。

“Day03-Hadoop概述-浅浅入门一下”的评论:

还没有评论