大数据简介
定义
大数据是指无法在一定时间范围内用常规软件工具进行处理和分析的数据集合,需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能的海量、高增长率和多样性的信息资产
特点
早期的4V:
- Volume:巨量的数据(采集、存储和计算的数据量都非常大)GB、TB、PB、EB、ZB、YB、BB、NB、DB
- Variety:多样性(数据的形式和来源多样性,包括结构化数据、半结构化数据、非结构化数据,例如网络日志、音频、视频、图片等数据)
- Value:低价值(数据量大,但是价值低。很多都是无用的数据。)
- Velocity:高速(数据的创建、存储、分析都要求被高速处理。比例电商个人推荐)
后来的5V:
- Veracity :真实(确保数据的真实,才能保证分析的结果正确)
应用场景
- 仓储物流(智能调拨,货总在离消费者最近的地方)
- 电商零售(啤酒和纸尿裤的案例、个人推荐、双十一实时销售大屏)
- 汽车(无人驾驶汽车)
- 电信(针对不同的人群推出不同的套餐)
- 生物医学(解读DNA)
- 人工智能(阿尔法狗)
- 智慧城市等
发展趋势
- 15年提出 实施大数据战略,重要的发展机遇
- 17年19大报告明确指出,同年,25所高校成功申请开设大数据课程
- 2020年再次强调
- 大数据属于高薪行业,大牛少,升职压力小
- 需求大,薪水高
职业发展路线
目前大数据高、中、低档次的人才都很缺。
从职业来看:大数据开发、挖掘、算法、架构。
从级别来看:工程师、高级工程师、架构师、科学家。
大数据相关岗位很多:ETL工程师,数据仓库工程师、实时流处理工程师、用户画像工程师、数据分析师、数据挖掘工程师、大数据开发工程师、大数据产品经理、可视化工程师、爬虫工程师、大数据运营经理、大数据架构师、数据科学家
Hadoop简介
定义
Hadoop是一个适合大数据的分布式存储和计算平台
广义上讲Hadoop代表大数据的一个技术生态圈,例如:HDFS分布式文件存储)、MapReduce分布式离线计算、Hive数据仓库、HBase海量劣势非关系型数据库、Flume数据采集工具、SqooqETL工具、Kafka高吞吐消息中间件等
发展历史
- Hadoop起源于Nutch,创始人Doug Cutting,Nutch是一个开源Java实现的搜索引擎。
- Google的三篇论文 GFS:谷歌的分布式文件存储系统;MapReduce:google的分布式计算框架;BigTable:大型分布式数据库,演变关系:GFS->HDFS,Google MapReduce->MapReduce,BigTable->Hbase
- 2005年,Hadoop作为Lucene的子项目Nuthc的一部分引入Apache
- 2006年,Hadoop从Nutch剥离出来独立
- 2008年,Hadoop已经成为Apache顶级项目
Hadoop的名字来源于Hadoop支付Doug Cutting儿子的毛绒玩具象。
Hadoop的特点
- 扩容能力:Hadoop是计算机集群内分配数据并完成计算任务,集群可以方便扩展到很多节点
- 低成本:Hadoop通过普通廉价的服务器集群分发及处理数据,所以成本低
- 高效率: 可以在节点之间动态并行的移动数据
- 可靠性:自动维护数据的多份复制(副本),并且任务失败能自动重新部署计算任务
发行版
- Apache Hadoop 原始版本
- 软件收费版本ClouderaManager(CDH)--生产环境使用
- Hortonworks版本(HDP)
版本号变更
0.x:Hadoop最早的一个开源版本,在此基础上有了1.x和2.x
1.x:主要修复1.x的一下bug
2.x:架构产生重大变化,引入了yarn平台等许多新特性
3.x:EC技术、Yarn的时间轴服务等新特性
优劣势
Hadoop的优点
- Hadoop具有存储和处理数据能力的可靠性
- Hadoop通过可用的计算机集群分配数据。完成存储计算任务,集群方便扩展,具有扩展性
- Hadoop能够在节点之间动态移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性
- Hadoop能够自动保存数据的多个副本,具有容错性
Hadoop的缺点
- Hadoop不使用低延迟数据访问(无法快速的返回结果)
- 不能高效的存储大量小文件(大量的小文件会浪费NameNode的内存)
- 不支持并发写入并任意修改文件
Hadoop的重要组成
HDFS(Hadoop Distribute File System)
![b05021fc84850db5c912276e11b667ba.jpeg](https://i-blog.csdnimg.cn/blog_migrate/59c8240eeb668395b4d693d75d7169c6.jpeg)
HDFS:
- NameNode:Master角色 ,管理和维护元数据,存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
- DataNode:slave角色,本地文件系统存储文件块数据,以及块数据的校验。
- SecondaryNameNode(2nn):辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序, 每隔一段时间获取HDFS元数据快照。
MapReduce:一个分布式离线并行计算框架
分而治之思想:
![13318fd8c8c324c7e46a94982fdc9be5.jpeg](https://i-blog.csdnimg.cn/blog_migrate/f1322cfa527a1b39c1aa92fa5d05611f.jpeg)
- Map阶段:每个节点负责一部分数据的计算,每个节点得到部分结果。
- Reduce阶段:把之前Map阶段输出结果进行汇总得到最终结果。
Yarn:作业调度与集群资源管理的框架
计算资源协调
![2adb6deb25f6e3b6b89181d30a43581a.jpeg](https://i-blog.csdnimg.cn/blog_migrate/8c580fe59f8c690dd3ff8ab721360f02.jpeg)
Resource Manager 相当于Master角色,与客户端交互,处理客户端请求,监控NodeManager角色,Node Manager相当于Slave角色。Container真正负责运行一个Task,可以理解为一个虚拟资源集合。AppMaster:为应用申请资源,任务监控、容错。
Yarn中有如下几个主要角色,同样,既是角色名、也是进程名,也代指所在计算机节点名称。
- ResourceManager(rm):处理客户端请求,启动、监控ApplicationMaster。监控NodeManager、资源分配与调度
- NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令,处理来之ApplicationManager的命令
- ApplicationMaster(am):数据切分、为应用程序申请资源,并分配内部任务、任务监控与容错。
- Containeer:对于任务运行环境的抽象,封装了CPU、内存等多维度资源以及环境变量、启动命令等任务运行相关的信息。
ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员
Common
支持其他模块的工具模块(configuration、RPC、序列化机制、日志操作)