Hadoop基本内容大全

本文介绍了Hadoop的相关知识,包括其三大版本、范围、发展历史和优点。阐述了架构模型,如文件系统核心模块HDFS的读写流程,数据计算核心模块1.x和2.x版本的差异。还讲解了MapReduce的思想、规范和步骤,最后提及Hadoop的三种配置方式及CDH相关内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.简介

1.三大公司:

(1) 软件收费版本ClouderManager https://www.cloudera.com/
(2)免费开源版本hortonWorks
(3)免费开源版本apache:

2.范围

(1) 狭义上来说,hadoop就是单独指代hadoop这个软件
(2)广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件

3.发展历史

(1)Lucune–Nutch --hadoop 起源于谷歌的三大论文

4.四大优点

(1)低成本:?
hadoop本身是运行在普通PC服务器组成的集群中进行大数据的分发及处理工作的,这些服务器集群是可以支持数千个节点的。
(2)高效性:?
核心竞争优势所在,接受到客户的数据请求后,hadoop可以在数据所在的集群节点上并发处理。
(3)可靠性:?
分布式存储,hadoop可以自动存储多份副本,当数据处理请求失败后,会自动重新部署计算任务
(4)扩展性:?
分布式存储和分布式计算是在集群节点完成的,这也决定了hadoop可以扩展至更多的集群节点。

二.架构模型

1.文件系统核心模块:(hdfs)

(1)JournalNode(元数据信息管理进程,一般都是奇数个)
(2) NameNode(集群当中的主节点,主要用于管理集群当中的各种数据
读取数据就近原则)
(3)secondaryNameNode(主要能用于hadoop当中元数据信息的辅助管理
操作fsimage和eidit):
fsimage是namenode中关于元数据的镜像,eidit一般称为检查点,客户端对hdfs进行写文件时会首先被记录在edits文件中。
edits修改时元数据也会更新
(4)3个DateNode(集群当中的从节点,主要用于存储集群当中的各种数据)


(a)hdfs的副本机制和快储存:
HDFS 中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在1.x是64m hadoop2.x 版本中是 128M。
Datanode 需要定时向 Namenode 汇报自己持有的 block信息。 存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。
(b)hdfs的读写流程:
写入:

  1. client发起文件上传请求,通过RPC与NameNode建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;

  2. client请求第一个block该传输到哪些DataNode服务器上;

  3. NameNode根据配置文件中指定的备份数量及机架感知原理进行文件分配,返回可用的DataNode的地址如:A,B,C;

  4. client请求3台DataNode中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将整个pipeline建立完成,后逐级返回client;

  5. client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(默认64K),A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答。

  6. 数据被分割成一个个packet数据包在pipeline上依次传输,在pipeline反方向上,逐个发送ack(命令正确应答),最终由pipeline中第一个DataNode节点A将pipelineack发送给client;

  7. 当一个block传输完成之后,client再次请求NameNode上传第二个block到服务器。
    Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份。

读取:
  1. Client向NameNode发起RPC请求,来确定请求文件block所在的位置;
  2. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址; 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
  3. Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据(短路读取特性);
  4. 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
  5. 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
  6. 读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。
  7. read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;
  8. 最终读取来所有的 block 会合并成一个完整的最终文件。
2.数据计算核心模块
(1). 1.x版本

JobTracker:接收用户的计算请求任务,并分配任务给从节点
ApplicationMaster:跟踪当前任务,检测有没有完成.在nodemanger里面运行
TaskTracker:负责执行主节点JobTracker分配的任务
1.0版本

(2). 2.x版本

ResourceManager:接收用户的计算请求任务,并负责集群的资源分配,以及计算任务的划分,Yarn平台的主节点,主要用于接收各种任务,通过两个,构建成高可用
appmaster:跟踪当前任务,检测有没有完成.在nodemanger里面运行
NodeManager 8g:负责执行主节点ResourceManager分配的任务,Yarn平台的从节点,主要用于处理ResourceManager分配的任务
2.0版本

三.hadoop的mapreduce

1.思想:分而治之
2.规范:
  1. MapReduce是一个分布式运算程序的编程框架

  2. Writable:序列化 writablecompareable序列化,比较器

  3. 规约combiner局部数据的汇总.旺旺成为map端的reduce

  4. 计数器,通过context上下文获取

  5. 流量统计

  6. maptask

  7. reduce task

  8. 数据压缩 snappy

  9. join关联 map端
    reduce端join

3. 步骤:

1. Map阶段 (k1; v1) → [(k2; v2)]:

  1. 读取文件, 设置InputFormat 读取文件 将我们的数据切分成key,value对,输入到第二步
  2. 自定义map逻辑,处理我们第一步的输入数据,然后转换成新的key,value对进行输出
    2.shuffle:
  3. 对输出的key,value对进行分区(1.分区:将数据按照一定的业务逻辑规则,交由一个reducetask进行处理默认分区HashPartitioner)
  4. 对不同分区的数据按照相同的key进行排序
  5. 对分组后的数据进行规约(combine操作),降低数据的网络拷贝(可选
  6. 对排序后的额数据进行分组,分组的过程中,将相同key的value放到一个集合当中
    3.Reduce阶段 (k2; [v2]) → [(k3; v3)]:
  7. :对多个map的任务进行合并,排序,写reduce函数自己的逻辑,对输入的key,value对进行处理,转换成新的key,value对进行输出
  8. 设置outputformat将输出的key,value对数据进行保存到文件中

四.配置

1.三种方式

伪分布式
standalone
完全分布式 修改文件core核心 hdfs mapred yarn slaves hadoop-env.sh

2.cdh

c本地库的支持
snappy :google出品
hdfs集群50070
yarn集群8088
jobhistory19888
hadoop fs -put /localdir /hdfsdir

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值