1、spark
下面对RDD的五个特性进行解释:
1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。
2、有一个函数计算每一个分片,这里指的是下面会提到的compute函数。
3、对其他的RDD的依赖列表,依赖还具体分为宽依赖和窄依赖,但并不是所有的RDD都有依赖。
4、可选:key-value型的RDD是根据哈希来分区的,类似于mapreduce当中的Paritioner接口,控制key分到哪个reduce。
5、可选:每一个分片的优先计算位置(preferred locations),比如HDFS的block的所在位置应该是优先计算的位置。(存储的是一个表,可以将处理的分区“本地化”)
transformation
action
广播
cache
依赖,然后通过这些进行进行提交计算可以进行map,reduce、group by 、join、等等。
spark有一个driver程序 然后有很多种模式
比如standalone yarn -client yarn-cluster local messos 等模式
通过client提交程序后 driver 初始化一个sparkcontext,然后通过集群提交任务给datanode,datanode上面启动excutoe,
然后excutor 在内部启动线程执行task ,然后task将任务返回给driver程序,这样进行计算,任务的提交
有tasksceduler
jobsceduler
spark 内部io机制 序列化,压缩,快管理
rpc通信采用的是scala的 akka通信
容错机制:血统 也就是依赖,还有检查点机制,checkpoint机制来进行的
还有shuffler机制,这个是一个shuffler writer 写到buckter ,然后还有一个什么,一个shuffler fetch ,来进行数据的拉取工作。
================================
spark概述
spark安装
spark计算模型
spark工作机制
spark开发环境配置和流程
spark的编程(wordcount , topk,中位数,倒排索引,countonce ,倾斜链接、股票趋势预测
benchmark的使用 没有用过
bdas spark sql spark streaming就是一个窗口,需要等待这个窗口的数据到其了然后进行计算,速度比strom慢,strom是一个数据就发tuple就发送出去了,spark graphx spark mlib
spark 的性能调优: 增加内存,增加并行度,增加分区,序列化,压缩,等等。
================================
2、maprduce
首先由hdfs的写入
然后又hdfs得读写
然后是mapreduce的过程
然后是mapreduce的job运行过程
然后是mapreduce的调度器
然后是mapreduce的 一些二次排序,多目录输出、等等机制。
然后就一些业务知识,
然后是一些调度程序。
================================
3、kafka
topic cusumer producer broker
分区消费,分组消费
同步生产,异步生产
python java 线程
1、kafka初始
2、生产者和消费者的实例代码
3、消息处理过程还有集群维护(通过zookeeper 维护分区消息,还有副本,然后通过affset进行消息的传送,有.index .log两种文件
3、集群维护,增加节点,有监控工具,一个是一个java 包,另外一个是一个web工程,然后呢?然后有topic的一些什么啊,
topic 新建,修改,删除,分区,leader选举
4、代码解析,有什么代码啊 ,consumer的代码,还有producer的代码,没有意思
================================
4、python
其实没有什么难的,跟java差不多的,都是一些java基础啊,然后就是多线程,锁,网络编程,io啊,爬虫啊,web啊啊,等等,所以我们有信心的能做好的,是的,恩恩
================================
5、我们的实时计算有一条线,我们的离线计算有一条线,我们的全文索引有一条线
flume->kafka->strom/spark streaming->hbase->redis
离线计算
hdfs->mapreduce->hive->mysql
hbase
有一个hmaster 可以通过 zookeeper进行选举产生ha
有很多的regionserver 里面包含很多region
每个regionserver 有一个whl hlog,进行容错的文件,然后就是storfile 分为 memstore 还有 stroefile
hbase的文件写入
hbase的文件读取
先写缓存,然后积累到了一定的量,则写入region中
region 有comparct 合并,还有split
hbase 有rowkey,还有conlomefimaly 里面有comlome 很多列,可以很宽的,然后呢,
然后有什么?各种api
get put scan 等各种操作, delete 等等,
================================
5、strom
有spout 还有bolt 还有touplogy 拓扑结构,
接受kafka的数据,然后进行流式计算,
是通过的tuple 发送一个元祖的结果,进行发送
然后呢,有很多发送的 有shuffle发送,分组发送,还有很多全局发送。等等。
其实这么多框架,我们都是需要做实验的,不能这么只是知道,而没有去做啊,哎,真是蛋疼的人生,每次到了我们的需要的时候,发现我们缺少了很多东西啊,哎
有nubase nimbus,还有多台superwaser supervisor
然后superwaser 里面有多个worker ,worker里面有很多的excuter ,然后执行task
分组策略:
shuffle grouping随机分组 随机分发tuple给bolt的各种task,每个bolt 实例接受到的相同数量的tuple
fields grouping 按照字段分组 根据指定的子弹的值进行分组, 比如一个数据量根据word字段进行分组,所有具有相同wod字段值的tuple会路由到同一个bolt的task中
all grouping 全复制分组,将所有的tuple复制后分发给所有的bolt task ,每个订阅数据量的task都会接受到tuple的拷贝
grouble grouping :全局分组 这种分组方式将所有的tuples路由到唯一一个task上, strom按照最小的taskid来选取接受数据的task
注意,当使用全局分组是, 设置bolt的task并发度是没有意义的, 因为所有tuple都转发到一同一个task上了, 使用全局分组的时候需要注意,
因为所有的tuple都转发到了一个jvm实例,可能引起jvm的服务器性能崩溃
none grouping 不分组
direct grouping 指定型分组
有page boot event exception的 一些spout ,然后shuffler的 相应的bolt上面
然后在把etl逻辑之后的数据 插入了phoenix里面,最后通过 phoenix的sql语句进行统计和分析
这样就能达到 实时统计的效果。
=====================
6、flume
source 文件
channel 内存
sink hdfs
数据采集,各种数据源,各种数据输出
=====================
6、hbase
1、简介
2、安装
3、crud 操作
put get 删除 批量处理 行锁, 扫描
4、高级特性
过滤器, 比较过滤器, 计数器,
协处理器
5、客户端管理功能
表, 表的操作,hbase admin 基本操作,表操作,模式操作,集群管理,集群状态管理
6、可以使用的客户端,
7、于mapreduce 继承
8、架构
b+树木
lsm树
存储 写路径, 文件, hfile格式 keyvalue格式
wal water ahead log
hlog hlogkey waledit logsyncer logroller
读路径
region查找
region生命周期
zookerper
行健设计:
集群监控
垃圾回收。
管理拆分还有合并
负载均衡,
合并region
集群管理
运维任务
数据任务