2021-01-29 大数据课程笔记 day9

本文详细介绍了Hadoop的起源、核心组件、HDFS架构及其工作流程,包括NameNode、SecondaryNameNode、DataNode的角色和功能。此外,还涵盖了数据块副本放置策略、HDFS的权限、安全模式以及HDFS的写入和读取流程。最后,文章提到了Hadoop的伪分布式环境搭建步骤。
摘要由CSDN通过智能技术生成

时间煮雨
@R星校长

hadoop 第一天

Hadoop一共六天课程:

  1. 分布式存储 两天
  2. MapReduce计算 两天
  3. 案例 两天

第一天内容安排

  1. 1T文件操作(训练)
  2. hadoop起源(了解)
  3. HDFS架构(重点)
  4. 数据块副本放置策略(重点)
  5. HDFS的权限(了解)
  6. hadoop的安全模式(理解)
  7. HDFS写文件流程(重点)
  8. HDFS读文件流程(重点)
  9. 伪分布式搭建(熟练)
热身1T文件操作的思考:
  1. 分治思想
  2. 单机处理大数据的问题
  3. 集群分布式处理大数据的辩证
分治思想引入案例
  1. 十万个元素(数字或单词)需要存储,如何存储?
  2. 如果想查找某一个元素,最简单的遍历方式的复杂度是多少?
    在这里插入图片描述
  3. 如果我们期望复杂度是O(4)呢?
    在这里插入图片描述
    • 分而治之的思想非常重要,常见于以下技术:
		1.	Redis集群
		2.	Hadoop
		3.	Hbase
		4.	ElasticSearch
单机处理大数据的问题

需求:
有一个非常大的文本文件,里面有非常多的行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。硬件:单台机器,而且可用的内存很少,也就 500MB。
• 假如 IO 速度是 500MB/S
• 1T 文件读取一遍需要约 30 分钟
• 循环遍历需要 N 次 IO 时间
• 分治思想可以使时间降为 2 次 IO
在这里插入图片描述

• 思考:
• 如何让时间变为分钟、秒级别
• 假如 IO 速度是 500MB/S
• 1T 文件读取一遍需要约 30 分钟
• 如何对 1TB 文件进行排序
在这里插入图片描述

方式 1:外部有序,内部无序。
逐一读入内存排序
方式 2:逐一读取 500M 排序,内部有序, 外部无序 ,然后进行归并排序

需求:
• 有一个非常大的文本文件,里面有几百亿行,只有两行内容一样,它们出现在未知的位置,需要查找到它们。
• 分钟、秒级别完成
• 硬件:*台机器,而且可用的内存 500MB。
在这里插入图片描述

由于涉及到计算机之间文件传输,千兆带宽,100MB/s
拉取网卡 100MB/S

之前忽略了上传时间:1TB/100MB = 10000S /3600S = 3H

集群分布式处理大数据的辩证
•	2000 台真的比一台快吗?
•	如果考虑分发上传文件的时间呢?
•	如果考虑每天都有 1TB 数据的产生呢?
•	如果增量了一年,最后一天计算数据呢?
•	1天  2*30=1H        	   3H1M2S 
•	2天    2H                   3H1M4S
•	3天    3H                   3H1M6S
•	4天    4H                   3H1M8S
hadoop起源
发展历史

