元数据

MySQL-锁

微笑、不失礼 提交于 2020-01-14 22:07:13
MySQL-锁 文章目录 MySQL-锁 锁的分类 按照功能分 按照锁的粒度分 全局锁 表锁 表读锁 表写锁 行锁 快照读与当前读 加锁方式 加锁方式选择 间隙锁 MVCC和间隙锁 元数据锁 元数据锁导致的阻塞 锁的分类 按照功能分 共享锁(读锁/S锁) 其他不可获得X锁 所有连接均可读取,所有连接均不可修改 排他锁(写锁/X锁) 其他不可获得S/X锁 加锁连接可以读取可以修改,其他连接均不可读写 按照锁的粒度分 全局锁 、 表锁 、 行锁 等… 全局锁 MySQL全局锁会使用 读锁 锁定 所有库中所有的表 。 加锁: FLUSH TABLES WITH READ LOCK; 解锁: UNLOCK TABLES; 全局锁加锁后,所有的连接只能读表,加锁的连接进行表中数据的修改会报错。其他连接进行数据修改会阻塞,直到全局锁解锁后返回。一般用在整个库做备份时。 表锁 MySQL表锁在事务需要 更新大表的大部分或全部数据时 。如果使用行锁加锁效率极低,因此这种情况下一般使用表锁,事务涉及多个表时可能会因此死锁,也可以考虑使用表锁来避免死锁。 表锁分为 表读锁 和 表写锁 : 表读锁 lock tables t read; 表读锁时所有连接都可以读,本连接修改会报错,其他连接修改会阻塞,直到锁释放才返回。 表写锁 lock tables t write; 表写锁时,本连接可以读和写

【JVM】内存管理-HotSpot虚拟机

房东的猫 提交于 2020-01-13 22:09:35
HotSpot虚拟机在Java堆中对象分配。布局和访问的全过程。 对象的创建 在语言层面上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可完全确定,为对象分配空间的任务实际上便等同于把一块确定大小的内存块从Java堆中划分出来。 如何划分空间 假设Java堆中内存是 绝对规整 的,所有被使用过的内存都被放在一边,空闲的内存被放在另一边,中间放着一个指针作为分界点的指示器,那所分配内存就仅仅是把那个指针向空闲空间方向挪动一段与对象大小相等的距离,这种分配方式称为**“指针碰撞” (Bump ThePointer)。但如果Java堆中的内存并 不是规整 的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录

大数据HIVE安装与使用

拟墨画扇 提交于 2020-01-13 07:03:25
下载linux下的hive包 因为我是用的cdh的hadoop(相较于开源hadoop,cdh因为有专门的公司维护解决bug),所以下载 开始解压 tar -zxvf hive-0.13.1-cdh5.3.6.tar.gz 配置相关环境变量,直接使用hive就能启用 export HIVE_HOME=/opt/module/hive export PATH=$HIVE_HOME/bin 安装mysql hive的元数据默认是保存在derby微型数据库中的,所以我们安装一个mysql将元数据保存在mysql中,两种方式 一 rpm -qa|grep mysql 查看mysql是否安装,安装了的话卸载 rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64 开始安装 1yum安装mysqlserver yum install -y mysql-server service mysqld start 2开机自启 chkconfig mysqld on 3安装mysql connector yum install -y mysql-connector-java 4将mysql connector保存到hive的lib下 cp /usr/share/java/mysql-connector-java-5.1.17.jar /opt/module/hive

HIVE配置mysql metastore

