设为首页 收藏本站
查看: 1105|回复: 2

[经验分享] hadoop介绍(一)

[复制链接]

尚未签到

发表于 2018-10-29 11:28:05 | 显示全部楼层 |阅读模式
  1、hadoop介绍

  •   hadoop是一个开源分布式计算平台框架基于apache协议发布由java语言开发。官网地址http://hadoop.apache.org/
  •   hadoop两大核心组件HDFS分布式文件系统为分布式计算提供了数据存储和mapreduce应用程序被分区成许多小部分而每个部分都能在集群中的任意节点上运行一句话就是任务的分解和结果的汇总
  •   其他两个模块Common、YARN
  •   和hadoop相关的项目Ambari、Avro、Cassandra、Chukwa、Hbase、Hive、Mahout、Pig、Spark、Tez、Zookeeper
  2、hadoop应用
  hadoop支持由廉价的计算机搭建集群有强大的冗余机制。
  hadoop在各大互联网企业中应用广泛百度使用hadoop进行搜索日志的分析和网页数据的挖掘工作淘宝使用hadoop存储并处理电子商务交易相关数据facebook使用hadoop进行数据分析和机器学习。
  还有哪些企业在使用hadoop http://wiki.apache.org/hadoop/PoweredBy
  3、hadoop组件介绍

  •   Common为其他组件提供常用工具支持。
  •   YARN作业调度和集群管理的框架。
  •   Ambari: 是 Apache Software Foundation 中的一个项目。就 Ambari 的作用来说就是创建、管理、监视 Hadoop 的集群但是这里的 Hadoop 是广义指的是 Hadoop 整个生态圈例如 HiveHbaseSqoopZookeeper 等。用一句话来说Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。http://www.ibm.com/developerworks/cn/opensource/os-cn-bigdata-ambari/index.html
  •   AvroAvro是Hadoop中的一个子项目也是Apache中一个独立的项目Avro是一个基于二进制数据传输高性能的中间件。在Hadoop的其他项目中例如HBase(Ref)和Hive(Ref)的Client端与服务端的数据传输也采用了这个工具。Avro是一个数据序列化的系统。Avro 可以将数据结构或对象转化成便于存储或传输的格式。Avro设计之初就用来支持数据密集型应用适合于远程或本地大规模数据的存储和交换。http://www.open-open.com/lib/view/open1369363962228.html
  •   Cassandra可扩展的多主数据库不存在单点故障。
  •   Chukwa是数据收集系统用于监控和分析大型分布式系统的数据。
  •   HBase是一个分布式面向列的数据库。
  •   Hive最早由facebook设计是建立在hadoop基础之上的数据仓库它提供了一些用于数据整理、特殊查询和分析在hadoop文件中数据集工具。
  •   Mahout可扩展的机器学习和数据挖掘库。
  •   Pig是一种高级语言和并行计算可执行框架它是一个对大型数据集分析和评估的平台。
  •   Spark一个快速和通用计算的Hadoop数据引擎。和mapreduce类似但是要比mapreduce快。它提供了一个简单而丰富的编程模型支持多种应用包括ETL、机器学习、数据流处理、图形计算。 参考文档http://www.techweb.com.cn/network/system/2016-01-25/2267414.shtml


  •   Tez是Apache最新的支持DAG作业的开源计算框架它可以将多个有依赖的作业转换为一个作业从而大幅提升DAG作业的性能。Tez并不直接面向最终用户事实上它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop传统上是一个大量数据批处理平台。但是有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合MapReduce例如机器学习。Tez的目的就是帮助Hadoop处理这些用例场景。
  •   ZooKeeperZooKeeper是一组工具用来配置和支持分布式调度。一个重要功能就是对所有节点进行配置的同步。它能处理分布式应用的“部分失败”问题。部分失败是分布式处理系统的固有特征即发送者无法知道接收者是否收到消息它的出现可能和网络传输问题、接收进程意外死掉等有关系。ZooKeeper是Hadoop生态系统的一部分但又远不止如此它能支持更多类似的分布式平台和系统如JubatusCassender等等。而且HBase明确指出至少需要一个ZooKeeper实例的支持。
  4、HDFS概述
  HDFS设计思想来源于Google的GFS是GFS的开源实现。
  HDFS要解决的问题
  (1) 存储超大文件比如TB级别(2) 防止文件丢失
  HDFS的特点
  (1) 可以存储超大文件
  (2) 只允许对一个已经打开的文件顺序写入还可以在现有文件的末尾追加。要想修改一个文件追加内容除外只能删除后再重写
  (3) 可以使用廉价的硬件平台搭建通过容错策略来保证数据的高可用默认存储3份数据任何一份丢失可以自动恢复
  HDFS的缺点
  (1) 数据访问延迟比较高因为它的设计场景是用于大吞吐量数据HDFS是单master所有文件都要经过它当请求数据量很大时延迟就增加了
  (2)文件数受限和NameNode有关系
  (3) 不支持多用户写入也不支持文件任意修改
