元数据

HDFS学习(三) – Namenode and Datanode

落花浮王杯 提交于 2020-01-19 03:32:32
个人小站,正在持续整理中,欢迎访问: http://shitouer. cn 博文有更新并添加了新的内容 ,详细请访问: HDFS学习(三) – Namenode and Datanode   HDFS集群以Master-Slave模式运行,主要有两类节点:一个Namenode(即Master)和多个Datanode(即Slave)。   HDFS Architecture: Namenode   Namenode 管理者文件系统的Namespace。它维护着文件系统树(filesystem tree)以及文件树中所有的文件和文件夹的元数据(metadata)。管理这些信息的文件有两个,分别是Namespace 镜像文件(Namespace image)和操作日志文件(edit log),这些信息被Cache在RAM中,当然,这两个文件也会被持久化存储在本地硬盘。Namenode记录着每个文件中各个块所在的数据节点的位置信息,但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建。   Namenode结构图课抽象为如图:   客户端(client)代表用户与namenode和datanode交互来访问整个文件系统。客户端提供了一些列的文件系统接口,因此我们在编程时,几乎无须知道datanode和namenode,即可完成我们所需要的功能。 Datanode  

三、JVM之方法区

空扰寡人 提交于 2020-01-18 18:48:04
一、什么式方法区 方法区,也称非堆(Non-Heap),又是一个被线程共享的内存区域。其中主要存储加载的类字节码、class/method/field等元数据对象、static-final常量、static变量、jit编译器编译后的代码等数据。另外,方法区包含了一个特殊的区域“运行时常量池”。 (1)加载的类字节码:要使用一个类,首先需要将其字节码加载到JVM的内存中。至于类的字节码来源,可以多种多样,如.class文件、网络传输、或cglib字节码框架直接生成。 (2)class/method/field等元数据对象:字节码加载之后,JVM会根据其中的内容,为这个类生成Class/Method/Field等对象,它们用于描述一个类,通常在反射中用的比较多。不同于存储在堆中的java实例对象,这两种对象存储在方法区中。 (3)static-final常量、static变量:对于这两种类型的类成员,JVM会在方法区为它们创建一份数据,因此同一个类的static修饰的类成员只有一份; (4)jit编译器的编译结果:以hotspot虚拟机为例,其在运行时会使用JIT即时编译器对热点代码进行优化,优化方式为将字节码编译成机器码。通常情况下,JVM使用“解释执行”的方式执行字节码,即JVM在读取到一个字节码指令时,会将其按照预先定好的规则执行栈操作,而栈操作会进一步映射为底层的机器操作

分布式哈希和一致性哈希算法

时间秒杀一切 提交于 2020-01-18 17:25:33
目录 1、数据分布 2、哈希方式 3、一致性哈希方式 笔记来自分布式原理一书,供个人学习。 数据分布 单机系统与分布式系统的最大的区别在于问题的规模,即计算、存储的数据量的区别。将一个单机问题使用分布式解决,首先要解决的就是如何将问题拆解为可以使用多机分布式解决,使得 分布式系统中的每台机器负责原问题的一个子集。由于无论是计算还是存储,其问题输入对象都是数据,所以如何拆解分布式系统的输入数据成为分布式系统的基本问题,我们称这样的数据拆解为数据分布方式。 哈希方式 哈希方式是最常见的数据分布方式,其方法是按照数据的某一特征计算哈希值,并将哈希值与机器中的机器建立映射关系,从而将不同哈希值的数据分布到不同的机器上。所谓数据特征可以是 key-value 系统中的 key,也可以是其他与应用业务逻辑相关的值。例如,一种常见的哈希方式是按数据属于的用户 id 计算哈希值,集群中的服务器按0到机器数减 1 编号,哈希值除以服务器的个数,结果的余数作为处理该数据的服务器编号。工程中,往往需要考虑服务器的副本冗余,将每数台(例如 3)服务器组成一组,用哈希值除以总的组数,其余数为服务器组的编号。图 2-1 给出了哈希方式分数据的一个例子,将数据按哈希值分配到 4 个节点上。 哈希方式特点 : 1.每个节点只计算一部分数据;每个节点只存储一部分数据。 我们假设节点的数量没有变化(实际上不可能)

Hadoop面向行和面向列格式详解