在这里插入图片描述

  1. 2002年10月,Doug Cutting 和 Mike Cafarella 创建了开源网页爬虫项目 Nutch。
  2. 2003年10月,Google 发表 Google File System 论文。
  3. 2004年7月,Doug Cutting 和 Mike Cafarella 在 Nutch 中实现了类似 GFS 的功能,即后来 HDFS 的前身。
  4. 2004年10月,Google 发表了 MapReduce 论文。
  5. 2005年2月,Mike Cafarella 在 Nutch 中实现了 MapReduce 的最初版本。
  6. 2005年12月,开源搜索项目 Nutch 移植到新框架,使用 MapReduce 和 NDFS 在 20 个节点稳定运行。
  7. 2006年1月,Doug Cutting 加入雅虎,Yahoo! 提供一个专门的团队和资源将 Hadoop 发展成一个可在网络上运行的系统。
  8. 2006年2月,Apache Hadoop 项目正式启动以支持 MapReduce 和 HDFS 的独立发展。
  9. 2006年3月,Yahoo! 建设了第一个 Hadoop 集群用于开发。
  10. 2006年4月,第一个 Apache Hadoop 发布。
  11. 2006年11月,Google 发表了 Bigtable 论文,激起了 Hbase 的创建。
  12. 2007年10月,第一个 Hadoop 用户组会议召开,社区贡献开始急剧上升。
  13. 2007年,百度开始使用 Hadoop 做离线处理。
  14. 2007年,中国移动开始在“大云”研究中使用 Hadoop 技术。
  15. 2008年,淘宝开始投入研究基于 Hadoop 的系统——云梯,并将其用于处理电子商务相关数据。
  16. 2008年1月,Hadoop 成为 Apache 顶级项目。
  17. 2008年2月,Yahoo! 运行了世界上最大的 Hadoop 应用,宣布其搜索引擎产品部署在一个拥有 1 万个内核的 Hadoop 集群上。
  18. 2008年4月,在 900 个节点上运行 1TB 排序测试集仅需 209 秒,成为世界最快。
  19. 2008年8月,第一个 Hadoop 商业化公司 Cloudera 成立。
  20. 2008年10月,研究集群每天装载 10TB 的数据。
  21. 2009 年3月,Cloudera 推出世界上首个 Hadoop 发行版—— CDH(Cloudera’s Distribution including Apache Hadoop)平台,完全由开放源码软件组成。
  22. 2009年6月,Cloudera 的工程师 Tom White 编写的《 Hadoop 权威指南》初版出版,后被誉为 Hadoop 圣经。
  23. 2009年7月 ,Hadoop Core 项目更名为 Hadoop Common ;
  24. 2009年7月 ,MapReduce 和 Hadoop Distributed File System (HDFS) 成为 Hadoop 项目的独立子项目。
  25. 2009年8月,Hadoop 创始人 Doug Cutting 加入 Cloudera 担任首席架构师。
  26. 2009年10月,首届 Hadoop World 大会在纽约召开。
  27. 2010年5月,IBM 提供了基于 Hadoop 的大数据分析软件 —— InfoSphere BigInsights,包括基础版和企业版。
  28. 2011年3月,Apache Hadoop 获得 Media Guardian Innovation Awards 媒体卫报创新奖
  29. 2012年3月,企业必须的重要功能 HDFS NameNode HA 被加入 Hadoop 主版本。
  30. 2012年8月,另外一个重要的企业适用功能 YARN 成为 Hadoop 子项目。
  31. 2014年2月,Spark 逐渐代替 MapReduce 成为 Hadoop 的缺省执行引擎,并成为 Apache 基金会顶级项目。
  32. 2017年12月,Release 3.0.0 generally available
核心组件
  1. hadoop 通用组件 - Hadoop Common
    包含了其他 hadoop 模块要用到的库文件和工具
  2. 分布式文件系统 - Hadoop Distributed File System (HDFS)
    运行于通用硬件上的分布式文件系统,高吞吐,高可靠
  3. 资源管理组件 - Hadoop YARN
    于 2012 年引入的组件,用于管理集群中的计算资源并在这些资源上调度用户应用。
  4. 分布式计算框架 - Hadoop MapReduce
    用于处理超大数据集计算的 MapReduce 编程模型的实现。
  5. Hadoop Ozone: An object store for Hadoop.
  6. Hadoop Submarine: A machine learning engine for Hadoop
    在这里插入图片描述
