大数据基础
大数据基础
前言
什么是大数据?
二、什么是大数据分析?
三、关系数据库和数据仓库
四、开源大数据平台Hadoop
1. hadoop的简介
2. HDFS
3. Mapreduce
4. Hbase
5. Spark
6. Zookeeper
7. Flume
8. Oozie
9. Yarn
10. Pig
11. MPP
前言
大数据已经渗透到各行各业,无论是政府、金融、医疗、快速消费品、餐饮、零售、汽车、制造、新兴产业和传统产业都在探索、尝试、整合和创新数字化和智能化的道路上。特别是在互联网时代,企业积累了大量的数据信息。如何将数据资源转化为数据资产,从海量数据中挖掘出更高的数据价值,实现可持续的业务增长,是当今时代许多企业面临的最重要的课题之一。为了克服这一问题,企业必须在相关领域招聘大量人才,大数据分析能力是这些人才必备的看家技能。
大数据分析有什么用?对于中层领导来说,它可以帮助看到业务状况、用户行为、市场变化、关键环节和增长引擎,从而提高用户运营效率和制定高质量的营销策略。对于高层领导来说,它可以帮助看透业务规律,预测未来趋势,做出企业的战略决策。
作为一个跨行业的产品人,我希望通过学习大数据分析的技术、思维和方法,增强对市场和业务的洞察力,帮助做出更好的决策。并考虑数据分析师的转型。
以下是参加一些课程培训后做的课程笔记,以备日后复习。如果有些内容不当,请联系我删除或调整。非常感谢。
什么是大数据?
定义大数据:
- 常规软件工具无法在可承受的时间范围内捕获、管理和处理数据集。
- 新的处理模式需要更强的决策能力、洞察力、流程优化能力、高增长率和多样化的信息资产。
大数据处理思路:
- 将问题对于许多可以简单解决的小问题。逐一解决小问题。
云计算与大数据:
- 云计算提供存储和计算,大数据是运行在其上的。
大数据的生成与发展:
- 1663年,John Graunt 黑死病传播与老鼠有关,黑死病预警
- 1865年,Henry Furnese 手机分析竞争对手的商业活动,第一次数据分析的商业应用,
- 1880年,Herman Hollerith美国人口普查局工程师打孔卡制表机缩短工作时间,ibm前身
- 2005年,hadoop创建开源框架可以处理语音视频的非结构化数据
- 2013年,阿里云成为世界上第一个向外界提供5k公司具有云计算服务能力
- ,spark, storm, flink成为apache开源项目,逐步投入应用。
大数据的特:4V
- 体量巨大,pb-eb级数量
- 种类繁多。结构、非结构化数据、来源等
- 价值密度低。从大量数据中找到有价值的数据。
- 处理速度快,秒级给出结果
大数据在城市治理中的应用:
- 联通信号灯通过数据感知城市交通状况,减少交通时间,自动报警事故,提高执法效率。
二、什么是大数据分析?
的概念:
- 数据分析是收集、整理、、整理、加工、分析数据,提炼的过程。
- 大数据分析旨在收集大量多样化的数据。
- 大数据分析过程:
- 需求分析,明确目的
- 数据收集、处理
- 数据分析,显示
- 分析报告,提炼价值
大数据分析方法分类:
- 分析:发生了什么?
- 探索分布、数据可视化
- 指标:总指标、相对指标、平均指标
- 分析:为什么会发生?
- 钻取数据核心,分离混乱信息
- 分析:可能发生什么?
- 算法确保历史模型能够预测特定的结果,并自动生成决定
- 分析:下一步该怎么办?
- 根据测试结果选择最佳行为和策略,运用先进的分析技术帮助决策
大数据分析
- 数据
- 出现原始数据进行、或者
- :
- 箱线图、turkey's test检验是存在,可以删除、当作缺失值、忽略
- 统计值填充、固定值填充、最接近记录填充、模型拟合填充、插值填充
- 删除
- 缺失值处理
- 数据
- 单硬盘存储---> 磁盘阵列(raid)---> 分布式存储(多台机器基于网络连接储存数据)
- 数据
- 从单机计算进入集群计算
- 批量计算:
- 数据批量装载,外界发起计算请求,每次计算一批。
- 特点:批量、高延时、主动触发计算。
- 使用场景:离线计算场景。
- 工具:sql,hadoop(mapreduce,hive sql, spark),阿里云maxcompute+dataworks (mapreduce, maxcompute sql,graph)
- 流式计算:
- 计算作业运行等待,数据流到计算作业触发计算,一次计算一条数据。
- 特点:持续、低延时、事件触发计算。
- 使用场景:实时性要求高的场景。
- 工具:apache storm,spark streaming, flink
- 数据
- 利用计算机图形学和图像处理技术,将数据转换为图形或者图像在屏幕上显示出来进行交互处理的理论方法和技术。借助图形化手段,清晰有效地传达与沟通信息。
三、关系型数据库与数据仓库
关系型数据库
- 1970年IBM Edgar Codd发表著名跨时代论文,开启关系型数据库的时代。
- 数据库:存储数据;
- 数据仓库:分析数据;
- 数据库引擎:甲骨文oracle, mysql, sql server, ibm, postgresql
- 数据仓库:分析数据;
- 数据库:存储数据;
数据库系统构成:
- 运行环境、数据库、数据库管理系统、用户
数据库设计的三范式:
- 原子性(不重复每一列都是不可分割的数据项)
- 唯一性(主键)
- 独立性
五大约束:
- 主键约束
- 外关键字约束
- 唯一性约束
- 检查约束(域)
- 缺省约束(默认值)
数据仓库:
- 面向的、的、随着的、用于支持的不可更新的数据集合
数据仓库的特征:
- 面向主题:与主题相关的数据
- 集成:从不同的数据源采集数据到同一个数据源,一致命名约定、格式、编码结构。
- 随时间变化:关键数据隐式、显示地基于时间变化,可以研究趋势和变化。
- 不可改变:只读,定期刷新。
数据仓库模型:
- 事实表+维度表的关系
- 星型模型:以事实表为核心,维度表围绕核心星星形分布。维度表只和事实表关联
- 雪花型模型:维度表可以关联子维度表
数据仓库的系统结构通常包括四个层次,分别是
- 数据源
- 数据的存储与管理
- 联机分析处理服务器
- 前端工具
etl:将分散凌乱标准不同的数据整合
- 抽取:可能也有清洗转换,抽取到ods
- 转化:清洗。可以使用sql,etl工具,或者两者结合
- 加载:写道数据仓库中
- 在线交易处理系统Oltp
- 事务处理,,数据库的应用
- 在线分析处理系统Olap
- 分析处理,,数据仓库的应用
NoSQL数据库
- 键值型数据库key-value : 频繁读写,简单数据模型的应用
- 文档数据库:灵活性设计,适合存储不同的属性和大量数据,例如适合后台频繁读写的网站管理数据类型和变量属性,比如产品跟踪元数据的变量类型使用jason结构应用,类似结构套结构等非规范化数据应用
- 列族数据库:大量数据,保证读取和写入的高性能高可用
- 图形数据库:网络实体链接
四、开源大数据平台Hadoop
1. hadoop的简介
- 在计算机硬件的集群上存储数据、运行应用程序的开源的。
- 特性:
- 高可靠性;高扩展性;高效性;高容错性(自动多个副本);低成本;
- 生态组成
-
- hdfs和common辅助工具相同,2.x新增了yarn 资源调度,mapreduce仅负责计算了。
- 1.x里mapreduce既要负责计算也要负责资源调度。
2. HDFS
hadoop distributed file system
- 适合的场景,。适合做数据分析,不适合做网盘应用。
- hdfs只允许一个文件有一个写入者,不支持并发写入和文件随机修改。只能做追加操作。访问操作。不适合大量小文件的存储。
- 是抽象系统的一种实现。
- 文件的存储和管理,典型大小为GB~tb级别,甚至PB级别。
- 架构,除了低成本,还适合海量数据存储,适合,。
- 理论存储上限无穷大,实际存储时不会占过多扇区空间
- 数据块(每个块512字节,新版是128M,老的是64M),”分类书籍整箱“
- 寻址时间为传输时间的1%,则为最佳状态。目前磁盘普遍100m/s。块的大小等于*传输时间。块太小,会增加寻址时间,块太大会增加磁盘传输数据时间导致处理非常慢。
-
- 文件切片;与namenode交互获得文件位置信息;与datanode交互读取或者写入数据;提供命令来管理hdfs,比如namenode格式化;通过命令访问hdfs,对其增删改查;
- 常用命令操作:
- Ls 显示目录信息; mkdir 创建目录
- cd.切换目录
- 管理命名系统,
- 记录各个块所在数据节点信息向datanode发指令;
- namenode可以有一个standby的namenode,只有一个namenode active,当网速/故障状态时就会启用standby的namenode;standby时是可作为datanode的;
- 第二个namenode可以定期合并fsimage和edits并推送给namenode
- 第二个namenode不是在一个挂掉时马上替换namenode提供服务,而是辅助恢复。
- metadata元数据采用元数据镜像文件(fsimage)+日志文件(edits)的备份机制
- datanode根据namenode指令进行存储检查;datanode有备份,如果出错可以查备份;
- 为了处理节点故障,通常备份3个副本,分别
- 第一块:在本地的HDFS目录下存储一个Block。
- 第二块:不同机架的某一个DataNode上存储一个Block。
- 第三块:在该机器的同一个机架下的某台机器上存储最后一个Block。
- HDFS 小文件弊端解决:
- 小文件占用namenode空间,索引文件过大使得索引速度变慢
- 合并小文件再上传hdfs
- 在业务处理前,在hdfs上用mapreduce对小文件合并
- mapreduce处理时采用combine text input format提高效率
- jvm重用
-
3. Mapreduce
-
:
- 用于大规模数据集的并行运算的。自动完成计算任务并行处理,自动分配任务、处理结果等。
- Map (映射)+ Reduce (化简归约)
- 分布式程序,运行在大规模计算集群上
- 不擅长实时计算,不擅长流式计算(输入数据集是静态的),不擅长dag计算(多个应用程序存在依赖关系,每个mapreduce作业的输出结果都会写入到磁盘,造成大量的磁盘IO,导致性能低下)
- 一个mapreduce编程模型只有一个map和一个reduce阶段。
- 一个mapreduce程序在分布式运行时,有三个实例进程。
- Mrappmaster: 负责整个程序的过程调度及状态协调
- Maptask:负责map阶段的整个数据处理流程
- reducetask:负责reduce阶段的整个数据处理流程
- mapreduce跑得慢的原因:
- 计算机性能:cpu, 内存,磁盘健康,网络
- I/O操作优化:数据倾斜,mapresuce数设置不合理, map运行时间太长,导致reduce等待过久,小文件过多,大量的不可分块超大文件,spill次数多,merge次数多
- mapreduce优化方法
- 数据传输:合并小文件,用combinetext
- Map阶段:减少溢写spill次数,减少合并次数,
- Reduce阶段:合理设置map,reduce数,设置共存,规避使用reduce,合理设置reduce buffer,
- IO阶段:采用数据压缩的方式,减少网络IO时间,使用sequencefile 二进制文件,
- 数据倾斜:抽样和范围分区,combine
- 基于hadoop的,用来进行数据提取、转化、加载,是一种可以存储、查询、分析存储在hadoop中的大规模数据的机制。
- 可以将语句转化为在hadoop执行。
- hive数据仓库工具将结构化数据映射为一张数据表,基于静态批处理hadoop基础上,通常用于,百兆级别数据查询可能分钟级别延时。
- HIVE组件:用户接口(webui可以执行多个查询连接远程服务器,jdbc/odbc,cli命令行);元数据存储;解释器、编辑器、优化器、执行器;
- hive中的,元数据库是在hbase/mysql
- hbase是开发在hdfs上的动态数据库。是谷歌bigtable的开源实现,主要用来存储非结构化和半结构化的松散数据,可实现数据存储+并行计算
- 读取列速度快,不需要读取整行,而且hbase可通过添加节点实现伸缩。
- 存的是键值对
5. Spark
- 是uc berkeley AMP 实验室,在hadoop基础上做了改良,支持java,python,sql等。速度比mapreduce快100倍。
- 擅长,交互式查询、流式处理等。
- 它将一些数据存储在了内存中,不需要反复读写。mapreduce在shuffle前排序很久,而它基于hash的分布式聚合,只在需要时做排序。调度开销也比较小,节约计算资源。
- app根据程序操作解析为几个jobs,然后划分不同stage,根据partition分成不同的task。
- 是spark核心,弹性数据分布式数据集。从hdfs里读取数据,加载到rdd存储,所有数据会被抽象为rdd。
- Spark生态可以分成伯克利数据分析栈BDAS,在核心框架spark基础上,提供四个范畴的计算框架:
6. Zookeeper
- 分布式服务框架,是apacheHadoop的子项目,主要解决分布式应用常见的数据管理问题。
- 分布式,可以搭在机器节点上(通常布3个zookeeper),保证高可用性(当一个挂掉,激活另一个standby的)
- leader的zookeeper会监测其他server里任务运行状态,检测到修改或者节点变化时可以同步所有配置
7. Flume
- 产生、传输、处理、传入目标路径,抽象为数据流,
8. Oozie
- 工作流调度系统,可以管理java、mapreduce等多个任务流。
9. Yarn
- 任务,负责为运算程序提供服务器运算资源,相当于,mapreduce是它上面的应用程序。
- 组成:
-
- 处理客户端请求,监控nodemanager,启动或者监控application master,
- Application master
- 负责数据的切分,为应用程序申请资源并分配内部的,任务的监控和容错
-
- 管理的资源,处理来自resource manager的命令,处理来自application master的命令
- Container
- 资源抽象,封装了某个节点上的多维度资源,如 ,磁盘,网络
-
10. Pig
- 跟mapreduce一样所有写都是。不支持随机读和几十毫秒的查询,不支持针对小部分数据的随机写。
- 它是为数据批处理而设计的,如果想执行的查询只涉及一个大型数据集的一小部分数据,Pig的实现不会很好,因为它要扫描整个数据集或其中很大一部分
- 是基于的大数据分析平台,hadoop,
- 它提供语言sql like 叫pig latin,编译器可以把类sql数据转化为经过优化处理的mapreduce计算,为复杂海量的数据计算提供了简单操作和编程接口。
- Pig包括两部分:一是用于描述数据流的语言,称为Pig Latin;二是用于运行Pig Latin程序的执行环境。
11. MPP
- 在数据库集群中,首先每个节点都有独立的磁盘存储系统和内存系统,其次业务数据根据数据库模型和应用特点划分到各个节点上,MPP是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果。
- 每个节点内的CPU不能访问另一个节点的内存,节点之间的信息交互是通过实现的,这个过程称为
- MPP:
- 任务并行执行;
- 数据分布式存储(本地化);
- 分布式计算;
- 高并发,单个节点并发能力大于300用户;
- 横向扩展,支持集群节点的扩容;
- Shared Nothing(完全无共享)架构。
- 批处理架构(如 MapReduce)与MPP架构的异同
- 相同:批处理架构与MPP架构都是分布式并行处理,将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果
- 不同:执行一个任务,首先这个任务会被分成多个task执行,对于MapReduce来说,这些tasks被随机的分配在空闲的Executor上;而对于MPP架构的引擎来说,每个处理数据的task被绑定到持有该数据切片的指定Executor上
非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。