大数据相关整理

1.hdfs

1.1.namenode

所有文件的读写入口,用来保存文件的元信息
元信息包括:

fsimage文件:
		文件权限信息
		文件在block块的偏移量
		文件的位置信息
editlogs文件:对文件的写操作日志
		文件写日志指令,为了安全同步,重启会执行指令
1.2.datanode

用来真正保存文件内容的节点
datanode有很多个,保存的是若干个block块

1.3.secondarynamenode

定期合并editlogs文件,防止editlogs文件过大,文件过大时,重启会特别慢。
这个editlogs就类似于redis的AOF持久化机制,也是定期得合并,不然太大就会造成重启慢。

1.4.block

hdfs中保存文件的基本单位,默认128M,可改。
如果文件大于128M,会拆分成多个block块,保存在多个datanode中。
分布式就是将block打散放在不同的node上,
每个block块都有一个唯一标识,这个唯一标识保存在namenode的fsimage文件中

2.mapreduce

2.1 map

归纳整理,将hdfs文件解析拆成key-value

2.2 reduce

真正的计算,一般是多台机器同时计算

在hadoop2中,mapreduce实现用到了Yarn组件
2.3 Yarn组件(yet another resource nevatitor : 下一代资源管理者)
2.3.1 ResourceManager资源管理器(简称RM)

mapreduce的执行入口

接收客户端的job请求
协调job所用资源
产生一个jobId和appMaster(后面的AM)通信
监听任务的开始和结束
2.3.2 NodeManager(简称NM)

运行在各个datanode上,有几个datanode,就有几个NodeManager
负责和RM,AM通信
由NM启动各个YarnChild

2.3.3 MRAppMaster(简称AM)

由RM在各个NM中指定一个机器启动
负责具体的某一个map任务,即:

负责从hdfs中下载job运行的资源
同时将job资源分发到各个NM中
监听各个YarnChild的状态
2.3.4 YarnChild

由NM在各个节点上启动YarnChild
执行map,YarnChild1启动,关闭
执行reduce,YarnChild2启动,关闭
如果某个YarnChild不行了,由AM再选一个NM启动一个YarnChild,再继续干

2.4 shuffe(洗牌)

map完会shuffe,再交给reduce
shuffe:合并key,并排序(按照key字典顺序排)

2.5 split计算过程

一个split对应一个map任务
有几个split,在mapreduce过程中就会有几个map任务并行计算

2.6 job提交过程

从job.writeForCompletion(),开始debug

2.7 mapreduce中常见的输入输出类型

3.hbase(hadoop database)

存储在hdfs之上的,对hdfs的封装,简化hdfs的操作
是一种key-value类型的nosql数据库
没有事务
基于内存
只支持key查询
面向列存储

传统的关系型数据库,一行可以存储多个列的值
hbase中,一行只存储一列
3.1 hbase概念
3.1.1 namespace(命名空间)

hbase中没有数据库的概念,但有个namespace,命名空间,类似于库

3.1.2 table(表)
3.1.3 column family(列簇)

分类管理列,由相同特性的列组成
一个表有多个列簇
列簇必须在创建表的时候指定
列簇不宜设置过多,能用一个就不用两个,用列簇是为了方便管理

3.1.4 column(列)

隶属于列簇,一个列簇下可以有多个列
列名需在添加数据时指定

3.1.5 value(值,保存列名对应的值)

同一条数据,可以有多个值,每个值对应一个版本
通过timestamp当版本号,一个value默认可以保存3个版本

存储举例:

key           value

1             name:zhangsan
1             age:18
1             city:beijin
2             name:lisi
2             age:28
3.2 hbase核心服务
3.2.1 hregion

一个hregion包含了某个表的全部或局部内容
默认每个hregion的大小为256M

一个hregion只保存一个表的信息
在hregion中,数据是按照key的自然顺序排好序的
一个hregion由一个或多个hstore组成
每一个hstore保存一个column family,及列簇
每个hstore包含一个memstore和多个storFile
3.2.2 hmaster

监听用户对表的操作(建表,删表,修改表信息)
hmaster集群,采用副本集,一主多从,用zk管理

3.2.3 zookeeper

4.hive

对mapreduce的封装,可以当成一个数据库
hive是建立在hadoop上的数据仓库基础架构
仓库保存的数据一般都是经过特殊处理的(一般是ELT)

4.1 hive组件
4.1.1 Driver
4.1.2 metastore
4.2 hive分区
4.3 hive分桶
4.4 hive中的类型

5.flume

日志收集组件
一般是将日志收集到hdfs存储
这里的日志不仅仅是nginx中的日志,任何数据都可以认为是日志

5.1 三大核心组件
5.1.1 source

定义数据的来源,即日志来源

5.1.2 channel

通道,用来传输数据
为什么有chanel:如果source很快,sink很慢,就会宕机,所以加上channel来缓解sink的压力

5.1.3 sink

定义数据的目的地

5.2 agent

三大组件合起来叫agent
agent分别管理若干个source,channel,sink
一个agent代表一个JVM

5.3 event

事件,数据传输的基本单位
flume在读数据的时候,是一个event一个event的读
event可以理解为日志文件中的一行或多行

5.4 flume的强大之处

1.使用简单
2.可以进行各种source,channel,sink的组装,即一个agent中可以有多个source,多个channel,多个sink,多个组件之间可以相互搭配
3.可以进行多级agent,提高单agent的抓取效率,agent之间一般用消息队列传输,比如kafka
4.多个agent数据合并成一个agent,称为sink的聚合
5.多路agent,即一个source,对应多个channel,对应多个不同的sink,最终存储到不同的地方
6.flume支持集群,有负载均衡和容灾策略
7.flume内置了和其他组件的的集成方式(这也是用flume的主要原因)

比如:
和hdfs集成
和hbase集成
和hive集成
和kafka集成
和自定义集合组件集成
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值