hadoop浅谈

hadoop浅谈

什么是hadoop

百度百科:

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据提供了计算。

思想之源(Google三篇论文):

Hadoop的思想之源:Google

Google是最早面临海量数据处理的问题,从而有了Google低成本之道: 大量使用普通的pc服务器,提供有冗余的集群服务,因此Google面对的数据存储和计算难题有了三大论文,也是大数据的三驾马车

  1. 《分布式文件系统》:GFS (google file system)
  2. 《分布式计算模型》:MapReduce
  3. 《BigTable》:BigTable

hadoop的优点

Hadoop是一个能够对大量数据进行分布式处理的软件框架。 Hadoop 以一种可靠、高效、可伸缩的方式进行数据处理。此外,Hadoop 依赖于社区服务,因此它的成本比较低,任何人都可以使用。

  1. 高可靠性。Hadoop按位存储和处理数据的能力值得人们信赖。
  2. 高扩展性。Hadoop是在可用的计算机集簇间分配数据并完成计算任务的,这些集簇可以方便地扩展到数以千计的节点中。
  3. 高效性。Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度非常快。
  4. 高容错性。Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配。
  5. 低成本。与一体机、商用数据仓库以及QlikView、Yonghong Z-Suite等数据集市相比,hadoop是开源的,项目的软件成本因此会大大降低 。

Hadoop带有用Java语言编写的框架,因此运行在 Linux 生产平台上是非常理想的。Hadoop 上的应用程序也可以使用其他语言编写,比如 C++。

Hadoop的体系架构

Hadoop的体系架构主要分为

  • HDFS
  • Mapreduce
  • YARN

HDFS

  • NameNode: 用于保存元数据信息(Namenode将元数据保存在内存中)

    • 处理客户端的请求
    • 元数据(Filename、副本数,各个副本所在的节点的位置)
  • DataNode:

    • 用于具体保存数据的(副本数默认为3,可设置)
  • SecondaryNameNode:

    • 用于同步元数据信息
  • Client:

    • 发起请求
HDFS读写流程简述
HDFS写入请求:
  1. client(客户端)向NameNode发出写数据请求。
  2. 请求成功后,写入一条记录,返回DataNode列表。
  3. client按128MB(默认)切分文件,将block写入对应的DataNode。(注意这里,还有一些具体的细节。比如将一个block写入一个最近的Datanode,该DataNode,再将block写给下一个存储该block副本的Datanode,同时在写入的时候是以packet的形式,建立管线写入到DataNode中)
  4. 写入完成后,client向NameNode发送完成信号。
HDFS读取流程:
  1. client向NameNode发起读取请求,
  2. NameNode查询元数据信息,
  3. 获得这个文件的数据块位置列表,并返回。
  4. client就近选取datanode服务器,读取数据。
namenode从datanode接受心跳和块报告

namenode启动后,datanode向namenode进行注册

  • 心跳机制
    • 心跳是每3秒一次心跳返回结果带有NameNode给该DataNode的命令如删除块,复制块等。如果超过10分钟没有收到某个DataNode 的心跳,则认为该节点不可用
  • 块报告
    • DataNode启动后向NameNode注册,通过后,周期性(1小时)的向NameNode上报所有的块信息
  • 块损坏
    • 当DataNode读取block的时候,重新计算checksum,和创建时的对比。DataNode 在其文件创建后三周验证其checksum
HDFS常见问题:

问题1:怎么保证HDFS数据的安全性(数据的0丢失)。

  1. hdfs以冗余保证数据的安全,每个块有多个副本。
  2. datanode周期性向namenode进行块报告,并且在读取元数据时,进行校验和。
  3. 心跳机制。
  4. hdfs的高可用。

问题2:namenode启动流程

  1. namenode启动后会加载元数据(加载fsimage和edits文件,合并生成新的fsimage,并生成edits文件,DataNode注册与发送心跳和Block Report,NameNode 启动过程中会进入SafeMode(安全模式)),并等待datanode注册,同时进入安全模式,安全模式下hdfs只读不写(安全模式是一个只读不写的操作)
  2. datanode注册后,向namenode发送心跳和块报告

