Hadoop基础概念1

名称节点( NameNode):管理文件系统的命名空间,记录文件系统树及这个树内所有的文件和索引目录,同时也记录每个文件的每个块,所在的数据节点。
数据节点( DataNode ):文件系统的工作者,存储并提供定位块的服务,并定时向名称节点发送块的存储列表
JobTracker:协调作业的运行。
TaskTracker:运行作业划分后的任务。

 

 

NameNode记录着每个文件的元数据。每个文件在那个块中,每个数据节点包含哪些块。(不储存原始文件)

DataNode是文件的工作者,它们存储文件并提供定位块的服务,并且定时向名称节点发送它们的存储块的列表。
         (储存原始文件)

3. 重要参数
    dfs.replication.min参数。最小为1,表示每个块在HDFS中的副本个数。

 

安全模式:在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。

 

Writable接口
序列化:指的是将结构化对象转换为字节流以便网络进行传输
         或者写入存储的过程。
       反序列化:指的是将字节流转为一系列结构化对象的过程。
      (java定义的序列化和反序列化工具不够紧凑,高效)
在hadoop中,常规JAVA数据类型是不能表示Hdfs的数据类型的,
        例如hdfs中的字符串不是string类表示,而是Text类,这些
        数据类型都必须实现一个writable接口 。
Writable是Hadoop的核心(MapReduce程序使用他来序列化
      键/值对):
        void write(DataOutput out) throws IOException;
        void readFields(DataInput in) throws IOException;
       分别实现对数据的序列化和反序列化。

 

MapReduce是 Hadoop程序的体现。框架极其简单:首先是对MapReduce程序运行前的参数配置,然后编写Map类(实现Map方法),最后是Reduce类(实现Reduce方法)。
MapReduce程序的每个细节都与设置的参数有很大的关系,参数设置的好,程序的效率肯定得到提高。
Map方法:Map(k1,v1) ->list(k2,v2) ,并行应用于每一个输入的数据集,每一次调用都会产生一个(k2,v2)的队列 。
Reduce方法:Reduce(k2,list(v2)) -> list(k3,v3)。收集map端输出队列list(k2,v2)中有相同key的数据对,把它们聚集在一起,输出时形成目的数据 list(k3,v3)。

 

2.1 根据输入数据的大小和参数的设置把数据分成splits,
    每个split对于一个map线程。
2.2 Split中的数据作为Map的输入, Map的输出一定在Map端。
2.3 Map的输出到Reduce的输入的过程(shuffle过程):
   第一阶段:在map端完成
    内存->排序->写入磁盘->复制
    分区->排序->分区合并->合并后分区->复制
   第二阶段:在reduce端完成
    映射到reduce端分区->合并->排序
2.4 Reduce的输入到Reduce的输出
     最后排好序的key/value作为Reduce的输入,输出不一定
     是在reduce端。


JobTracker和TaskTracker

JobTracker  对应于 NameNode

TaskTracker 对应于 DataNode

DataNode 和NameNode 是针对数据存放来而言的

JobTracker和TaskTracker是对于MapReduce执行而言的

 

mapreduce中几个主要概念,mapreduce整体上可以分为这么几条执行线索:

jobclient,JobTracker与TaskTracker。

1、JobClient会在用户端通过JobClient类将应用已经配置参数打包成jar文件存储到hdfs,

并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即MapTask和ReduceTask)

并将它们分发到各个TaskTracker服务中去执行

2、JobTracker是一个master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务task运行于TaskTracker上,

并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker部署在单独的机器上。

3、TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。

TaskTracker都需要运行在HDFS的DataNode上


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值