- 浏览: 109112 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
土豆蛋儿:
我想读取一个外部文件,以什么方式好了? 文件内容经常编辑
flume 自定义source -
土豆蛋儿:
大神,您好。
flume 自定义source
Hive 并发模型
使用案例
并发支持 (http://issues.apache.org/jira/browse/HIVE-1293) 是数据库的必须,而且他们的使用案例很好懂。至少,我们要尽可能支持并发读和写。添加几个发现当前已经锁定的锁,是有用的。这里没有一个直接的需求添加一个API显式获取锁,所以,所有锁都是隐式获取的。
hive定义一下模式的锁(注意不需要意向锁)
共享 (S)
排他 (X)
见名知意,多个共享锁可以同时获取,而排他锁会阻塞其他锁。
兼容性列表如下:
*
Existing Lock S X
Requested Lock
*
*
*
S
*
True False
X
*
False False
对于一些操作,锁的性质是有层次的。例如,一些分区操作,表也是被锁定(例如,保证表的分区正在创建时,表不能被删除)
锁模式获取背后的原理如下:
对于非分区表,锁定模式相当直观。当表正在读取时,一个S锁被获取。而对其他操作(插入数据到表,修改表的任何属性)就要获取X锁。
对于分区表,原理如下:
当读取表分区时,会获取表的S锁。对于其他操作,会获取分区的X锁。但是,如果修改仅仅是针对新分区,就会获取表的S锁,而修改是针对所有分区,会获取表的X锁。
所以,当旧分区读写时,新分区也可以被转换为RCFile。
无论何时,分区被锁定时,会获取所有的它的父节点的S锁。
基于这,操作的锁获取如下:
Hive Command Locks Acquired
select .. T1 partition P1 S on T1, T1.P1
insert into T2(partition P2) select .. T1 partition P1 S on T2, T1, T1.P1 and X on T2.P2
insert into T2(partition P.Q) select .. T1 partition P1 S on T2, T2.P, T1, T1.P1 and X on T2.P.Q
alter table T1 rename T2 X on T1
alter table T1 add cols X on T1
alter table T1 replace cols X on T1
alter table T1 change cols X on T1
alter table T1 add partition P1 S on T1, X on T1.P1
alter table T1 drop partition P1 S on T1, X on T1.P1
alter table T1 touch partition P1 S on T1, X on T1.P1
*alter table T1 set serdeproperties * S on T1
*alter table T1 set serializer * S on T1
*alter table T1 set file format * S on T1
*alter table T1 set tblproperties * X on T1
drop table T1 X on T1
为了避免死锁,这里提出一个非常简单的计划.所有锁定的对象按照字典排序,然后在按照锁定模式获取。注意一些场景,对象列表可能不知道——例如,动态分区,编译时不知道正在修改的分区列表。所以,列表会保守生成,由于分区的数量可能不知道,所以会在表或所知的前缀上获取排他锁。
添加两个可配置的参数,决定锁尝试时,锁尝试次数和等待时间。如果重试的次数是非常高的,它可以导致一个活锁。参考zookeeper recipes(http://hadoop.apache.org/zookeeper/docs/r3.1.2/recipes.html#sc_recipes_Locks),理解如何使用zookeeper apis实现read/write锁。需要注意的是,不是等待的锁请求将被拒绝。存在的锁将会释放,然后等待的锁会在尝试周期后继续尝试。
因为锁的分层特性,上面列出的规定recipe将无法正常工作:
表T的S锁规定如下:
调用create( ),创建一个路径名为"/warehouse/T/read-"的节点。协议中,这个锁定的节点会在后面使用。保证设置序列和临时标志。
在锁定的节点调用getChildren( ),不设置watch的标记
如果已经有一个子节点,路径名以"write-"和一个更小的序列号数字开头,已经被获取了,那么这个锁不能被获取。删除第一步骤创建的节点,返回。
否则授权锁。
表T的X锁规定如下:
调用create( ),创建一个路径名为"/warehouse/T/write-"的节点。协议中,这个锁定的节点会在后面使用。保证设置序列和临时标志。
在锁定的节点调用getChildren( ),不设置watch的标记
如果已经有一个子节点,路径名以"read-"或者"write-"和一个更小的序列号数字开头,已经被获取了,那么这个锁不能被获取。删除第一步骤创建的节点,返回。
否则授权锁。
拟定的计算,为了读饥饿了写,如果遇到长时间的读,会导致写的饥饿。
这个默认hive行为不会改变,并发不会支持。
关闭并发
关闭并发,可以修改下面的变量为false: hive.support.concurrency
调试
查看表的锁,可以执行下面的命令:
SHOW LOCKS <TABLE_NAME>;
SHOW LOCKS <TABLE_NAME> extended;
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>);
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>) extended;
使用案例
并发支持 (http://issues.apache.org/jira/browse/HIVE-1293) 是数据库的必须,而且他们的使用案例很好懂。至少,我们要尽可能支持并发读和写。添加几个发现当前已经锁定的锁,是有用的。这里没有一个直接的需求添加一个API显式获取锁,所以,所有锁都是隐式获取的。
hive定义一下模式的锁(注意不需要意向锁)
共享 (S)
排他 (X)
见名知意,多个共享锁可以同时获取,而排他锁会阻塞其他锁。
兼容性列表如下:
*
Existing Lock S X
Requested Lock
*
*
*
S
*
True False
X
*
False False
对于一些操作,锁的性质是有层次的。例如,一些分区操作,表也是被锁定(例如,保证表的分区正在创建时,表不能被删除)
锁模式获取背后的原理如下:
对于非分区表,锁定模式相当直观。当表正在读取时,一个S锁被获取。而对其他操作(插入数据到表,修改表的任何属性)就要获取X锁。
对于分区表,原理如下:
当读取表分区时,会获取表的S锁。对于其他操作,会获取分区的X锁。但是,如果修改仅仅是针对新分区,就会获取表的S锁,而修改是针对所有分区,会获取表的X锁。
所以,当旧分区读写时,新分区也可以被转换为RCFile。
无论何时,分区被锁定时,会获取所有的它的父节点的S锁。
基于这,操作的锁获取如下:
Hive Command Locks Acquired
select .. T1 partition P1 S on T1, T1.P1
insert into T2(partition P2) select .. T1 partition P1 S on T2, T1, T1.P1 and X on T2.P2
insert into T2(partition P.Q) select .. T1 partition P1 S on T2, T2.P, T1, T1.P1 and X on T2.P.Q
alter table T1 rename T2 X on T1
alter table T1 add cols X on T1
alter table T1 replace cols X on T1
alter table T1 change cols X on T1
alter table T1 add partition P1 S on T1, X on T1.P1
alter table T1 drop partition P1 S on T1, X on T1.P1
alter table T1 touch partition P1 S on T1, X on T1.P1
*alter table T1 set serdeproperties * S on T1
*alter table T1 set serializer * S on T1
*alter table T1 set file format * S on T1
*alter table T1 set tblproperties * X on T1
drop table T1 X on T1
为了避免死锁,这里提出一个非常简单的计划.所有锁定的对象按照字典排序,然后在按照锁定模式获取。注意一些场景,对象列表可能不知道——例如,动态分区,编译时不知道正在修改的分区列表。所以,列表会保守生成,由于分区的数量可能不知道,所以会在表或所知的前缀上获取排他锁。
添加两个可配置的参数,决定锁尝试时,锁尝试次数和等待时间。如果重试的次数是非常高的,它可以导致一个活锁。参考zookeeper recipes(http://hadoop.apache.org/zookeeper/docs/r3.1.2/recipes.html#sc_recipes_Locks),理解如何使用zookeeper apis实现read/write锁。需要注意的是,不是等待的锁请求将被拒绝。存在的锁将会释放,然后等待的锁会在尝试周期后继续尝试。
因为锁的分层特性,上面列出的规定recipe将无法正常工作:
表T的S锁规定如下:
调用create( ),创建一个路径名为"/warehouse/T/read-"的节点。协议中,这个锁定的节点会在后面使用。保证设置序列和临时标志。
在锁定的节点调用getChildren( ),不设置watch的标记
如果已经有一个子节点,路径名以"write-"和一个更小的序列号数字开头,已经被获取了,那么这个锁不能被获取。删除第一步骤创建的节点,返回。
否则授权锁。
表T的X锁规定如下:
调用create( ),创建一个路径名为"/warehouse/T/write-"的节点。协议中,这个锁定的节点会在后面使用。保证设置序列和临时标志。
在锁定的节点调用getChildren( ),不设置watch的标记
如果已经有一个子节点,路径名以"read-"或者"write-"和一个更小的序列号数字开头,已经被获取了,那么这个锁不能被获取。删除第一步骤创建的节点,返回。
否则授权锁。
拟定的计算,为了读饥饿了写,如果遇到长时间的读,会导致写的饥饿。
这个默认hive行为不会改变,并发不会支持。
关闭并发
关闭并发,可以修改下面的变量为false: hive.support.concurrency
调试
查看表的锁,可以执行下面的命令:
SHOW LOCKS <TABLE_NAME>;
SHOW LOCKS <TABLE_NAME> extended;
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>);
SHOW LOCKS <TABLE_NAME> PARTITION (<PARTITION_DESC>) extended;
发表评论
-
hive + hbase
2015-01-04 10:42 738环境配置: hadoop-2.0.0-cdh4.3.0 (4 ... -
hive 数据倾斜
2014-08-27 09:03 650链接:http://www.alidata.org/archi ... -
hive 分通总结
2014-08-27 08:42 550总结分析: 1. 定义了桶,但要生成桶的数据,只能是由其他表 ... -
深入了解Hive Index具体实现
2014-08-25 08:51 708索引是标准的数据库技术,hive 0.7版本之后支持索引。hi ... -
explain hive index
2014-08-24 16:44 1124设置索引: 使用聚合索引优化groupby操作 hive> ... -
Hive 中内部表与外部表的区别与创建方法
2014-08-15 17:11 728分类: Hive 2013-12-07 11:56 ... -
hive map和reduce的控制
2014-08-15 16:14 600一、 控制hive任务中的map数: 1. 通 ... -
hive 压缩策略
2014-08-15 15:16 1732Hive使用的是Hadoop的文件 ... -
hive 在mysql中创建备用数据库
2014-08-15 09:21 844修改hive-site.xml <property> ... -
HIVE 窗口及分析函数
2014-08-11 16:21 1156HIVE 窗口及分析函数 使 ... -
hive 内置函数
2014-08-11 09:06 30321.sort_array(): sort_array(arra ... -
hive lateral view
2014-08-09 14:59 1994通过Lateral view可以方便的将UDTF得到的行转列的 ... -
hive数据的导出
2014-07-28 21:53 423在本博客的《Hive几种数据导入方式》文章中,谈到了Hive中 ... -
hive udaf
2014-07-25 16:11 720package com.lwz.udaf; import o ... -
hive自定义InputFormat
2014-07-25 09:13 825自定义分隔符 package com.lwz.inputf; ... -
HiveServer2连接ZooKeeper出现Too many connections问题的解决
2014-07-24 08:49 1696HiveServer2连接ZooKeeper出现Too man ... -
hive 常用命令
2014-07-17 22:22 6441.hive通过外部设置参数传入脚本中: hiv ... -
CouderaHadoop中hive的Hook扩展
2014-07-16 21:18 3267最近在做关于CDH4.3.0的hive封装,其中遇到了很多问题 ... -
利用SemanticAnalyzerHook回过滤不加分区条件的Hive查询
2014-07-16 16:43 1426我们Hadoop集群中将近百分之80的作业是通过Hive来提交 ... -
hive 的常用命令
2014-07-16 10:07 0设置、查看hive当前的角色: set sys ...
相关推荐
hive实现并发机制:hive里,同一sql里,会涉及到n个job,默认情况下,每个job是顺序执行的。 如果每个job没有前后依赖关系,可以并发执行的话,可以通过设置该参数 set hive.exec.parallel=true,实现job并发执行...
hive的安装其实有两部分组成,一个是Server端、一个是客户端,所谓服务端其实就是Hive管理Meta的那个Hive,服务端可以装在任何节点上,当hive服务并发量不高时推荐部署在数据节点上,并发量高时推荐单独部署在若干台...
这样是不可以并发调用 hive 的。(1 分) (2)、本地模式:通过网络连接到一个数据库中,是最经常使用到的模式。假设使用本机 mysql 服务器存储元数据。这种存储方式需要在本地运行一个 mysql 服务器。(1 分) (3)、...
就像您的原始数据将移动到 ORC 文件格式的通用数据一样,您的应用程序数据可以以 Phoenix 表结尾,以实现极低的延迟和并发访问。 该项目旨在通过提供从 Hive 到 Phoenix 的简单 StorageHandler,使最后一步像 ...
ERROR : FAILED: Execution Error, return code 30041 from org.apache.hadoop.hive.ql.exec.spark.SparkTask. 前言报错信息异常分析配置改动后记 前言 在成功消除Cloudare管理界面上那些可恶的警告之后,我又对yarn...
大数据面试题,大数据成神之路开启...Flink/Spark/Hadoop/Hbase/Hive... 已经更新100+篇~ 关注公众号~ 大数据成神之路目录 大数据开发基础篇 :skis: Java基础 :memo: NIO :open_book: 并发 :...
目录Hive 光标数据蜂巢错误响应错误其他错误通讯录API 并发控制client.new_contact 客户联系方式client.update_contact(待定) client.contacts_tags(待定) client.contacts_subscribers(待定) client.update_...
阿里面试总结 垂直打击之JVM剖析 大数据-大数据批处理之Hive详解 大数据-海量日志收集利器...轻松搞定面试中各种并发问题 (1) 深入分析https的底层原理 深入解读Tomcat8源码 深入浅出JVM 这辈子Tomcat源码是一定要看的
PHP页面有一个浏览量统计每秒有200并发,造成insert给mysql造成很大压力 lnmp环境,其他页面内容都做了缓存了,没有...分离之后,查询在从库是做(甚至是导入Hive之类专门的分布式系统来做),主库上可以去掉索引,提升
Java前后开发面试题,大厂进阶之路,基于JavaGuide、Cyc大佬、牛客...包含计算机网络知识、JavaSE、JVM、Spring、Springboot、SpringCloud、Mybatis、多线程并发、netty、MySQL、MongoDB、Elasticsearch、Redis、HBASE
购票系统是一种用于方便用户购买门票、交通票、电影票等各种类型票务的系统。这种系统通常涉及以下几个方面的功能和流程: ...大数据技术:包括Hadoop、Spark、Hive等用于处理和分析大规模数据集的技术。
通过这个工具可以看到每个任务执行的节点,先后顺序,连在一起就是一个完整的流程控制图,可以和hive等一起使用
从Java基础的数据类型、jdk1.8的使用、IO、集合、线程等等技术以及一些常用框架,netty、mina、springboot、kafka、storm、zookeeper、es、redis、hbase、hive等等。 使用 下载: git clone ...
大数据程序员面试宝典——不同问题类型方式 汇集了本人在平常工作中遇到的一些面试题以及个人的解答,并附上网络上的一些解决方法。 大体涵盖以下知识 bigdata :hadoop、flink、hbase、hive、impala、算法、设计...
选型数据库:Mysql、TiDB、Apache Doris、Impala+Kudu、Presto+Kudu、Hive、ClickHouse、Hudi。每一款数据库详细的测评结果,测评维度分为:维度/引擎、全表scan性能、事实表查询性能、宽表查询性能、TP查询性能、AP...
选型数据库:Mysql、TiDB、Apache Doris、Impala+Kudu、Presto+Kudu、Hive、ClickHouse、Hudi。每一款数据库详细的测评结果,测评维度分为:维度/引擎、全表scan性能、事实表查询性能、宽表查询性能、TP查询性能、AP...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...
Greenplum是一个面向数据仓库应用的关系型数据库,它基于流行的PostgreSQL开发,因为有良好的体系结构,所以在数据存储,高并发,高可用,线性扩展,反应速度,易用性和性价比等方面有非常明显的优势,非常受欢迎.进入大数据...