假如想象 提交于 2020-01-13 03:09:30
HIVE配置mysql metastore hive中除了保存真正的数据以外还要额外保存用来描述库、表、数据的数据,称为hive的元数据。这些元数据又存放在何处呢? 如果不修改配置hive默认使用内置的derby数据库存储元数据。 derby是apache开发的基于java的文件型数据库。 可以检查之前执行命令的目录,会发现其中产生了一个metastore.db的文件,这就是derby产生的用来保存元数据的数据库文件。 derby数据库仅仅用来进行测试,真正使用时会有很多限制。 最明显的问题是不能支持并发。 经测试可以发现,在同一目录下使用无法同时开启hive,不同目录下可以同时开启hive但是会各自产生metastore.db文件造成数据无法共同访问。 所以真正生产环境中我们是不会使用默认的derby数据库保存hive的元数据的。 hive目前支持derby和mysql来存储元数据。 配置hive使用mysql保存元数据信息: 删除hdfs中的/user/hive hadoop fs -rmr /user/hive 复制hive/conf/hive-default.xml.template为hive-site.xml cp hive-default.xml.template hive-site.xml 在<configuration>中进行配置 <property> <name

Hive的配置详解和日常维护

六月ゝ 毕业季﹏ 提交于 2020-01-13 02:48:09
Hive的配置详解和日常维护   一.Hive的参数配置详解 1>.mapred.reduce.tasks   默认为-1。指定Hive作业的reduce task个数,如果保留默认值,则Hive 自己决定应该使用多少个task。 2>.hive.mapred.mode   2.x下的默认值为strict,1.x以及之前的版本默认值为nonstrict。如果 设为strict,Hive将禁止一些危险的查询:分区表未用分区字段筛选; order by语句后未跟limit子句;join后没有on语句从而形成笛卡尔积。 3>.hive.merge.mapfiles   默认为true。如果设置为true,Hive在只有map(没有reduce)的作业结束时合并小文件,否则不会进行合并。 4>.hive.merge.mapredfiles   默认为false。如果设置为true,Hive在map/reduce作业结束时合并小文 件,否则不会进行合并。注意和上一个参数区别。 5>.hive.exec.parallel   默认为false。是否启用作业并发执行,如果启用,一些不冲突的task可 以同时执行,例如在join语句中访问不同表获取数据的task 6>.hive.exec.reducers.bytes.per.reducer   该参数在0.14.0之前默认为1,000,000

Linux-03-命令使用

一曲冷凌霜 提交于 2020-01-13 01:20:40
一、常见命令 1、 常见操作 mkdir -p ./a/b/c //递归创建多层目录 mkdir ./abc/{,x,y,z}dir //在abc下创建xdir,ydir,cdir文件夹 cd ~syraer //进入用户名syraer下的用户目录 cd -//返回之前的目录 rm -f //强制删除 rm -rf //递归强制删除 hash -r //清除命令缓存 mv 1 2 //移动文件->目录下 cp -r /a //拷贝文件目录 ln 1 2 //硬链接(指向同一个地址单元,计数增加或减少,删除文件,计数减少) ln -s 1 2 //软连接(指向同一个文件,计数只增加不减少。删除文件,链接报错) stat ./etc //元数据(修改权限等元数据信息,change时间会发生变化。修改文件,元数据变化,访问时间变化,文件变化,三个时间都会发生变化) touch //主要用于修改元数据三个时间或者创建一个空文件 [root@node01 /]# stat /etc File: `/etc' Size: 4096 Blocks: 8 IO Block: 4096 directory Device: 803h/2051d Inode: 917505 Links: 61 Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/

数据源、元数据、数据元

对着背影说爱祢 提交于 2020-01-10 16:16:44
##数据源(data source) 顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体。在数据源中存储了所有建立数据库连接的信息。就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数据源名称,你可以找到相应的数据库连接。 ##元数据(metadata) 描述其他数据的数据(data about other data)。 1、主要是描述数据属性(property)的信息; 2、描述数据的数据; 3、关于数据的结构化数据; 4、描述数据的内容、覆盖范围、质量、管理方式、数据的所有者、数据的提供方式等信息,是数据和数据用户之间的桥梁。 举例: 学生信息表包括:姓名、性别、学号等。 姓名、性别、学号都是数据元,但是这些数据元有自己的元数据,即描述数据,分别是长度、类型、值域等。 对于学生信息表而言,姓名、性别、学号是描述学生信息的数据,是它的元数据。 数据是手提箱,而元数据是它上面的标牌。 数据是文件夹,而元数据是文件夹上面的标签。 ##数据元(Data element) 可理解为数据的基本单元。 数据元概念: 1、用一组属性描述定义、标识、表示和允许值的数据单元。 2、又称数据类型,通过定义、标识、表示以及允许值等一系列属性描述的数据单元。在特定的语义环境中被认为是不可再分的最小数据单元。 3、数据元一般由三部分组成:对象、特性、表示 举例: “执业类别代码

