一、大数据介绍
1、为什么使用大数据技术
数据量越来越大,数据分析的实时性越来越强,数据结果应用范围越来越广。(从用户的访问量、量、访问时间、访问频率,市场可以得到很多信息)
2、大数据的定义
数据收集、数据清洗、数据处理就是大数据技术的整个流程。
二、大数据应用领域
1.广告
广告投放 广告策略
2.电信
深度包检测 流失分析 网络质量
3.金融
风险识别(借贷款) 预测(12306买票换乘)
4.能源生物
基因组分析 地质分析
5.安全
入侵检测 图像识别
6.社交游戏
流失分析 社交推荐 使用分析
7.电商零售
推荐系统 交易分析
三、大数据技术处理框架
1、什么是大数据处理框架
处理框架和处理引擎负责对数据系统中的数据进行计算虽然“引擎”和“框架”之间的区别没有什么权威的定义,但大部分时候可以将前者定义为实际负责处理数据操作的组件,后者则可定义为承担类似作用的一系列组件。(ELK日志监控处理框架)
2、大数据处理框架有哪些
①仅批处理框架(滴滴打车数据量10个T一批处理)
用于批量处理大数据集的处理框架,可对整个数据集进行操作
例如:
Apache Hadoop,一种以MapReduce作为默认处理引擎批处理框架
②仅流处理框架(12306就是用流处理框架,数据的实时性很强,数据流找不到数据头和尾)
用于对随时进入系统的数据进行计算,是一种“无数据边界”的操作方式。
例如:
Apache Storm
Apache Samza
③混合处理框架
一些大数据处理框架可同时处理批处理和流处理工作负载
例如:
Apache Spark
Apache Flink
四、hadoop生态圈
1、项目定义
Apache Hadoop项目用于高可用,可扩展的分布式计算的开源软件
Apache Hadoop是一个大数据处理框架,允许使用简单的编程模型跨计算机集群分布式处理大型数据集
Apache Hadoop可以从单个服务器扩展到数千台计算机
Apache Hadoop集群中每台计算机都提供本地计算和存储
Apache Hadoop集群不是依靠硬件来提供高可用性,而是设计了用于检测和处理应用程序层的故障,从而在计算机集群之上提供高可用性服务。
开源软件
大数据处理架构
单台服务可以,数千台服务器
每台服务器都存自己的数据及运算自己的数据
把硬件故障认为常态,通过软件把控故障
2、核心项目
Hadoop分布式文件系统(HDFS):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问。Hadoop YARN:作业调度和集群资源管理的框架
Hadoop MapReduce:基于YARN的系统,用于并行处理大型数据集
Hadoop Common:支持其他Hadoop模块的常用实用程序。
Hadoop Ozone: Hadoop集群所提供的对象存储。
3、相关项目
Ambari
基于Web的工具,用于配置,管理和监控Apache Hadoop集群,包括对Hadoop HDFS MapReduce,Hive,HCatalog,HBase,Zookeeper,Oozie,Pig和Sqoop的支持。
Ambari还提供了一个用于查看集群运行状况的仪表板,例如热图,以及可视化查看MapReduce,Pig和oHive应用程序的功能,以及以用户友好的方式诊断其性能特征的功能。
Spark
用于Hadoop数据的快速通用计算引擎。Spark提供了一种简单而富有表现力的编程模型,支持广泛的应用程序,包括ETL,机器学习,流处理和图形计算。
ZooKeeper
用于分布式应用程序的高性能协调服务。
核心项目 hdfs mapreduce yarn
相关项目 ambari hbase hive spark zookeeper
五、hadoop核心项目分布式文件系统HDFS
1、文件系统定义
HDFS (Hadoop Distributed File System,Hadoop分布式文件系统)它是一个高度容错性的系统它适合部署在廉价的机器上它能提供高吞吐量的数据访问它适合那些有着超大数据集(large data set)的应用程序(超大数据集例如:海量数据分析、机器学习等)
2、文件系统特点
支持大数据文件
非常适合上TB级别的大文件或者一堆大数据文件的存储,如果文件只有几个G甚至更小就没啥意思了
支持文件分块存储,HDFS会将一个完整的大文件平均分块存储到不同计算节点上,它的意义在于读取文件时可以同时从多个计算节点上读取不同区块的文件,多主机读取比单主机读取效率要高得多。
支持一次写入,多次读取,顺序读取( 流式数据访问)这种模式跟传统文件不同,它不支持动态改变文件内容,而是要求让文件一次写入就不做变化,要变化也只能在文件未添加内容。
支持廉价硬件
HDFS可以部署在普通PC机上,这种机制能够让给一些公司用几十台廉价的计算机就可以撑起一个大数据集群。
支持硬件故障
HDFS认为所有计算机都可能会出问题,为了防止某个主机失效读取不到该主机的块文件,它将同一个文件块副本分配到其它某几个主机上,如果其中一台主机失效,可以讯速找另一块副本取文件。
总结:支持大文件存储 分块存储 支持廉价硬件 支持硬件故障
3、文件系统关键词
Block
最基本的存储单位;将文件进行分块处理,通常是128M/块,例如:256M文件会被分为2个Block.
Hadoop集群架构(主从),类似mysql、ceph、LB(主:调度器 从realserver)
NameNode(主)(最好做高可用)
用于保存整个文件系统的目录信息
文件信息及分块信息,这是由唯一一台主机专门保存,当然这台主机如果
出错,NameNode就失效了。
接收用户的操作请求
维护文件系统的目录结构
管理文件和Block之间的映射管理
管理 block 和 DataNode 之间的映射
DataNode(从节点)
分布在廉价的计算机上,用于存储Block块文件。文件被分成块存储到 DataNode 的磁盘上
每个Block(块)可以设置多副本
4、hdfs写数据流程
总结:客户端向namenode发起文件上传请求
客户端向datanode发起建立连接请求
客户端向datanode上传存储数据(block只要一个成功上传,NameNode会自动同步)
5、hdfs读数据流程
总结:和存储文件一样必须通过NameNode门户,只不过读取文件过程很简单,不是单一block读取,多个block同时读取带宽大,速度也快。
6、Hadoop核心项目编程模型
1、MapReduce作用
通过对HDFS分布式文件系统的了解,我们已经可以把海量数据存储在集群中DataNode之上了,但这仅是Hadoop工作的第一步,那么如何从海量的数据中找到我们所需要的数据呢,这就是MapReduce要做的事情了。
例如:1+2 + 3+4 + 5+6 =? 客户需要马上知道自己的5亿资金还有多少(各个分行分头统计,最后报给总行,效率快)
Map: 1+2=3 3+4=7 5+6=11
Reduce: 3+7+11=21
结论
将大的数据分析分成小块逐个分析,最后再将提取出来的数据汇总分析,最终获得我们想要的内容。通俗说MapReduce是一套从海量源数据提取、分析元素,最后返回结果集的方法
当然怎么分块分析,怎么做Reduce操作非常复杂,Hadoop已经提供了数据分析的实现,我们只需要编写简单的需求命令即可达成我们想要的数据
map 把大数据分成小数据,进行计算通过洗牌的方式给reducereduce 对map的结果进行汇总