1.
什么是大数据?4V?
大数据是指无法在一定时间内用常规软件工具对其内容进行抓取、管理和处理的数据集合。
大数据 = “海量数据”+“复杂类型的数据”。
大数据的4V:Volume(大量)、Velocity(高速)、Variety(多样)、Value(价值)。
大数据(big data),或称巨量数据、海量数据;是由数量巨大、结构复杂、类型众多数据构成的数据集合,是基于云计算的数据处理与应用模式,通过数据的集成共享,交叉复用形成的智力资源和知识服务能力。在商业领域指的是所涉及的资料规模巨大到无法透过目前主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。网络上每笔搜索,网站上每一笔交易,敲打键盘,点击鼠标的每一个输入都是数据,整理起来分析排行,不仅仅止于事后被动地了解市场,搜集起来的数据还可以引导开发更大的消费量。
2.
结构化和非结构化数据存储
SQL:
- 结构化存储,固定Schema
- 索引
- 标准化查询语言
- ACID
- 扩展性弱
NoSQL:
- Schema不固定,可以动态改变
- 没有固定查询语言
- 可以扩展到很大规模
- 高容错性
- 一般ACID在一个节点内,最终达到一致
3.
数据单位
8 bit = 1 Byte 一字节
1024 B = 1 KB (KiloByte) 千字节
1024 KB = 1 MB (MegaByte) 兆字节
1024 MB = 1 GB (GigaByte) 吉字节
1024 GB = 1 TB (TeraByte) 太字节
1024 TB = 1 PB (PetaByte) 拍字节
1024 PB = 1 EB (ExaByte) 艾字节
1024 EB = 1 ZB (ZetaByte) 皆字节
1024 ZB = 1 YB (YottaByte) 佑字节
1024 YB = 1BB(Brontobyte)珀字节
1024 BB = 1 NB (NonaByte) 诺字节
1024 NB = 1 DB (DoggaByte)刀字节
4.
工作流程:采集-ETL-分析-显示
数据处理流程
采集与预处理--存储管理--计算模式--分析挖掘--可视化处理
5.
计算模式
大数据计算模式
- 批处理:MapReduce,Spark
- 交互式处理:Shark,Hive
- 流式计算:S4,Storm
- 迭代计算:Twister,Spark
- 图计算:Pregel,Giraph
- 内存计算:Dremel,Redis
(1)交互式数据处理
系统与操作人员以人机对话的方式一 问一答
操作人员提出请求,数据以对话的方式输入,系统便提供相应的数据或提示信息,引导操作人员逐步完成所需的操作,直至获得最后处理结果.
存储在系统中的数据文件能够被及时处理修改,同时 处理结果可以立刻被使用.
(2)批处理
- 最适合于完成大数据批处理的计算模式是MapReduce ,
- MapReduce 是一个单输入、两阶段( Map 和Reduce) 的数据处理过程。
- 对具有简单数据关系、易于划分的大规模数据采用"分而治之"的并行处理思想
- MapReduce 提供了一个统一的并行计算框架,把并行计算所涉及到的诸多系统层细节都交给计算框架去完成,
- 简化了程序员进行并行化程序设计的负担。
(3)流式计算
- 对一定时间窗口内应用系统产生的新数据完成实时的计算,避免造成数据堆积和丢失。
- 在电信、电力、道路监控、互联网日志处理等得到广泛应用。
- 数据运动,计算不动,不同的运算节点常常绑定在不同的服务器上
(4)图计算
- 图由于自身的结构特征,可以很好地表示事物之间的关系
- 随着图中节点和边数的增多(达到几千万甚至上亿数), 图数据处理的复杂性增加
- 图的存储和处理都十分困难
- 较为典型的系统包括Google 公司的Pregel 、Facebook Giraph 、Spark 下的GraphX
6.简介分布式系统?
简单来说就是一群独立计算机集合共同对外提供服务,但是对于系统的用户来说,就像是一台计算机在提供服务一样。分布式意味着可以采用更多的普通计算机(相对于昂贵的大型机)组成分布式集群对外提供服务。计算机越多,CPU、内存、存储资源等也就越多,能够处理的并发访问量也就越大。
从分布式系统的概念中我们知道,各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。
7.CDH
目前而言,不收费的Hadoop版本主要有三个(均是国外厂商),分别是:Apache(最原始的版本,所有发行版均基于这个版本进行改进)、Cloudera版本(Cloudera’s Distribution Including Apache hadoop,简称CDH)、Hortonworks版本(Hortonworks Data Platform,简称“HDP”),对于国内而言,绝大多数选择CDH版本,CDH和Apache版本主要区别如下:
(1) CDH对Hadoop版本的划分非常清晰,只有两个系列的版本,分别是cdh3和cdh4,分别对应第一代Hadoop(Hadoop 1.0)和第二代Hadoop(Hadoop 2.0),相比而言,Apache版本则混乱得多;比Apache hadoop在兼容性,安全性,稳定性上有增强。
(2)CDH3版本是基于Apache hadoop 0.20.2改进的,并融入了最新的patch,CDH4版本是基于Apache hadoop 2.X改进的,CDH总是并应用了最新Bug修复或者Feature的Patch,并比Apache hadoop同功能版本提早发布,更新速度比Apache官方快。
(3)安全 CDH支持Kerberos安全认证,apache hadoop则使用简陋的用户名匹配认证
(4)CDH文档清晰,很多采用Apache版本的用户都会阅读CDH提供的文档,包括安装文档、升级文档等。
(5)CDH支持Yum/Apt包,Tar包,RPM包,Cloudera Manager四种方式安装,Apache hadoop只支持Tar包安装。
注:CDH使用推荐的Yum/Apt包安装时,有以下几个好处:
- 联网安装、升级,非常方便
- 自动下载依赖软件包
- Hadoop生态系统包自动匹配,不需要你寻找与当前Hadoop匹配的Hbase,Flume,Hive等软件,Yum/Apt会根据当前安装Hadoop版本自动寻找匹配版本的软件包,并保证兼容性。
- 自动创建相关目录并软链到合适的地方(如conf和logs等目录);自动创建hdfs, mapred用户,hdfs用户是HDFS的最高权限用户,mapred用户则负责mapreduce执行过程中相关目录的权限。
8.CAP原理
- Consistency(一致性), 数据一致更新,所有数据变动都是同步的
- Availability(可用性), 好的响应性能
- Partition tolerance(分区容错性) 可靠性
9.hadoop技术栈 hdfs,mapreduce,hive,hbase,sqoop
(1)hdfs(hoodoop distributed file system)
(2)mapreduce
(3)hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行
(4)hbase是一个分布式的、面向列的开源数据库
(5)sqoop一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中
10.Hadoop介绍
Hadoop是一个由Apache所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。可以充分利用集群的威力进行高速运算和存储。
11.Hadoop起源
- Hadoop这个开源产品的出现打破了对数据力量的压制
- Hadoop源于Nutch这个小型的搜索引擎项目。而Nutch则出自于著名的开源搜索引擎解决方案Lucene, Lucene则来源于对Google的学习模仿。
在Hadoop身上有着明显的Google的影子 :
- HDFS是GFS的山寨版
- Map-Reduce的思想来源于Goolge对Page rank的计算方法
- HBase模仿的是Big Table
- Zookeeper则学习了Chubby
12.Hadoop基本内容
- Hadoop mapreduce
- Hadoop distributed file system
- Hadoop common 工具程序和子项目
13.
Hadoop的核心-MapReduce
- 基于Map/Reduce技术,可以对大量数据进行分布式处理的软件框架
- Google的网络搜索引擎在得益于算法发挥作用的同时,MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背后的最具影响力的“发动机”。
14.HDFS
对于分布式计算,每个服务器必须具备对数据的访问能力,这就是HDFS(Hadoop Distributed File System)所起到的作用。
15.HDFS与MapReduce的结合是强大的
在处理大数据的过程中,当Hadoop集群中的服务器出现错误时,整个计算过程并不会终止。
HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。
HDFS对存储的数据格式并无苛刻的要求,数据可以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。
开发人员编写代码责任是使数据有意义。Hadoop MapReduce级的编程利用Java APIs,并可手动加载数据文件到HDFS之中。