你说的曾经没有我的故事 提交于 2020-01-17 13:58:42
前言 说到HDFS上面存储数据的格式,一般会想到面向行存储的Avro、SequenceFile(现在较少用);面向列存储的Parquet、ORC等,那么在存储的时候如何选择呢? 面向行存储格式(以Avro和SequenceFile为例) Avro基本概念 Avro是一个 独立于编程语言 的 数据序列化 系统。 引入的原因: 解决Writable类型缺乏语言的可移植性。 Avro数据文件主要是面向跨语言使用而设计的,因此,我们可以用Python语言写入文件,并用C语言来读取文件。 这样的话,Avro更易于与公众共享数据集;同时也更具有生命力,该语言将使得数据具有更长的生命周期,即使原先用于读/写该数据的语言已经不再使用。 Avro的数据格式 Avro和SequenceFile的格式:(Avro与SequenceFile最大的区别就是Avro数据文件书要是面向跨语言使用而设计的) SequenceFile由文件头和随后的一条或多条记录组成(如下图)。SequenceFile的前三个字节为SEQ(顺序文件代码),紧随其后的一个字节表示SequenceFile的版本号。文件头还包括其他字段,例如键和值类的名称、数据压缩细节、用户定义的元数据以及同步标识(这些字段的格式细节可参考SequenceFile的文档http://bit.ly/sequence_file_docs和源码)。如前所述

转 Clr vra C# 什么是CTS

偶尔善良 提交于 2020-01-16 16:44:34
什么是CTS 需要记住的是CLR所有功能的实现都是基于类型的。一个类型将功能提供给一个应用程序或者另一个类型来使用。通过类型,用一种编程语言写的代码能与用另一种语言写的代码沟通。由于类型是CLR的根本,微软专门为如何定义、使用和管理类型定义了一个正式的规范-- 通用类型系统(Common Type System),即CTS。 CTS对类型的定义和行为特性给出了规范,这些特性包括但不仅限于以下几点: 类成员(Field、Method、Property、Event) 访问可见性级别(private、family、family and assembly 、assembly、family or assembly 、public) 类型的继承 接口 虚方法 对象的生命周期 同时,所有引用类型都必须继承自System.Object的规则也是在CTS中定义的。 一般来说,CLS主要提供了一下功能: 建立一个支持跨语言集成、类型安全和高性能代码执行的框架环境。 提供一个支持完整实现多种编程语言的面向对象的模型。 定义各语言必须遵守的规则,有助于确保用不同语言编写的对象能够交互作用。 提供包含应用程序开发中使用的基元数据类型(如Boolean、Byte、Char、Int32 和 UInt64)的库。 CLR是如何工作的 借用维基百科上的一副图来描述CLR的运行流程:

【Hive】Hive基础知识

我怕爱的太早我们不能终老 提交于 2020-01-16 08:18:10
文章目录 1. hive产生背景 2. hive是什么 3. hive的特点 3.1优点: 3.2 缺点: 4. Hive 和 RDBMS 的对比 5. hive架构 5.1 用户接口层 5.2 Thrift Server层 5.3 元数据库层 5.4 Driver核心驱动层 6. hive的数据存储(整理一) 7. hive的数据组织形式(整理二) 7.1 库 7.2 表 7.2.1 从数据的管理权限分 7.2.1.1 内部表(管理表、managed_table) 7.2.1.2 外部表(external_table) 7.2.2 从功能上分 7.2.2.1 分区表 7.2.2.2 分桶表 7.3 视图 7.4 数据存储 7.4.1 元数据 7.4.2 表数据(原始数据) 1. hive产生背景 先分析mapreduce: mapreduce主要用于数据清洗或统计分析工作 并且绝大多数的场景都是针对的结构化数据的分析 而对于结构化的数据处理我们想到sql 但数据量非常大时,没办法使用mysql等,只能使用mapreduce 可是 mapreduce 的 缺点 是: 编程不便、成本太高 hive的诞生: 如果有一个组件可以针对大数据量的结构化数据进行数据分析,但是又不用写mapreduce,直接用sql语句实现就完美了 所以hive就诞生了 直接使用 MapReduce

【华为云技术分享】华为云MySQL新增MDL锁视图特性,快速定位元数据锁问题

﹥>﹥吖頭↗ 提交于 2020-01-16 03:14:02
MDL 锁(Metadata Lock),即元数据锁。元数据指的是描述数据的数据,对数据及信息资源的描述性信息,在数据库中元数据即数据字典信息,包括db,table,function,procedure,trigger,event等。 MySQL 从 5.5版本开始引入MDL锁,MDL锁主要为了保证元数据的一致性(主要是保证DDL操作与DML操作之间的一致性),用于处理不同线程操作同一元数据对象的同步与互斥问题,在各个业务场景中会十分频繁地使用到。 具体而言,MySQL引入MDL锁可以解决如下问题:一是事务隔离问题,比如在可重复读隔离级别下,会话A在2次查询期间,会话B对表结构做了修改,2次查询结果就会不一致,无法满足可重复读的要求。二是数据复制问题,比如会话A执行了多条更新语句期间,另外一个会话B做了表结构变更并且先提交,就会导致slave在重做时,先重做alter,再重做update时就会出现复制错误的现象。 何为MDL锁视图? 社区版MySQL无法获取表MDL锁的详细信息,当客户遇到类似“Waiting for metadata lock”的问题而阻塞DML或DDL后,由于无法确定各session之间的关联,往往无从下手,复杂情况下,只能重启实例,从而增加解决问题的成本,对业务产生较大影响。而且在业务场景较复杂的情况下,一旦涉及对数据库元数据的互斥操作(如DDL、LOCK

JPA(一):简介

喜欢而已 提交于 2020-01-15 14:49:53
JPA是什么 Java Persistence API:用于对象持久化的API Java EE 5.0平台标准的ORM规范,使得应用程序以统一的方式访问持久层。 JPA和Hibernate的关系   JPA是Hibernate的一个抽象(就像JDBC和JDBC驱动的关系): 1)JPA是规范:JPA本质上就是一种ORM规范,不是ORM框架------因为JPA并未提供ORM实现,它只是制定了一些规范,提供了一些编程的API接口,但具体实现则由ORM厂商提供实现。 2)Hibernate是实现:Hibernate除了作为ORM框架之外,它也是一种JPA实现。   从功能上来说,JPA是Hibernate功能的一个子集。 JPA的供应商   JPA的目的之一是制定一个可以由很多供应商实现的API,目前Hibernate3.2+、TopLink10.1+以及OpenJPA都提供了JPA的实现。    Hibernate 1)JAP的始作俑者就是Hibernate的作者; 2)Hibernate从3.2开始兼容JAP。    OpenJPA OpenJPA是Apache组织提供的开源项目    TopLink TopLink以前收费,如今早已开源。 JPA的优势 标准化   提供相同的API,保证了基于JPA开发的企业应用程序能够经过少量的修改就可以在不同的JPA框架下运行。 简单易容

