大数据指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
目前主要解决海量数据的存储和海量数据的分析计算问题。
按顺序给出数据存储单位:bit、Byte、KB、MB、GB、TB、PB、EB、ZB、YB、BB、NB、DB。
1Byte = 8bit 1K = 1024Byte 1MB = 1024K
1G = 1024M 1T = 1024G 1P = 1024T
截至目前,人类生产的所有印刷材料的数据量是200PB,而历史上全人类总共说过的话的数据量大约是5EB。当前,典型个人计算机硬盘的容量为TB量级,而一些大企业的数据量已经接近EB量级。
这是大数据区分于传统数据挖掘的最显著特征。根据IDC的“数字宇宙”的报告,预计到2020年,全球数据使用量将达到35.2ZB。在如此海量的数据面前,处理数据的效率就是企业的生命。
2018年双十一天猫成交额高达2135亿元!
这种类型的多样性也让数据被分为结构化数据和非结构化数据。相对于以往便于存储的以数据库/文本为主的结构化数据,非结构化数据越来越多,包括网络日志、音频、视频、图片、地理位置信息等,这些多类型的数据对数据的处理能力提出了更高要求。
结构化数据:订单数据,数据表数据
非结构化数据:日志数据
价值密度的高低与数据总量的大小成反比。比如,一天的数据信息,我们只关注晚上7点至8点产生的数据。
如何快速对有价值数据“提纯”成为目前大数据背景下待解决的难题。
1)Hadoop 是一个由 Apache 基金会所开发的分布式系统基础架构
2)主要解决,海量数据的存储和海量数据的分析计算问题。
3)广义上来说,HADOOP 通常是指一个更广泛的概念——HADOOP 生态圈
1)2001 年年底成为 apache 基金会的一个子项目
2)对于大数量的场景,Lucene 面对与 Google 同样的困难
3)学习和模仿 Google 解决这些问题的办法 :微型版 Nutch
4)可以说 Google 是 hadoop 的思想之源(Google 在大数据方面的三篇论文)
GFS —>HDFS
Map-Reduce —>MR
BigTable —>Hbase
5)2003-2004 年,Google 公开了部分 GFS 和 Mapreduce 思想的细节,以此为基础 Doug Cutting
等人用了 2 年业余时间实现了 DFS 和 Mapreduce 机制,使 Nutch 性能飙升
6)2005 年 Hadoop 作为 Lucene 的子项目 Nutch的一部分正式引入 Apache 基金会。2006 年
3 月份,Map-Reduce 和 Nutch Distributed File System (NDFS) 分别被纳入称为 Hadoop 的项目中
7)名字来源于 Doug Cutting 儿子的玩具大象
8)Hadoop 就此诞生并迅速发展,标志这云计算时代来临
Hadoop 三大发行版本: Apache、Cloudera、Hortonworks。
Apache 版本最原始(最基础)的版本,对于入门学习最好。
Cloudera 在大型互联网企业中用的较多(商用)。
Hortonworks 文档较好。
官网地址:http://hadoop.apache.org/releases.html
下载地址:https://archive.apache.org/dist/hadoop/common/
官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html
下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/
官网地址:https://hortonworks.com/products/data-center/hdp/
下载地址:https://hortonworks.com/downloads/#data-platform
1)高可靠性:因为 Hadoop 假设计算元素和存储会出现故障,因为它维护多个工作数据副本,在出现故障时可以对失败的节点重新分布处理。
2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。
3)高效性:在 MapReduce 的思想下,Hadoop 是并行工作的,以加快任务处理速度。
4)高容错性:自动保存多份副本数据,并且能够自动将失败的任务重新分配。
1)Hadoop HDFS:一个高可靠、高吞吐量的分布式文件系统。
2)Hadoop MapReduce:一个分布式的离线并行计算框架。
3)Hadoop YARN:作业调度与集群资源管理的框架。
4)Hadoop Common:支持其他模块的工具模块(Configuration、RPC、序列化机制、日志操作)。
NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
DataNode(dn):在本地文件系统存储文件块数据,以及块数据的校验和。
Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。
举个例子我们有一本书, NameNode相当于书的目录,目录记录了数据信息所在的地方。DataNode就是实际存储数据的地方,也就是目录(NameNode)会指向数据(DataNode)
MapReduce将计算过程分为两个阶段
举个例子,比如我们需要分析一段数据,整段数据是一行一行构成的,假如第一行的数据进来,我们需要对数据进行分割,来筛选哪些数据是我们需要的,这个就是Map做的阶段 。最后我们分割完了,哪些是我们用的,哪些是我们不用的,然后我们需要用的进行统计。这个阶段就是在Reduce阶段进行统计合并的。
ResourceManager(总调度):处理客户请求,启动/监控ApplicationMaster,监控NodeManager,资源分配与调度
NodeManager(单节点调度): 单个节点上的资源管理,处理来自ResourceManager的命令,处理来自ApplicationMaster的命令
ApplicationMaster(管理一个job):数据切分,为应用程序申请资源,并分配给内部任务, 任务监控与容错
Container(容器):对任务运行环境的抽象,封装了CPU,内存等多维资源以及环境变量,启动命令等任务运行相关的信息