DSC0000.jpg

  5、HDFS核心概念
  HDFS的几个概念

  •   数据块:block大文件会被分割成多个block进行存储block大小默认为64MB。每一个block会在多个datanode上存储多份副本默认是3份。
  •   namenodenamenode:负责管理文件目录、文件和block的对应关系以及block和datanode的对应关系。
  •   SecondaryNameNode:分担namenode的工作量是NameNode的冷备份它的主要工作是合并fsimage元数据镜像文件和fsedits元数据操作日志然后再发给namenode。
  •   datanodedatanode:就负责存储了当然大部分容错机制都是在datanode上实现的。
  •   rack 是指机柜的意思一个block的三个副本通常会保存到两个或者两个以上的机柜中当然是机柜中的服务器这样做的目的是做防灾容错因为发生一个机柜掉电或者一个机柜的交换机挂了的概率还是蛮高的。
  6、HDFS工作流程

  •   HDFS写流程
  HDFS写文件流程:

  •   Client向远程的Namenode发起RPC请求;
  •   Namenode会检查要创建的文件是否已经存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常
  •   当客户端开始写入文件的时候,会将文件切分成多个packets,并向Namenode申请blocks,获取用来存储replicas的合适的datanodes列表,列表的大小根据在Namenode中对replication的设置而定。
  •   此时会形成一个pipline用来传输packet。
  •   packet以流的方式写入第一个datanode,该datanode把packet存储之后,再将其传递给下一个datanode,直到最后一个datanode。
  •   最后一个datanode成功存储之后会返回一个ack传递至客户端,在客户端,客户端确认ack后继续写入下一个packet。
  •   如果传输过程中,有某个datanode出现了故障,那么当前的pipeline会被关闭,出现故障的datanode会从当前的pipeline中移除,剩余的block会继续剩下的datanode中继续以pipeline的形式传输,同时Namenode会分配一个新的datanode,保持replicas设定的数量。
DSC0001.png

  HDFS读流程
  HDFS读文件流程

  •   Client向远程的Namenode发起RPC请求
  •   Namenode会视情况返回文件的部分或者全部block列表,对于每个block,Namenode都会返回有该block拷贝的DataNode地址
  •   Client会选取离自己最接近的DataNode来读取block
  •   读取完当前block的数据后,关闭与当前的DataNode连接,并为读取下一个block寻找最佳的DataNode
  •   当读完列表的block后,且文件读取还没有结束,client会继续向Namenode获取下一批的block列表
  •   读取完block会进行checksum验证,如果读取datanode时出现错误,客户端会通知Namenode,然后再从下一个拥有该block拷贝的datanode继续读
DSC0002.png

  7、MapReduce模型
DSC0003.jpg


  •   MapReduce 是大规模数据(TB 级)计算的利器,Map 和Reduce 是它的主要思想,来源于函数式编程语言。


  •   Map负责将数据打散,Reduce负责对数据进行聚集,用户只需要实现map 和reduce 两个接口,即可完成TB级数据的计算。
  •   常见的应用包括:日志分析和数据挖掘等数据分析应用。另外,还可用于科学数据计算,如圆周率PI 的计算等。
  •   当我们提交一个计算作业时,MapReduce会首先把计算作业拆分成若干个Map 任务,然后分配到不同的节点上去执行,每一个Map 任务处理输入数据中的一部分,当Map 任务完成后,它会生成一些中间文件,这些中间文件将会作为Reduce 任务的输入数据。Reduce 任务的主要目标就是把前面若干个Map 的输出汇总到一起并输出
  MapReduce 执行过程
  Mapper任务的执行过程
  每个 Mapper任务是一个 java 进程,它会读取 HDFS中的文件,解析成很多的键值对,经过我们map方法处理后,转换为很多的键值对再输出;把 Mapper任务的运行过程分为六个阶段。

  •   第一阶段是把输入文件按照一定的标准分片(InputSplit),每个输入片的大小是固定的。
  •   第二阶段是对输入片中的记录按照一定的规则解析成键值对。
  •   第三阶段是调用 Mapper类中的 map 方法。
  •   l第四阶段是按照一定的规则对第三阶段输出的键值对进行分区。
  •   第五阶段是对每个分区中的键值对进行排序。
  •   第六阶段是对数据进行归纳处理,也就是 reduce处理。键相等的键值对会调用一次reduce方法。
  Reducer任务的执行过程
  每个 Reducer 任务是一个 java 进程。Reducer 任务接收 Mapper任务的输出,归约处理后写入到 HDFS中。可以分为3个阶段

  •   第一阶段是 Reducer 任务会主动从 Mapper任务复制其输出的键值对。 Mapper任务可能会有很多,因此 Reducer会复制多个Mapper的输出。
  •   第二阶段是把复制到 Reducer本地数据,全部进行合并,即把分散的数据合并成一个大的数据。再对合并后的数据排序。
  •   第三阶段是对排序后的键值对调用reduce方法。键相等的键值对调用一次 reduce方法,每次调用会产生零个或者多个键值对。最后把这些输出的键值对写入到HDFS文件中


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-627945-1-1.html 上篇帖子: hadoop安装报错 下篇帖子: Hadoop之文件系统元数据fsimage和编辑日志edits

尚未签到

发表于 2022-8-3 13:05:08 | 显示全部楼层

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

尚未签到

发表于 2023-8-21 15:21:49 | 显示全部楼层
强烈支持楼主ing……

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表