DeepStream系列之SDK文件夹解析

不羁的心 提交于 2020-01-10 13:58:55
系列文章目录 (一) DeepStream系列之环境配置安装 (二) DeepStream系列之SDK文件夹解析 0 背景 在上一篇文章中,我们对deepstream的安装进行了介绍,本篇对SDK的文件结构进行解析,从而对SDK有更清楚的认识。 1 整体结构 如果使用deb包安装的SDK,则 安装 目录位于 /opt/nvidia/deepstream/deepstream-x.x 。如果使用压缩包安装的,则位于我们压缩包解压的位置,利用tree -d指令进行目录分析,输出如下 . ├── samples │ ├── configs │ │ └── deepstream-app │ ├── models │ │ ├── Primary_Detector │ │ ├── Primary_Detector_Nano │ │ ├── Secondary_CarColor │ │ ├── Secondary_CarMake │ │ ├── Secondary_VehicleTypes │ │ └── Segmentation │ │ ├── industrial │ │ └── semantic │ └── streams └── sources ├── apps │ ├── apps-common │ │ ├── includes │ │ └── src │ └── sample

WCF元数据交换

拟墨画扇 提交于 2020-01-10 08:54:55
服务有两种方案发布自己的元数据。 一种是基于HTTP-GET协议提供元数据 , 另一种是使用专门的元数据交换终结点的方式 。WCF能够为服务自动提供基于HTTP-GET的元数据,但需要显式地添加服务行为(Behavior)以支持这一功能。 基于HTTP-GET协议提供元数据: 如下:所有引用了定制<behavior>配置节的托管服务都支持基于HTTP-GET协议实现元数据交换。 <behaviors> <serviceBehaviors> <behavior name=""> <serviceMetadata httpGetEnabled="true" /> </behavior> </serviceBehaviors> </behaviors> 一旦启用了基于HTTP-GET的元数据交换,在浏览器中就可以通过HTTP基地址(如果存在)进行访问。 元数据交换终结点 元数据交换终结点是一种特殊的终结点,有时候又被称为MEX终结点。服务能够根据元数据交换终结点发布自己的元数据。 元数据交换终结点支持元数据交换的行业标准,在WCF中表现为IMetadataExchange接口: [ServiceContract(...)] public interface IMetadataExchange { [OperationContract(...)] Message Get(Message

redis内置集群通信机制

廉价感情. 提交于 2020-01-10 03:56:17
你能聊聊redis cluster集群模式的原理吗? 1、面试题redis集群模式的工作原理能说一下么?在集群模式下,redis的key是如何寻址的?分布式寻址都有哪些算法?了解一致性hash算法吗? 2、面试官心理分析 在以前,如果前几年的时候,一般来说,redis如果要搞几个节点,每个节点存储一部分的数据,得借助一些中间件来实现,比如说有codis,或者twemproxy,都有。有一些redis中间件,你读写redis中间件,redis中间件负责将你的数据分布式存储在多台机器上的redis实例中。这两年,redis不断在发展,redis也不断的有新的版本,redis cluster,redis集群模式,你可以做到在多台机器上,部署多个redis实例,每个实例存储一部分的数据,同时每个redis实例可以挂redis从实例,自动确保说,如果redis主实例挂了,会自动切换到redis从实例顶上来。现在redis的新版本,大家都是用redis cluster的,也就是redis原生支持的redis集群模式,那么面试官肯定会就redis cluster对你来个几连炮。要是你没用过redis cluster,正常,以前很多人用codis之类的客户端来支持集群,但是起码你得研究一下redis cluster吧。 redis如何在保持读写分离+高可用的架构下,还能横向扩容支持1T+的海量数据