大数据相关整理

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           value1             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集成
和自定义集合组件集成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OC编码规范

一、命名规范 1.类: (1)首字母大写,后续单词首字母大写。 (2)类名末尾要包含此类的类型,比如RootView,RootViewController。 2.属性 (1)属性名称首字母小写,后续首字母大写; (2)使用property,要保持必要的空格&#xf…

数据库---mysql的索引和引擎

mysql 的索引和引擎 mysql的数据都是存放在磁盘上的,都说索引会使查询变快,那么肯定是索引用了特殊的数据结构。 常见的数据结构有: hash hash就是咱们在hashMap中的那个hash,用hash确实快,而且时间复杂度是O&#x…

SQLite内置表SQLITE_MASTER

一、概述1.SQLite数据库中有一个内置表,名为SQLITE_MASTER,此表中存储着当前数据库中所有表的相关信息,比如表的名称、用于创建此表的sql语句、索引、索引所属的表、创建索引的sql语句等。2.SQLITE_MASTER表示只读的,只能对他进行…

redis单线程为什么还快的个人解释

面试的时候, 面试官问,redis是单线程还是多线程 答:单线程 面试官再问,单线程,为什么还快呢?不应该是多线程才更快吗?那这是不是有什么矛盾啊? 答:啊?&#x…

CDN的实现原理

一、传统模式 在描述CDN的实现原理前,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别: 用户提交域名→浏览器对域名进行解释→得到目的主机的IP地址→根据IP地址访问发出请求→得到请求数据并回复…

数据库---事务的隔离级别

首先,我们下面说的数据库事务,都是使用INNODB引擎的结果。 MYISAM是没有事务的,也就没有下面这些说法。 1.数据库事务的四大特性: 原子性:事务包含的所有数据库操作要么全部成功,要不全部失败回滚一致性&…

iOS崩溃日志收集

一、概述iOS-App崩溃分为两种,一种是异常:NSException,一种是信号:Signal。二、异常崩溃1.NSException对象(1)reason:崩溃原因。(2)callStackSymbols:调用堆栈。(3)name:崩溃名称(4)userInfo&am…

统计iOS项目代码行数

打开终端,输入如下命令:find . -name "*.m" -or -name "*.h" -or -name "*.xib" -or -name "*.c" | xargs wc -l 此命令会迭代子目录,会统计每个源代码文件行数及总数,统计的行数包含空…

一个简单的权限系统模型

我们知道,一般说的简单的权限系统,都是使用shiro或者spring-security shiro之前用的比较多,原理也容易理解,算是比较成熟的权限方面的框架spring-security相对源码比较难懂,但由于与spring的完美融合,也有…

获取iOS任意线程调用堆栈(一)获取任意线程的调用栈地址列表

转载自:http://blog.csdn.net/jasonblog/article/details/49909163 如果要获取当前线程的调用栈,可以直接使用现有API:[NSThread callStackSymbols]。 但是并没有相关API支持获取任意线程的调用栈,所以只能自己编码实现。 1. 基础…

linux---基础01

Linux是一种自由和开放源码的操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、台式计算机 Linux的目录结构 bin (binaries)存放二进制可执行文件 boot 存放用…

获取iOS任意线程调用堆栈(二)符号化理论:Mach-o文件结构

我们知道Windows下的文件都是PE文件,同样在OS X和iOS中可执行文件是Mach-o格式的。 所以我们如果要进行逆向分析,首先要熟悉Mach-o文件结构。 Mach-o包含三个基本区域: 头部(header structure)。 加载命令(…

linux---基础02

二、用户、组管理命令 Linux采用组来组织和管理用户 在Linux中每个用户有唯一的用户标识符UID,该UID是一个无符号整数。 同时每个用户也必须至少属于一个组,也有组标识符GID。 其中UID与GID独立编号。 1. groupadd命令 (1)grou…

获取iOS任意线程调用堆栈(三)符号化理论:从Mach-o结构分析类名方法名

下面来讲讲如何从Mach-o文件中分析出类名和方法名,也让我们了解下class-dump的原理。 Mach-o结构有两个节:__objc_classname 和 __objc_methname 其中就是类名和方法名。 其中__objc_classname的偏移为:ox7961 __objc_methname的偏移为0x6…

linux---基础03

三、 文件属性操作命令 1. chown命令 (1)chown示例一:改变文件的属主 [rootserver1 ~]# chown user1 hello.txt功能:将指定文件hello.txt的属主(所有者)改为user1。(2)chown示例…

获取iOS任意线程调用堆栈(四)符号化实战

转载自:http://blog.csdn.net/jasonblog/article/details/49909209 1. 相关API和数据结构 由于我们在上面回溯线程调用栈拿到的是一组地址,所以这里进行符号化的输入输出应该分别是地址和符号,接口设计类似如下: - (NSString *)s…

linux---基础04

六、网卡配置 分配临时IP地址: ifconfig eth0 up // 启用eth0网卡ifconfig eth0 192.168.1.104 netmask 255.255.255.0静态分配IP地址: vi /etc/sysconfig/network-scripts/ifcfg-eth0service network restart //重启 network服务(重新加载网卡配置)动态…

记录---基于BigDecimal的特殊的四舍五入

机试问题—实现基于BigDecimal的特殊的四舍五入。 这是一道外企的机试题,我把里面的某个难点部分,摘出来详细如下: //实现特殊的四舍五入,先普通四舍五入取到小数点后两位,然后最后一位向后进位,0和5不变&…

获取iOS任意线程调用堆栈(五)完整实现:BSBacktraceLogger

转载自:https://toutiao.io/posts/aveig6/preview BSBacktraceLogger 是一个轻量级的框架,可以获取任意线程的调用栈,开源在我的 GitHub,建议下载下来结合本文阅读。 我们知道 NSThread 有一个类方法 callstackSymbols 可以获取调…

Mac电脑如何彻底删除清除数据?CleanMyMac X软件更专业

虽然不用杀毒,但是日常的清理还是有必要的,特别是卸载一些软件会有残留,可以用命令mdfind来找,然后删,这里给新手用户推荐一款应用clean my mac x,定期清理一下,不用的时候关掉就可以。 CleanM…