指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。需要新处理模式,才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
主要解决:通过对海量数据的存储和分析计算,找出其中的价值。
按顺序给出数据存储单位:bit、ByteKB、MB、GB、TB、PB、EB、ZB、YBBB、NB、DB。i Byte= 8bit ik=1024byte IMB=1024KlG=1024M1T=1024G1P=1024T
数据量大、增速快、格式多样(除了文本文件还有视频图片等等)、价值密度低(需要从大量数中分析才能得出)。
Hadoop是一个由 Apache开发的开源的分布式存储计算处理平台。广义上来说, HADOOP通常是指一个更广泛的概念HADOOP生态。
主要解决大数据的存储和分析计算问题。日志分析、搜索引擎、商业智能、数据挖掘等。
三大发行版本Hadoop三大发行版本: Apache、 Cloudera、 HortonworksApache版本最原始(最基础)的版本,对于入门学习最好。Cloudera在大型互联网企业中用的较多Hortonworks文档较好。
高扩展、低成本、有成熟的生态圈
Hadoop的组成(2.x及以上版本)包括三个核心组成HDFS:分布式文件系统,存储海量的数据Mapreduce:并行处理框架,实现任务分解和调度Yarn:负责资源调度
HDFS中有两类节点Namenode和 Datanode注意:格式化namenode,会产生新的集群namenode的集群id和datanode的集群id不一致,集群找不到己往数据。所以,格式 Namenode时,一定要先删除data数据和logs日志,然后再格式化 Namenode。
数据读取:用户需要获取数据,先去namenode上得到这个数据分布在那个datanode等相关元数据,然后去读取。数据分布:三副本模式,存储在两个机架的三个节点上心跳检测:datanode定时向namenode发送心跳数据二级namenode: namenode会定期同步数据到二级namenode,如果namenode出问题了就会将二级namenode备胎转正
读取流程
数据写入流程:
hsfs数据写入流程
1、数据冗余,硬件容错2、流式的数据访问3、存储大文件
适合数据批量读写,吞吐量高,适合一次写入多次读取,顺序读写,不支持多用户并发写相同文件不适合交互式应用,低延迟很难满足
分而治之,一个大任务分成多个小的子任务(map)并行执行后,合并结果( reduce)
有一千副扑克牌,但是少了一张,如何知道少了那一张呢?
先每个人分一部分,然后各自都按照某个规则进行归类,如每个花色和数字出现的次数的进行整理,红桃A 19张黑桃B 50张等然后交换数据,将相同花色相同数字的进行reduce合并红桃A 1000张黑桃B 999张输出数据,可以看出少了那张
数据处理流程相似的使用场景,如日志分析比如我们有半年的日志,想分析出每个ip的访问量也可以这么做
Jobtracker负责任务拆分,拆分为map任务和reduce任务Jobtrackere的角色①作业调度②分配任务、监控任务执行进度③监控 Tasktracker的状态taskTracker负责任务执行Tasktrackere的角色①执行任务②汇报任务状态
1. 重复执行2. 推测执行,发现某个任务的执行超慢,就将这个任务在另一个节点上让他也去执行,做同样的执行,防止某一两个taskTracker异常导致整个任务失败的情况
Container:对任务运行环境的抽象,封装了CPU、内ContainerContainer存等多维资源以及环境变量、启动命令等任务运行相关的信息
YARN 架构及各角色职责MRAppMaster是MapReduce的ApplicationMaster实现,它使得MapReduce可以直接运行在YARN上,它主要作用在于管理作业的生命周期:1.1作业的管理:作业的创建,初始化以及启动等1.2向RM申请资源和再分配资源1.3Container的启动与释放1.4监控作业运行状态1.5作业恢复
1.用户向YARN中(RM)提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。2.ResourceManager为该应用程序分配第一个Container,ResouceManag与某个NodeManager通信,启动应用程序ApplicationMaster,NodeManager接到命令后,首先从HDFS上下载文件(缓存),然后启动ApplicationMaser。3当ApplicationMaster启动后,它与ResouceManager通信,以请求和获取资源。ApplicationMaster获取到资源后,与对应NodeManager通信以启动任务。注:1.如果该应用程序第一次在给节点上启动任务,则NodeManager首先从HDFS上下载文件缓存到本地,这个是由分布式缓存实现的,然后启动该任务。2.分布式缓存并不是将文件缓存到集群中各个结点的内存中,而是将文件换到各个结点的磁盘上,以便执行任务时候直接从本地磁盘上读取文件。4.ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManage查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它们的运行状态,直到运行结束,即重复步骤5~85.ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源6.一旦ApplicationMaster申请到资源后,ApplicationMaster就会将启动命令交给NodeManager,要求它启动任务。启动命令里包含了一些信息使得Container可以与ApplicationMaster进行通信。7.NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务(Container)。8.在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态9.应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
转载于:https://www.cnblogs.com/shaozhiqi/p/11534605.html