YARN

  • ResourceManager:
    • 负责全局任务的调度和资源管理
      • (Container:硬件资源(CPU,内存,硬盘))
      • 处理客户端请求,
      • 启动/监控applicationMaster
      • 监控NodeManager
  • Nodemanager:
    • 单个节点上的资源管理
      • 处理来自ResourceManager的命令
      • 处理来自ApplicationMater的命令
  • ApplicationMaster
    • 为应用程序申请资源,并分配制内部任务
      • 任务监控与容错
  • Container
    • 对环境的抽象,其封装了CPU,内存等多维资源
向Yarn提交任务流程简述
  1. Client向ResourceManager发出请求,提交程序。
  2. ResourceManager 发送命令给一个NodeManager节点,以启动App master。
  3. App master启动后,向ResourceManager申请资源。
  4. App master向资源所在的Nodemanager发送命令,启动task任务,App master监控这些任务的情况。
  5. 当这些task执行结束,向app master进行反馈。
  6. 所有任务结束之后,app master向Resource Manager反馈; 回收本次任务的资源。

Mapreduce

分两个阶段:Map和Reduce 计算框架,编程模型 “分而治之”的思想, 分布式并行计算

map阶段:
  1. 读取HDFS中的文件。每一行解析成一个<k,v>。每一个键值对调用一次map函数。
  2. 覆盖map(),接收1.1产生的<k,v>,进行处理,转换为新的<k,v>输出。
  3. 对1.2输出的<k,v>进行分区。默认分为一个区。
  4. 对不同分区中的数据进行排序(按照k)、分组。分组指的是相同key的value放到一个集合中。
Reduce阶段:
  1. 多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点上。
  2. 对多个map的输出进行合并、排序。覆盖reduce函数,接收的是分组后的数据,实现自己的业务逻辑,处理后,产生新的<k,v>输出。
  3. 对reduce输出的<k,v>写到HDFS中。

Hadoop的安装运行模式:

  • 单机(本地)运行模式
    • 无需运行任何守护进程,所有程序都在单个JVM上执行,测试用
  • 伪分布式
    • 将所有的守护进程运行在一个节点 ,学习、联系用
  • 分布式

共同学习,共同进步!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据是当今全世界都在谈论的词。 数据量日复一日地从千字节增加到 Zettabytes,数据可能是连续或频繁的实时流的速度,以及来自不同来源的不同格式(结构化、非结构化和非结构化)的各种数据。半结构化)。 所有这些类型的数据都将被合并、存储、处理和分析以备将来的结果。 大数据分析因其降低成本、更快和更好的决策而广受欢迎。 由于其特定功能,它被用于医疗保健、教育、制造、银行、保险、运输、媒体和娱乐等众多应用中。医疗保健领域的数据正在Swift增长,预计近年来会显着增加。 在当今的数字世界中,必须将数据数字化。 为了通过最小化成本来提高医疗质量,必须有效地处理和分析不同类型的健康数据,如电子健康记录、基因组、行为和公共卫生,以应对新的挑战。 出于这个原因,医疗领域被考虑用于大数据分析。 本文介绍了用于处理医疗保健记录的预测性、规范性、描述性和诊断性分析类型。 要执行所有这些操作,Hadoop 是最佳选择。 HadoopHadoop 分布式文件系统 (HDFS) 和 MapReduce 的组合。 Hadoop以其存储容量大、处理速度快、成本低、使用集群在分布式环境中工作的模型简单高效而广为人知。 因此,了解 Hadoop 的技术细节变得至关重要。 这一事实激发了深入探索 Hadoop 及其组件的灵感。 MapReduce 结果有助于预测流行病、治愈疾病、提高生活质量并防止死亡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值