大数据框架总结了zookeeperhadoophiveflumesqoopazkabanoozieimpalahueredishbasenosql数据库ELKkafka软件框架之间的依赖关系
zookeeper
大数据领域的分布式服务协调框架主要支持其他框架的正常运行
永久节点:
正常永久节点
序列化持久性节点
临时节点—当客户端断开连接时,节点将消失
普通临时节点
序列化临时节点
watch机制:类似于侦听器
hadoop hdfs
分布式文件存储系统
namenode :主节点主要用于管理元数据信息
fsimage :相对完整的元数据信息。
edits :在最近一段时间内,客户端操作日志的操作次数达到了100W,而且还有一个小时的限制
datanode :以块为单位存储的数据存储,默认块128m
secondaryNameNode :主要合并fsimage和edist文件
snn需要复制和备份fsimage和edits文件,snn也是元数据的冷备份
snn合并流程:我知道
作业历史:查看历史作业进程
读取数据过程
客户端开始文件的读取请求,NameNode检查元数据(有无读取权限、文件存在),返回是否可以读取。 如果是可读的,NameNode将根据需要返回部分或所有文件的块列表(多线程)。 对于每个块,NameNode返回包含该块副本的DataNode地址。 返回的DN根据网络拓扑图中的距离进行排序,距离客户机越近,返回的DN地址越靠前。 心跳机制超时时报告的DN状态为STALE,这样的列在后面。 客户端选择高位数据节点以读取块。 如果客户端本身是DataNode,则直接从本地获取数据(短读特性); 如果读取过程中断,客户端将需要重新请求DN读取block。 所有块传输完成后,在客户端连接到完整的文件。
客户端制作ABC机器和pipeline。
client开始以packet为单位(默认64K )向a上传第一个block,a收到packet后传递给b,b在每次传递给c的packet时进入响应队列并等待响应。
使用ack机制来确定一个块是否成功上载,在一个块的传输完成后,客户端将让NameNode将第二个块上载到服务器,直到所有块都上载写入数据过程:背诵
客户端开始请求上载文件,NameNode检查元数据(目标文件是否已经存在,父目录是否存在),并返回是否可以上载。
如果可以上载,客户端将请求上载第一个块。
NameNode根据配置文件中指定的备份数量和机架识别原理分配文件,并返回可用的DataNode地址,如a、b和c。
如果拷贝数为3,NN将寻找三台机器。 第一台:离客户端最近的机器。 第二台:最近机器同一路由器下的机器。 第三台:在不同的路由器下找机器。 客户端制作ABC机器和pipeline。
client开始以packet为单位(默认64K )向a上传第一个block,a收到packet后传递给b,b在每次传递给c的packet时进入响应队列并等待响应。
使用ack机制来确定一个块是否成功上载,在一个块的传输完成后,客户端将让NameNode将第二个块上载到服务器,直到所有块都上载
mapreduce:
三个key,value对
八个步骤
步骤1 (读入文件,解析为key。 value对k1 v1 LongWritable Text步骤2 )定制映射器逻辑,接收k1 v1并转换为k2 v2 Text IntWritable (步骤3 )将分区为同一个密钥的数据发送到同一个读操作key合并,value形成一个集合第四步:排序数据key2第五步:约定combiner调整步骤选项可以求平均值不能使用约定第六步:将key2分组value形成集合的第7步骤:定制reduce逻辑,经过k2 v2转换后生成新的k3 v3输出文本写入第8步骤:输出
资源调度方法: 3个
FIFO :先进先出无人使用
使用fair scheduler公平调度apache版本
capacity scheduler容量调度器cdh使用的调度方案
通过定制capacity scheduler配置,不同的用户可以将任务发送到不同的队列以隔离资源
实现多租户、资源隔离
hive
数据仓库基本概念:数据仓库主要就是面向数据分析将hive的元数据信息保存在mysql里面了
独立表模型
外部表:external 外部表删除表的时候,不会删除hdfs的数据
内部表:删除表的时候,会删除hdfs的数据
分区表:一般与外部表或者内部表搭配使用 分文件夹 partition by
分桶表:一般与外部表或者内部表搭配使用 分文件 cluster by into xxx buckets
hive基本语法 group by
自定义函数
爆炸函数 explode 将数组给炸开
lateral view UDTF 函数 主要与爆炸函数配合使用
分析函数 都是用于分组求topN row_number over rank over dens_rank over (partition by order by )
每个,每月,各个 都是需要进行分组 group by
每月最大的前五个值:分析函数
select
*,row_number() over(partition by s_id order by score )
from user;
多使用子查询
select from (
) temp
数据存储格式,压缩,调优
数据存储格式:行式存储以及列式存储
行式存储:textFile,sequenceFile
列式存储:orc,parquet
在ods层:使用textFile
在dw层:使用orc存储格式 配合snappy压缩 数据压缩比 6 :1
原始文件100GB 使用orc格式配合snappy之后数据大概剩下 100/6
hive调优:尽量多背几个
map端join
合并小文件
控制map个数以及reduce个数
表的优化
本地模式
推测执行
flume:数据采集工具 离线分析:
将数据保存到hdfs上面去:hdfsSink 文件滚动的时长,文件event数据量,文件大小
文件夹滚动策略:多长时间在hdfs上面滚动生成一次文件夹
多长时间发送一次数据到hdfs上面去,采集一次数据都是一般接近128M
hdfs.rollInterval 30 Number of seconds to wait before rolling current file (0 = never roll based on time interval)
hdfs.rollSize 1024 File size to trigger roll, in bytes (0: never roll based on file size)
hdfs.rollCount 10 Number of events written to file before it rolled (0 = never roll based on number of events)
sqoop:数据的导入导出工具
增量数据怎么解决
减量数据怎么解决:做拉链表
更新数据怎么解决:做拉链表
启动了多少个mapTask -m 每条数据库数据量大概有多大
azkaban: 任务调度工具 自己会使用就行
oozieoozie: 完全替代azkaban
impalaimpala: 完全替代hive 比较消耗内存,官方建议内存128GB起步
huehue:管理工具,主要与其他的各种框架进行整合
redisredis:内存数据库 存取速度都比较快
string
hash
list
set
zset
运行模式
单机版
主从模式
哨兵模式
redis集群
大数据领域里面一个分布式的nosql 数据库
rowkey
列族
列
时间戳
多版本
一张hbase表,有多个region
一个region两部分组成:一个HLog + 多个store模块
一个store模块:一个memoryStore + 多个StoreFile
flush:数据从memoryStore到storeFile
compact:数据从storeFile到HFile
split:大的HFile达到10GB的时候,就会进行分裂,region也会一分为二
hbase的数据读写流程:元数据记录表 hbase:meta表
多版本特性:一个cell里面可以存放多个值
TTL过期时间
namespace:命名空间
使用hbase存储微博数据
ELKELK:elasticse 全文检索框架,也是类似于一个数据库
index
type
document
field
shard
replicat
mappings
settings
kafka:消息队列 用于实时处理场景
作用:解耦,异步,并行
一般用于数据的统一的管理平台
核心 概念
producer
topic
consumer
partition
segment
.log
.index
1、zookeepper没有任何依赖 依赖jdk
2、hadoop
ha模式:依赖zk
3、hive 依赖hadoop 和 mysql
4、flume 没有依赖
5、sqoop没有依赖
6、azkaban没有依赖
7、impala 依赖hive 必须启动hive metastore服务
8、oozie 依赖于hadoop
9、hue 没有依赖
10、redis 依赖C程序 yum -y install gcc-c++
11、hbase 依赖于zookeeper以及hadoop
12、ELK 没有依赖
13、kakfa 依赖zookeeper