hadoop 关联项目
  1. Apache Ambari 是一种基于 Web 的工具,支持 Apache Hadoop 集群的供应、管理和监控。 Apache Ambari 支持 HDFS、MapReduce、Hive、Pig、Hbase、Zookeepr、Sqoop 和 Hcatalog 等的集中管理。也是 5 个顶级 hadoop 管理工具之一。
  2. Avro™: 数据序列化系统
  3. Cassandra 是一套开源分布式 NoSQL 数据库系统。它最初由 Facebook 开发,用于储存收件箱等简单格式数据,集 GoogleBigTable 的数据模型与 Amazon Dynamo 的完全分布式的架构于一身, Facebook 于 2008 将 Cassandra 开源。
  4. chukwa 是一个开源的用于监控大型分布式系统的数据收集系统。这是构建在 hadoop 的 HDFS 和 MapReduce 框架之上的,继承了 hadoop 的可伸缩性和健壮性。Chukwa 还包含了一个强大和灵活的工具集,可用于展示、监控和分析已收集的数据。
  5. hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 sql 查询功能,可以将 sql 语句转换为 MapReduce 任务进行运行。
  6. Mahout 提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout 包含许多实现,包括聚类、分类、推荐过滤、频繁子项挖掘。此外,通过使用 Apache Hadoop 库,Mahout 可以有效地扩展到云中。
  7. Apache Pig 是一个高级过程语言,适合于使用 Hadoop 和 MapReduce 平台来查询大型半结构化数据集。通过允许对分布式数据集进行类似 SQL 的查询,Pig 可以简化 Hadoop 的使用。
  8. Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark 是 UC Berkeley AMP lab 开源的类 Hadoop MapReduce 的通用并行框架,拥有 MapReduce 所具有的优点;但是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS ,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
  9. Tez 是 Apache 最新的支持 DAG 作业的开源计算框架。它允许开发者为最终用户构建性能更快、扩展性更好的应用程序。Hadoop 传统上是一个大量数据批处理平台。但是,有很多用例需要近乎实时的查询处理性能。还有一些工作则不太适合 MapReduce ,例如机器学习。Tez 的目的就是帮助 Hadoop 处理这些用例场景。
  10. ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,是 Google 的 Chubby 一个开源的实现,是 Hadoop 和 Hbase 的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
  11. HBase 是一个分布式的、高可靠性、高性能、面向列、可伸缩的分布式存储系统,该技术来源于 Fay Chang 所撰写的 Google 论文 “ Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统(File System)所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。
HDFS架构
前提和设计目标
  1. 硬件错误
    a) 硬件错误是常态而不是异常。
    b) HDFS 可能由成百上千的服务器所构成,单机故障概率的存在意味着总有一部分服务器不工作的。
    c) 错误检测和快速自动恢复是 HDFS 最核心架构目标。
  2. 流式数据访问
    a) 运行在 HDFS 上的应用需要流式访问它们的数据集。
    b) HDFS 的设计重点是批处理,而不是交互处理。是高吞吐量而不是低延迟。
    c) 为了提高数据的吞吐量,在关键方面修改 POSIX 的语义。
  3. 大规模数据集
    a) HDFS 上的一个典型文件大小一般都在 G 字节至 T 字节。TB PB ZB
    b) HDFS 支持大文件存储。
    c) 单一 HDFS 实例能支撑数以千万计的文件。
  4. 简单的一致性模型
    a) HDFS 应用遵循 “ 一次写入多次读取 ” 的文件访问模型。
    b) 简化了数据一致性问题,并且使高吞吐量的数据访问成为可能。
    c) Map/Reduce 应用或者网络爬虫应用都非常适合这个模型。
  5. 移动计算比移动数据更划算
    a) 降低网络阻塞的影响,提高系统数据的吞吐量。
    b) 将计算程序发送到数据所在的主机,比 GB 级别 TB 级别的数据移动更便捷。
  6. 异构软硬件平台间的可移植性
    a) HDFS 在设计的时候就考虑到平台的可移植性。
    b) 这种特性方便了 HDFS 作为大规模数据应用平台的推广。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值