目录
什么是数据
概述:
对人们的行为做的一种记录, 简单来说: 一切皆数据.
目的:
对数据开展分析, 可以帮助人们更好的了解事与物存在的规律.
对海量数据做分析, 从海量数据中提取出有效的价值信息, 实现数据的商业化和价值化,
给企业决策者或者运营人员提供数据支持 或者 分析性报告.
一、大数据的发展
1970年之前, 计算机还都是互相独立的, 即: "单机版"
1970年之后, 计算机开始实现小规模的互联.
1990年及其以后, 开始逐步实现 全球互联, 数据量飞速增长, 有了大数据的概念.
2008年, Apache Hadoop(现称: 社区版Hadoop, 免费的)开源了, 给众多企业提供了分布式存储和计算等技术.
大数据, 主要是三个点:
1. 海量数据的 存储. HDFS, Hbase...
2. 海量数据的 计算. MapReduce, Spark, Flink, Presto...
3. 海量数据的 传输. Sqoop, Flume...
二、大数据的介绍
1.什么是大数据?
狭义上理解: 指的是处理海量数据的技术,
广义上理解: 指的是数据化, 信息化时代的(基础)建设, 以数据为生活赋能, 为社会主义建设添砖加瓦.
1.1大数据的特点是什么?
答案: 5V(大多值快信).
大: 数据的体量比较大, 数据单位从小到大分别是:
bit, byte, kb, mb, gb, tb, pb, eb, zb, yb, bb, nb, db
多: 数据的种类比较繁多.
结构化数据: MySQL的表数据.
半结构化: json字符串, html
非结构化: 图片, 音频, 视频等
值: 数据的价值密度比较 低.
快: 数据的传输速度, 增长速度, 处理速度比较快.
信: 数据的可信赖度比较 高.
2.Apache Hadoop简介
Apache Hadoop简介
它是Hadoop的开源版本, 由 HDFS(存), MapReduce(计算), Yarn(资源调度)三大组件组成.
人: 道格·卡丁(Doug Cutting)
吉祥物: 大象
Hadoop由来
卡大爷早期做了一个爬虫框架叫Nutch(Java写的), 非常好用, 但是遇到了1个问题, 如何来存储 和 计算爬取到的海量网页(数据呢)? 这个时候谷歌的三篇文章给了他灵感, 也被称之为: 大数据的三驾马车.
2003, 谷歌发表GFS, 卡大爷开源, 叫: HDFS(Hadoop Distributed File System)
2004, 谷歌发表MapReduce, 卡大爷开源, 叫: MapReduce
2006, 谷歌发表BigTable, 卡大爷开源, 叫: HBase
Hadoop版本
社区版: 指的是Apache Hadoop, 免费的, 稳定性稍差, 但是更新速度快.
商业版: 指的是 CDH, 星环等, 收费的, 稳定性较好, 但是更新周期相对较慢.
3.集群和分布式介绍
集群 和 分布式解释
集群: 多个人做相同的事儿.
分布式: 多个人做不同的事儿, 然后构成1个整体.
主从模式介绍
1个大哥, 带着一群小弟, 一起干活, Hadoop用的就是这种方式, 例如:
HDFS: 大数据分布式存储架构.
namenode角色: 主节点
SecondaryNameNode角色: 辅助节点
datanode角色: 从节点
MapReduce: 代码级别的, 没有角色划分, 直接通过Python或者Java操作它即可.
Yarn: 统一的资源和任务调度器
ResourceManager角色: 主节点
nodemanager角色: 从节点
主备模式介绍
一群大哥, 1个干活(Active 激活), 其它的监控(StandBy 备用), 宕机就上.
4.Apache Hadoop框架介绍
Apache Hadoop介绍
狭义上理解: 指的是Hadoop软件本身, 有HDFS, MapReduce, Yarn组件组成.
广义上理解: 指的是Hadoop生态圈,包含Hadoop周边所有的技术, 例如: Oozie, Sqoop, Flume...
Apache Hadoop架构
Hadoop2.X以前:
HDFS组件: 负责存储.
MapReduce组件: 负责计算.
Hadoop2.X及其以后:
HDFS组件: 负责存储
Namenode(主节点), SecondaryNameNode(辅助节点), datanode(从节点)
MapReduce(代码级别): 负责计算
Yarn组件: 负责任务接收和资源调度.
ResourceManager(主节点), nodemanager(从节点)
5.MapReduce介绍
它是代码级别的, 是Hadoop架构的一部分, 负责计算的, 采用的是 分而治之 思想.
即: 把大问题拆分成N个小问题, 小问题解决了, 大问题也就解决了.
例如: 计算 1 ~ 1000之间所有的质数和.
可以拆分成3份, 1个算 1~300, 另1个算301~700, 最后1个算 701 ~ 1000, 然后结果汇总即可.
思考: 那是不是所有的场景都可以用分而治之思想解决呢?
答案: 不一定, 看需求. 如果大任务拆分成N个小任务之后, 小任务之间的依赖度比较高, 就不推荐使用.
总结
MapReduce程序所需的 数据源 及 结果数据的存储, 都是由 HDFS 来完成的.
MapReduce程序执行所需的资源等都是由 Yarn来调度的