大数据的方向梳理
大数据出现的背景:4V特性
(数据量,数据种类,数据处理速度,价值密度低)
集群发展中,有两类比较常见的问题:水平瓶颈,单点故障
1.平台侧
HDFS解决存储 yarn 技术框架 Zookeeper分布式协调 ,Kerberos&LDAP负责安全
HDFS
一、主从结构
主节点NameNode(单点故障用主备机制解决,水平瓶颈用联邦机制解决) 存储元数据fsimage元数据在内存,同时磁盘也会保存一份,磁盘保存元数据fsimage 的动作由备份的完成
从节点DataNode (水平瓶颈是不存在的可以任意扩展,单点故障问题用3副本的机制)
存储的策略:第一个副本默认是本机,第二个副本不同机架最近的节点,第三个副本同机架最远的节点
HDFS解决存储场景最大的优势是:分块存储,默认大小是128
HDFS使用场景:大文件的存储,流式读取场景
HDFS不适合的场景:小文件的存储,流数据的读写,实时读写,数据会不断变更修改
二、MapReduce和Yarn
MapReduce : map过程和Reduce过程,我们把Map端的输出到Redce端的输入叫做Shuffle
Map分片默认的大小就是HDFS分块的大小,Map的输出默认不合并,如果需要合并,就要开启Combiner,开启Combiner以后输出的文件大小和文件的数目会大大减少
Shuffle会完成排序和分区的功能,Shuffle分区个数就是Reduce的个数。
Reduce全局的统计和输出结果
一个完成的MR程序,是否一定要有Reduce过程?不一定
Reduce的进度是否一定等到Map达到100%才开始进行?不一定
Yarn:主从结构,主节点ResourceManager,从节点NodeManager
一个具体任务的执行是由AppMaster来统筹,AppMaster 会通知RM协调对应的container资源,C里封装的就是内存和CPU资源,AM其实也是就是一个特殊的C,他们都是启动在NodeManager的进程,单个任务的失败,比如上述的某一个map task或者reduce task失败,并不会让整个任务失败,它有对应的重试机制,包括appMaster也类似。
Yarn的最小资源保障,比如说最小资源要10%,那这个时候执行的任务最多可以有10个,所有的资源请求里,资源释放的请求最优先
三、Zookeeper
分布式的协调:协调的前提是本身组件足够可靠
ZK主要做主备之间的选举和监控,以及主从的节点通信问题
ZK完成主备的切换: 1 锁
2 监听监控的机制
ZK本身是一个微型数据库,它的数据叫做节点,节点有临时或永久,带序号或者不带序号的特点,临时节点的特性就是创建该节点的服务器和zk断开连接后,该数据会自动消失。
ZK如何选举自己的主节点,必须获得集群半数以上的节点的票数,涉及容灾能力
比如说集权有10个节点,成为主节点需要6票,容灾能力是4
11 6 5
9 5 4
ZK的选举最初的时候是基于myid来选举,就是每个节点有个myid的配置文件,这个配置文件需要每个节点保存的数据都是不同的,要求每个节点的id是不同的
四、Kerberos&LDAP
负责安全认证的组件,要关注授权一定是按时按需,就是在一定的时间内对那些数据库那些表由那些权限(读写改删)

2.离线批处理分析 Loader+Hive数仓分析
一、离线批处理分析
Loader ETL的工具,抽取,转换,加载,封装的开源sqoop,ETL的工具非常多,都是以图形化webUI的方式去配置迁移,配置输入源,配置转换的规则,配置输出端
二、Loader+Hive数仓分析
Hive OLAP作分析的数仓工具,OLTP作事务分析(传统的关系型数据库),通过把一些列的HQL转换成了MR程序去运行,步骤是编译,优化,执行
HIVE把元数据存在关系型数据库中,比如mysql,把数据存在HDFS之上
内部表 文件是在hive的管辖范围内,删表时元数据和数据都会删除
外部表 文件是在hive的管辖范围外,删表时只删元数据
分区表 对应目录 ,分区字段是事先不存在的,可以在有分区或分桶,提升where查询性能
分桶表 对应文件,分桶字段必须事先存在,不能在分区或者分桶,提升join关联的性能

作离线分析应该是在一天的深夜的时候运行,涉及白天或者晚上的资源调度。
3.实时流处理分析
Flume实时日志采集+Kafka消息中间件+Spark/Flink实时流处理创建
一、Flume 实时的采集日志工具 source(监控目录)+channel(内存或磁盘或JDBC)+sink(最常见是KAFKA和HDFS),基于事件驱动的
二、Kafka 消息中间件产品,为了解决耦合,kafka集群每一个节点叫Broker,两个角色一个是生产者,一个是消费者,巧妙的推拉模型
Kafka也有对应的副本,但是Kafka的副本和hdfs不同的是它有主从副本的概念,因为Kakfa的副本有对应的数据变化的过程,需要由一个副本负责变化,另外的负责同步
topic+partition+offset
最多一次,最少一次,仅有一次
同步发送和异步发送的区别,同步发送指的是数据产生一条发送一条,异步发送指的是数据产生先放入内存中的环形缓冲区,当缓冲区的文件达到一定的规模(如90%),数据再一次性写入的过程,所以用的同步发送比较多
三、Sprak 基于批处理的思想 时间驱动(类似电梯) 时延秒 吞吐量高
流处理的核心是把流数据用微小的时间单元进行切分,切分成微批数据做处理,可以作实时流处理,离线处理,机器学习,图计算 Sprak的源码是scala(运行在JVM上的一门语言)
四、Flink 基于流处理的思想 事件驱动 (类似扶梯) 时延毫秒 吞吐量高
流处理的核心是把流数据当成一张无边界的表 可以作实时流处理,离线批处理,机器学习,图计算,Flink的源码是scala和java ,两套API,处理流DataStream,处理批 DataSet,精准一次的场景依托于chekpoint机制,微笑数据单元的插入barries,savepoint机制由人工触发,(多分枝,多复杂度的)
窗口函数:滚动,滑动(可能有重复,3分钟密码输错5次的场景),会话(通过两次操作的时间间隔判断是否属于同一个会话)

4.实时检索搜索
列式数据库HBase+全文搜索框架Elasticsearch
一、HBase 主从结构,主节点HMaster 从节点 HRegionServer
一个HRegionServer是由以Hlog和多个Region组成,写数据会先写HLOG在memstore
表------region,刚开始建表时默认只有一个
列族------store,memstore和storefile 一个在内存一个在磁盘,数据先写入内存
最小的单元cell,最小的分布式存储的单元region
基于KV结构的存储模型,K就是Rowkey,唯一,默认按照字段序进行排序,基于这个特点我们可以进行二级索引的应用。

Split和compaction,split是针对region说的,compaction是针对同一个Region下同一个CF(列族)下的小文件

9,A,C,Y四个元素对Rowkey进行分区的时候,可以分为五段

二、Elasticsearch
倒排和正排索引的区别,主从架构,EsMaster,从节点EsNode和solr的对比

解决海量高并发场景的框架组件 Redis内存数据库
解决高并发场景,默认持久化的方式RDB, AOF持久化