开始写之前先思考一个问题: 大数据技术解决的是什么问题?文末给出答案。
大数据简介
大数据的定义
大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
大数据的特点
大数据的特点可以用 IBM 曾经提出的 “5V” 来描述,如下:
-
大量
采集、存储和计算的数据量都非常大。
计算机存储单位一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB、NB、DB来表示,它们之间的关系是
1GB = 1024 MB
1TB = 1024 GB
1PB = 1024 TB
1EB = 1024 PB
1ZB = 1024 EB
1YB = 1024 ZB
1BB = 1024 YB
1NB = 1024 BB
1DB = 1024 NB
以PB为例,PB级数据量有多大?是怎样的一个概念?
假如手机播放MP3的速度为平均每分钟1MB,而1首歌曲的平均时长为4分钟,那么1PB存量的歌曲可以连续播放2000年。
1PB 也相当于50%的全美学术研究图书馆藏书咨询内容。
(1)1986年,全球只有0.02EB也就是约21000TB的数据量
(2)2007年,全球就是280EB也就是约300000000TB的数据量,翻了14000倍
(3)近些年,由于移动互联网及物联网的出现,各种终端设备的接入,各种业务形式的普
及,平均每40个月,全球的数据量就会翻倍!2012年,每天会产生2.5EB的数据量
(4)基于IDC的报告预测,从2013年到2020年,全球数据量会从4.4ZB猛增到44ZB!而到了
2025年,全球会有163ZB的数据量!
全球的数据量已经大到爆了!而传统的关系型数据库根本处理不了如此海量的数据! -
高速
在大数据时代,数据的创建、存储、分析都要求被高速处理,比如电商网站的个性化推荐尽可能要求实时完成推荐,这也是大数据区别于传统数据挖掘的显著特征。 -
多样
数据形式和来源多样化。包括结构化、半结构化和非结构化数据,具体表现为网络日志、音频、视频、图片、地理位置信息等等,多类型的数据对数据的处理能力提出了更高的要求。 -
真实
确保数据的真实性,才能保证数据分析的正确性 -
低价值
数据价值密度相对较低,或者说是浪里淘沙却又弥足珍贵。互联网发展催生了大量数据,信息海量,但价值密度较低,如何结合业务逻辑并通过强大的机器算法来挖掘数据价值,是大数据时代最需要解决的问题,也是一个有难度的课题。
大数据的应用场景
随着大数据的发展,大数据技术已经广泛应用在众多行业,比如仓储物流、电商零售、汽车、电信、生物医学、人工智能、智慧城市等等领域,包括在疫情防控战中,大数据技术也发挥了重要的作用。
-
仓储物流
大数据技术驱动了仓储物流领域的智能化发展,以苏宁为例,苏宁物流可在全国的各级仓库间实现智能分仓、就近备货和预测式调拨,实现”客户需要的商品就在离客户最近的配送中心“。
-
电商零售
-
零售业 ” 啤酒+纸尿裤 “ 案例
-
个性推荐
-
” 双11购物节 “ 实时销售额大屏
-
-
汽车
利用了大数据和物联网技术的无人驾驶汽车,在不远的未来将走入我们的日常生活
-
电信
移动联通根据用户年龄、职业、消费情况,分析统计哪种套餐适合哪类人群,对市场人群精准定制。
-
生物医学
大数据可以帮助我们实现流行病预测、智慧医疗、健康管理,同时还可以帮助我们解读
DNA,了解更多的生命奥秘。比如影像大数据支撑下的早期肺癌支撑平台,基于大量病例数据样本,制定早期肺癌高危人群预警指标。
-
人工智能
-
智慧城市
大数据有效支撑智慧城市发展,成为城市的”数据大脑“。比如,在智慧城市建设上,杭州始终走在全国前列。如覆盖面广的移动支付、新颖的在线医疗模式、创新的物流运输模式,都受到较大关注。2016年,杭州被《中国新型智慧城市》白皮书评为“中国最智慧的城市”。
大数据的价值,远远不止于此,大数据对各行各业的渗透,大大推动了社会生产和生活,未来必将产生重大而深远的影响。
大数据的发展趋势及职业路线
大数据发展趋势
-
2015年党的十八届五中全会提出“实施国家大数据战略”,国务院印发《促进大数据发展行动纲要》,大数据技术和应用处于创新突破期,国内市场需求处于爆发期,我国大数据产业面临重要的发展机遇。
-
2017年十九大报告明确 “推动互联网、大数据、人工智能和实体经济深度融合”。
-
2020年全国政协十三届三次会议新闻发布会上,更进一步强调:大数据、人工智能、5G是引领未来发展的战略性技术。
-
2021年11月30日上午工业和信息化部召开新闻发布会,介绍“十四五”大数据产业发展规划有关情况
显然,发展大数据是我国的战略性决策,前景自然不言而喻。
-
2017年北京大学、中国人民大学、北京邮电大学等25所高校成功申请开设大数据课程
-
大数据属于高新技术,大牛少,升职竞争小
-
2020年5月6日,人力资源和社会保障部发布《新职业—大数据工程技术人员就业景气现状分析报告》,报告显示:预计2020年中国大数据行业人才需求规模将达210万,2025年前大数据人才需求仍将保持30%~40%的增速,需求总量在2000万人左右
-
在北京大数据开发工程师的平均薪水已经超越 1.5w 直逼2w,而且目前还保持强劲的发展势头
大数据职业发展路线
目前大数据高、中、低三个档次的人才都很缺。 现在我们谈大数据,就像当年谈电商一样,未来前景已经很明确,接下来就是优胜劣汰,竞争上岗。不想当架构师的程序员不是好架构师!但是,大数据发展到现阶段,涉及大数据相关的职业岗位也越来越精细。
从职业发展来看,由大数据开发、挖掘、算法、到架构。从级别来看,从工程师、高级工程师,再到架构师,甚至到科学家。而且,契合不同的行业领域,又有专属于这些行业的岗位衍生,如涉及金融领域的数据分析师等。大数据的相关工作岗位有很多,有数据分析师、数据挖掘工程师、大数据开发工程师、大数据产品经理、可视化工程师、爬虫工程师、大数据运营经理、大数据架构师、数据科学家等等。
从事岗位:ETL工程师,数据仓库工程师,实时流处理工程师,用户画像工程师,数据挖掘,算法工程师,推荐系统工程。
Hadoop简介
什么是Hadoop
Hadoop 是一个适合大数据的分布式存储和计算平台。
如前所述,狭义上说Hadoop就是一个框架平台,广义上讲Hadoop代表大数据的一个技术生态
圈,包括很多其他软件框架
Hadoop的起源
Hadoop 的发展历程可以用如下过程概述:
Nutch —> Google论文(GFS、MapReduce)
—> Hadoop产生
—> 成为Apache顶级项目
—> Cloudera公司成立(Hadoop快速发展)
- Hadoop最早起源于Nutch,Nutch 的创始人是Doug Cutting
Nutch 是一个开源 Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫,但随着抓取网页数量的增加,遇到了严重的可扩展性问题——如何解决数十亿网页的存储和索引问题 - 2003年、2004年谷歌发表的两篇论文为该问题提供了可行的解决方案。GFS,可用于处理海量网页的存储;MapReduce,可用于处理海量网页的索引计算问题。
Google的三篇论文(三驾马车)
GFS:Google的分布式文件系统(Google File System)
MapReduce:Google的分布式计算框架
BigTable:大型分布式数据库
发展演变关系:
GFS —> HDFS
Google MapReduce —> Hadoop MapReduce
BigTable —> HBase - 随后,Google公布了部分GFS和MapReduce思想的细节,Doug Cutting等人用2年的业余时间实现了DFS和MapReduce机制,使Nutch性能飙升。
- 2005年,Hadoop 作为Lucene的子项目Nutch的一部分引入Apache
- 2006年,Hadoop从Nutch剥离出来独立
- 2008年,Hadoop成为Apache的顶级项目
Hadoop这个名字来源于Hadoop之父Doug Cutting儿子的毛绒玩具象
Hadoop的特点
Hadoop的发行版本
目前Hadoop发行版非常多,有Cloudera发行版(CDH)、Hortonworks发行版、华为发行版、
Intel发行版等,所有这些发行版均是基于Apache Hadoop衍生出来的,之所以有这么多的版本,是由Apache Hadoop的开源协议决定的(任何人可以对其进行修改,并作为开源或商业产品发布/销售)。
企业中主要用到的三个版本分别是:Apache Hadoop版本(最原始的,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache Hadoop,简称“CDH”)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”)。
- Apache Hadoop 原始版本 官网地址
优点:拥有全世界的开源贡献,代码更新版本比较快
缺点:版本的升级,版本的维护,以及版本之间的兼容性,学习非常方便
Apache所有软件的下载地址(包括各种历史版本) - 软件收费版本ClouderaManager CDH版本 --生产环境使用,官网地址
Cloudera主要是美国一家大数据公司在Apache开源Hadoop的版本上,通过自己公司内部的各种补丁,实现版本之间的稳定运行,大数据生态圈的各个版本的软件都提供了对应的版本,解决了版本的升级困难,版本兼容性等各种问题,生产环境强烈推荐使用 - 免费开源版本HortonWorks HDP版本–生产环境使用,官网地址
hortonworks主要是雅虎主导Hadoop开发的副总裁,带领二十几个核心成员成立Hortonworks,
核心产品软件HDP(ambari),HDF免费开源,并且提供一整套的web管理界面,供我们可以通过web界面管理我们的集群状态,web管理界面软件HDF网址
Apache Hadoop版本更迭
- 0.x 系列版本:Hadoop当中最早的一个开源版本,在此基础上演变而来的1.x以及2.x的版本
- 1.x 版本系列:Hadoop版本当中的第二代开源版本,主要修复0.x版本的一些bug等
- 2.x 版本系列:架构产生重大变化,引入了yarn平台等许多新特性
- 3.x 版本系列:EC技术、YARN的时间轴服务等新特性
Hadoop的优缺点
- Hadoop的优点
- Hadoop具有存储和处理数据能力的高可靠性。
- Hadoop通过可用的计算机集群分配数据,完成存储和计算任务,这些集群可以方便地扩展到数以千计的节点中,具有高扩展性。
- Hadoop能够在节点之间进行动态地移动数据,并保证各个节点的动态平衡,处理速度非常快,具有高效性。
Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配,具有高容错性。
- Hadoop的缺点
- Hadoop不适用于低延迟数据访问。
- Hadoop不能高效存储大量小文件。
- Hadoop不支持多用户写入并任意修改文件。
Apache Hadoop的重要组成
Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架)+Common模块
Hadoop HDFS
Hadoop Distribute File System :一个高可靠、高吞吐量的分布式文件系统
比如:100T数据存储,“分而治之”
分:拆分–》数据切割,100T数据拆分为10G一个数据块由一个电脑节点存储这个数据块。
数据切割、制作副本、分散储存
图中涉及到几个角色
- NameNode(nn):存储文件的元数据,比如文件名、文件目录结构、文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
- SecondaryNameNode(2nn):辅助NameNode更好的工作,用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据快照。
- DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验
注意:NN,2NN,DN这些既是角色名称,进程名称,代指电脑节点名称!
Hadoop MapReduce
一个分布式的离线并行计算框架
拆解任务、分散处理、汇整结果
MapReduce计算 = Map阶段 + Reduce阶段
- Map阶段就是“分”的阶段,并行处理输入数据;
- Reduce阶段就是“合”的阶段,对Map阶段结果进行汇总;
Hadoop YARN
作业调度与集群资源管理的框架,计算资源协调
Yarn中有如下几个主要角色,同样,既是角色名、也是进程名,也指代所在计算机节点名称。
- ResourceManager(rm):处理客户端请求、启动/监控ApplicationMaster、监控
NodeManager、资源分配与调度; - NodeManager(nm):单个节点上的资源管理、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令;
- ApplicationMaster(am):数据切分、为应用程序申请资源,并分配给内部任务、任务监控与容错。
- Container:对任务运行环境的抽象,封装了CPU、内存等多维资源以及环境变量、启动命令等任务运行相关的信息。
ResourceManager是老大,NodeManager是小弟,ApplicationMaster是计算任务专员。
Hadoop Common
支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)
回答下刚开始提的问题哈
大数据技术解决的主要是海量数据的存储和计算。
Hadoop的广义和狭义之分
- 狭义的Hadoop:指的是一个框架,Hadoop是由三部分组成
- HDFS:分布式文件系统----存储;
- MapReduce:分布式离线计算框架----计算;
- Yarn:资源调度框架
- 广义的Hadoop:广义Hadoop是不仅仅包含Hadoop框架,除了Hadoop框架之外还有一些辅助框架。广义Hadoop指的是一个生态圈。
- Flume:日志数据采集
- Sqoop:关系型数据库数据的采集;
- Hive:深度依赖Hadoop框架完成计算(sql),
- Hbase:大数据领域的数据库(mysql)
- Sqoop:数据的导出