半结构化数据:html、json、xml等,有结构但没有约束的文档apache
搜索引擎:ELK,搜索组件、索引组件组成,用来搜索数据,保存在分布式存储中json
Hadoop是用Java语言开发的,是对谷歌公司这3篇论文开发出来的山寨版框架
2003年:The Google File System -->HDFS
2004年:MapReduce:Simplified Data Processing On Large Cluster -->MapReduce
2006年:BigTable:A Distributed Storage System for Structure Data -->Hbase
HDFS:Hadoop的分布式文件系统,有中心节点式存储数据
MapReduce:面向大数据并行处理的计算模型、框架和平台
存在名称节点:NN:NameNode和第二名称节点SNN:Secondary NameNode
NN数据存储在内存中,因为数据在内存中变化十分快,硬盘存储跟不上内存的变化速度,因此经过相似于数据库事务日志的机制,向硬盘存储映像文件,在此过程当中 ,追加日志不断被清空不断被写入,因此当NN服务器挂了,至少不会丢失太多文件,可是因为文件元数据在宕机后可能有不统一的状况形成文件校验,数据量过大会花费大量时间。
SNN为辅助名称节点,NN的追加日志放到了共享存储上,使SNN能访问,当NN宕机后,SNN会能够根据追加日志及时启动,至少优化了只有一个NN时候的文件校验时间。
在Hadoop2或者HBase2版本以后,能够将数据共享存放到zookeeper,几个节点经过zookeeper同时获取到视图,很好的解决了刚才的问题,也可以进行高可用设置了。
当有数据存储时,HDFS文件系统除了存储DN,会再寻找两个数据节点进行存储做为副本,数据节点之间以链式相连,即有第一份才有第二份,有第二份才有第三份,每次存储结束后节点会向前数据点报告,向元数据块或者服务器报告本身的状态和数据块列表。当某一点数据丢失,此时链式数据会从新启动,补足丢失的数据块。
每个负责运行做业的节点,在MapReduce里叫任务追踪器,TaskTracker
TaskTracker:负责完成队列处理,属于Hadoop集群
任务提交可能会同时由N我的提交N个做业,每一个人的做业不必定运行在全部节点上,有多是在一部分节点上,甚至多是一个节点上,为了可以限制一个节点上不要接入过多的任务,因此咱们经过task slot,任务槽,来肯定一个节点最多只能运行多少份任务
map:把一个任务映射为多个任务,把一个函数看成为一个参数,并将其应用于列表中的
fold:不断地把获得的结果折叠到函数上,接收两个参数:函数,初始值。
fold(g(),init):首先结合init初始值,经过函数g()获得g(init)的结果,而后将获得的结果g(init)在第二轮将做为初始值,经过函数g()获得g(g(init))的结果,以此类推最后会获得一个最终结果。
<1>mapper:每个mapper就是每个实例,每个mapper处理完会生成一个列表,至关于map函数的过程,mapper接收数据若是是键值数据则直接使用,若是不是键值数据会先转换为键值数据
<2>reducer:当全部mapper运行完之后才会进行reducer,至关于fold函数的过程,reducer可能不止一个,reducer只处理键值型数据,接收到的数据作折叠
<3>reducer在折叠后的数据依旧是键值型数据,折叠过程叫作shuttle and sort,此过程十分重要
mapper:每100页一个单位,好比说5 mappers,用于拆分红为单词,好比说this 1,is 1,this 1,how 1,单词逐个拆分,mapper处理后的为k-v型数据
reducer:reducer只处理键值型数据,将拆分出来的单词传递进reducer中进行统计处理与排序,将键相同的数据发往同一个reducer中,最后的结果this 500,is 200等等,结果依旧为kv型数据
shuffle and sort:接收mapper后,reducer将单词出现的次数进行键值数据统计计算的过程叫作shuffle and sort
Hadoop只提供了数据存储平台,任何做业、任何数据程序处理必须由Hadoop开发人员写MapReduce程序调用才可供使用,mapper的具体任务是什么,reducer用什么,都取决于开发人员的定义是什么。
(1)partitioner:分区器,具有决定将mapper键值经过shuffle and sort过程发送给哪一个reducer的功能
(2)combiner:若是mapper产生的键值数据中的键相同,那么将合并键,不然不合并,分散发送,一样由hadoop开发人员开发。其输入键和输出键必须保证一致。
做用:做业调度、管理监控等等,因此运行时JobTracker会很是繁忙,它由此也成为了性能瓶颈,不过在MRv2版本后,做业调度、管理和监控功能被切割
MRv1(Hadoop2) --> MRv2(Hadoop2)
RT Stream Graph:实时流式图处理,图状算法数据结构
mapreduce把 资源管理和任务运行两者隔离开了,程序运行由本身的Application Master负责,而资源分配由Resource Manager进行。因此当一个客户端提交一个任务时,Resource Manager会询问每个Node Manager有没有空闲的容器来运行程序。若是有,它去找有的这个节点,来启动这个主控进程Application Master。而后App Mstr向Resource Manager申请资源任务,Resource Manager分配好资源任务后会告诉App Mstr,以后App Mstr可使用contrainer来运行做业了。
每个container在运行过程当中都会将反馈本身的做业任务给App Mstr,当container中有任务结束了,App Mstr也会报告给Resource Manager,Resource Manager会将资源收回来
AM:Application Manager