Android自定义View之测量之MeasureSpec分析

。_饼干妹妹 提交于 2020-01-15 10:26:16
众所周知,Android的自定义View有三大方法,分别为测量、布局、绘制。 在两年多之前,我进行过绘制过程的大致梳理,然而就没有在研究过这个流程了。然后,直到有一天,一次面试过程中,被面试官问道:onMeasure(int widthMeasureSpec, int heightMeasureSpec)里,这个两个值应该如何去看? 我恍然大悟,我一直漏掉这一块(之前的Android自定义布局,这个方法几乎没有用到过)。尝试去了解,理解得云里雾里的。最近在博智林开发与机器人相关的App,于是乎,对于 | 与 & 这两个概念,以及负数在二进制中如何表示有了更深的理解。原来才知道,这个测量事件的两个值,是这样的理解。 Android的自定义View onMeasure方法,会带着两个参数,分别是widthMeasureSpec与heightMeasureSpec。 @Override protected void onMeasure ( int widthMeasureSpec , int heightMeasureSpec ) { super . onMeasure ( widthMeasureSpec , heightMeasureSpec ) ; } 那么,这个两个参数到底是什么含义呢?有人说是元数据,我回过头来看,确实理解了元数据这个概念,但是,如果你还没有理解

Autofac框架详解

*爱你&永不变心* 提交于 2020-01-15 00:29:40
一、组件   创建出来的对象需要从组件中来获取,组件的创建有如下4种(延续第一篇的Demo,仅仅变动所贴出的代码)方式:    1、类型创建RegisterType   AutoFac能够通过反射检查一个类型,选择一个合适的构造函数,创造这个对象的实例。主要通过RegisterType<T>() 和 RegisterType(Type) 两个方法以这种方式建立。   ContainerBuilder使用 As() 方法将Component封装成了服务使用。 builder.RegisterType<AutoFacManager>(); builder.RegisterType<Worker>().As<IPerson>();    2、实例创建   builder.RegisterInstance<AutoFacManager>(new AutoFacManager(new Worker()));    单例   提供示例的方式,还有一个功能,就是不影响系统中原有的单例:   builder.RegisterInstance(MySingleton.GetInstance()).ExternallyOwned();  //将自己系统中原有的单例注册为容器托管的单例   这种方法会确保系统中的单例实例最终转化为由容器托管的单例实例。    3、Lambda表达式创建