hadoop学习笔记4:hadoop、spark概念

hadoop学习笔记4:hadoop、spark概念

  • hadoop学习笔记4hadoopspark概念
    • hadoop
      • 1HDFS
      • 2MapReduce
      • 3YARN
    • spark

1.hadoop

Hadoop是一种开源的适合大数据的分布式存储和处理的平台。

Hadoop有三种不同的模式操作,分别为单机模式、伪分布模式和完全分布模。

Hadoop的核心是HDFS、Mapreduce和YARN(hadoop2.0以上)

1.1HDFS

hadoop学习笔记4:hadoop、spark概念_第1张图片

主要特点:

保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。
运行在廉价的机器上。适合大数据的处理。HDFS默认会将文件分割成block,64M为1个block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中。如果小文件太多,那内存的负担会很重。

  • Client:切分文件;访问HDFS;与NameNode交互,获取文件位置信息;与DataNode交互,读取和写入数据。

  • NameNode:Master节点,在hadoop1.X中只有一个,管理HDFS的名称空间和数据块映射信息,配置副本策略,处理客户端请求。是HDFS里面的管理者,发挥者管理、协调、操控的作用

  • DataNode:Slave节点,存储实际的数据,汇报存储信息给NameNode。是HDFS的工作者,发挥按着Namenode的命令干活,并且把干活的进展和问题反馈到Namenode的作用。

  • Secondary NameNode:辅助NameNode,分担其工作量;定期合并fsimage和fsedits,推送给NameNode;紧急情况下,可辅助恢复NameNode,但Secondary NameNode并非NameNode的热备。

1.2MapReduce

hadoop学习笔记4:hadoop、spark概念_第2张图片

MapReduce是一种简化并行 计算的编程模型,思想就是“分而治之”。

(1)Mapper负责“分”,即把复杂的任务分解为若干个“简单的任务”来处理。“简单的任务”包含三层含义:一是数据或计算的规模相对原任 务要大大缩小;二是就近计算原则,即任务会分配到存放着所需数据的节点上进行计算;三是这些小任务可以并行计算,彼此间几乎没有依赖关系。

(2)Reducer负责对map阶段的结果进行汇总。至于需要多少个Reducer,用户可以根据具体问题,通过在mapred-site.xml配置文件里设置参数mapred.reduce.tasks的值,缺省值为1。

  • JobTracker:Master节点,只有一个,管理所有作业,作业/任务的监控、错误处理等;将任务分解成一系列任务,并分派给TaskTracker。
  • TaskTracker:Slave节点,运行Map Task和Reduce Task;并与JobTracker交互,汇报任务状态。
  • Map Task:解析每条数据记录,传递给用户编写的map(),并执行,将输出结果写入本地磁盘(如果为map-only作业,直接写入HDFS)。

  • Reducer Task:从Map Task的执行结果中,远程读取输入数据,对数据进行排序,将数据按照分组传递给用户编写的reduce函数执行。

1.3YARN

YARN总体上采用master/slave架构;YARN将资源管理和处理组件分开,对集群中的资源进行统一管理和调度,大大提高了集群的资源利用率并降低了集群管理成本。YARN作为一个通用数据操作系统,既可以运行像MapReduce、Spark这样的短作业,也可以部署像Web Server、MySQL Server这种长服务,真正实现一个集群多用途。

  • ResourceManager:Master节点,ResourceManager(代替集群管理器)负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的Container
  • NodeManager:Slave节点,( 代替 TaskTracker)

  • ApplicationMaster 代替一个专用且短暂的 JobTracker

  • 一个分布式应用程序代替一个 MapReduce 作业

2.spark

hadoop学习笔记4:hadoop、spark概念_第3张图片

Spark是一个计算框架(内存集群计算),是MapReduce的替代方案,专注于计算,而不承担数据存储功能。

  • Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。
  • Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。
  • Spark 是为了支持分布式数据集上的迭代作业,但是实际上它是对 Hadoop 的补充,可以在 Hadoop 文件系统中并行运行(目前部署Spark的企业,其实都在现有的Hadoop集群中运行Spark)

参考文献:

YARN 简介:http://www.ibm.com/developerworks/cn/data/library/bd-yarn-intro/
一文看懂大数据的技术生态圈,Hadoop,hive,spark都有了
http://hadoop.apache.org/docs/r1.0.4/cn/hdfs_design.html

你可能感兴趣的:(hadoop入门学习笔记,hadoop,spark,大数据,分布式存储)