Hadoop - 初理解

Hadoop是什么?

大量数据进行分布式处理软件框架,存储HDFS和计算Map/Reduce,像使用单机一样使用分布式,用户可以不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速计算和存储。

 

Hadoop背景与现状?

  1. 大型企业将Hadoop 技术运用在自身的服务中。
  2. Hadoop解决方案的商业型公司也纷纷跟进,提供Hadoop的商业服务。
  3. 越来越多的企业将Hadoop 技术作为进入大数据领域的必备技术。

 

Hadoop - MR特性

将task分解为多个碎片任务(map),将map发送到多个节点上,之后再以单个数据集的形式加载(Reduce)到数据仓库里。

  • 集群最大节点数–4000
  • 最大并发任务数–40000
  • Job Tracker负载较重
  • 存在单点故障SPOF(Single Point Of Failure), 一旦故障,所有执行的任务的全部失败。
  • 仅仅使用Map / Reduce一种计算方式
  • 把资源强制划分为 map task slot 和 reduce task slot, 当系统中只有map task或者只有reduce task的时候,会造成资源的浪费。

Hadoop MapReduce应用程序

  1. Map函数
  2. Reduce函数:
  3. main函数:作业控制和文件输入/输出结合起来。

一个代表客户机在单个主系统上启动的MapReduce应用程序称为JobTracker。它是 Hadoop 集群中唯一负责控制MapReduce应用程序的系统。

工作机制:在应用程序提交之后,将提供包含在 HDFS 中的输入和输出目录。JobTracker 使用文件块信息(物理量和位置)确定如何创建其他 TaskTracker 从属任务。

https://gss1.bdstatic.com/9vo3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=b2a7c61df8198618554ae7d62b844516/77094b36acaf2edda2700a958d1001e9380193cc.jpg

例子说明:输入域是 one small step for man, one giant leap for mankind

这个域上运行 Map 函数将得出以下的键/值对列表:(one,1) (small,1) (step,1) (for,1) (man,1) (one,1) (giant,1) (leap,1) (for,1) (mankind,1)

这个键/值对列表应用 Reduce函数,将得到以下一组键/值对:(one,2) (small,1) (step,1) (for,2) (man,1)(giant,1) (leap,1) (mankind,1)

解读:输入域信息分别分布在不同的map上,这时可以得到对应的reduce,在进行一个整合得到单独的reduce,将单独的reduce到输出域。Map是把输入Input分解成中间的Key/Value对,Reduce把Key/Value合成最终输出Output。

 

Hadoop-HDFS特性

基于一组特定的节点构建的分级文件系统,可实现增、删、改、查等功能。HDFS内部的所有通信都基于标准的 TCP/IP 协议。

https://gss0.bdstatic.com/-4o3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike72%2C5%2C5%2C72%2C24/sign=4cda796c2ef5e0fefa1581533d095fcd/8326cffc1e178a8205c409d5f503738da877e8cf.jpg

一个NameNode节点:提供元数据服务,管理文件系统名称空间和控制外部客户机的访问。

大量DataNode节点:提供存储块Blocks(数据块),定期向NameNode发送心跳信息,汇报自身、block信息以及健康信息。

工作机制:实际的I/O事务并没有经过NameNode,只有表示DataNode和块的文件映射的元数据经过NameNode。当外部客户机发送请求要求创建文件时,NameNode会以块标识和该块的第一个副本的DataNode IP地址作为响应。这个NameNode还会通知其他将要接收该块的副本的DataNode。

 

NameNode的本地文件上包含两个文件,一个是EditLog:包含所有事务的记录文件,另一个是FsImage:存储所有关于文件系统名称空间的信息。

 

分布式集群

分布式是以缩短单个任务的执行时间来提升效率的,集群则是通过提高单位时间内执行的任务数来提升效率。大型网站的演变流程:从最开始的架构只有应用程序,数据库,文件服务,再到分布式服务、集群架设。

  1. 高可用集群(High Availability Cluster)
  2. 负载均衡集群(Load Balance Cluster,nginx即可实现)
  3. 科学计算集群(High Performance Computing Cluster)

集群中的工作分布

工作机制:将为特定节点上的每个文件块创建一个惟一的从属任务。每个 TaskTracker 将状态和完成信息报告给 JobTracker。

https://gss3.bdstatic.com/7Po3dSag_xI4khGkpoWK1HF6hhy/baike/c0%3Dbaike80%2C5%2C5%2C80%2C26/sign=7ca5e167d40735fa85fd46ebff3864d6/8644ebf81a4c510f0e44a1666059252dd52aa5ce.jpg

 

发布了81 篇原创文章 · 获赞 118 · 访问量 24万+

猜你喜欢

转载自blog.csdn.net/dlphay/article/details/97373127