
Hive
文章平均质量分 76
lalaguozhe
陈昱康,对分布式计算和存储、调度、查询引擎、在线离线混部、数据安全,工具平台,高并发等方面有丰富研发和实践经验
展开
-
携程Hadoop跨机房架构实践
陈昱康,携程架构师,对分布式计算和存储、调度、查询引擎、在线离线混部、高并发等方面有浓厚兴趣。本文将分享携程Hadoop跨机房架构实践,包含Hadoop在携程的发展情况,整个跨机房项目的背景,我们跨机房的架构选型思路和落地实践,相关的改造和对未来的展望,希望给大家一些启迪。一、Hadoop在携程的落地及发展情况携程Hadoop是从2014年引进的,基本上每年较前一年以两倍的速度在...原创 2020-02-29 11:49:08 · 615 阅读 · 0 评论 -
linux kill进程和子进程小trick
我们的hive web是调用polestar restful service(https://github.com/lalaguozhe/polestar-1)来执行具体的hive或者shark语句的,这几天有用户说hive web上的kill按钮失效了,虽然已经显示停止了查询,但是其实提交到jobtracker的mapred job或者spark worker节点上作业还在running。我看了下,确实有这个问题。polestar对于每一条query执行的语句如下原创 2013-09-05 15:39:15 · 10671 阅读 · 1 评论 -
hive 0.10 0.11新增特性综述
我们的hive版本升迁经历了0.7.1 -> 0.8.1 -> 0.9.0,并且线上shark所依赖的hive版本也停留在0.9.0上,在这些版本上有我们自己的bug fix patch和feature enhancement。但是Hive的版本升级很快,新版本中修复了大量bug,新增了很多功能,非常令人兴奋,其中包括对未来hadoop升级为YARN的支持。所以我们准备将hive版本升级为0.11原创 2013-09-16 14:02:13 · 4341 阅读 · 2 评论 -
Hive小文件合并调研
背景Hive query将运算好的数据写回hdfs(比如insert into语句),有时候会产生大量的小文件,如果不采用CombineHiveInputFormat就对这些小文件进行操作的话会产生大量的map task,耗费大量集群资源,而且小文件过多会对namenode造成很大压力。所以Hive在正常job执行完之后,会起一个conditional task,来判断是否需要合并小文件,原创 2013-06-08 10:10:58 · 15678 阅读 · 1 评论 -
利用SemanticAnalyzerHook来过滤不加分区条件的Hive查询
我们Hadoop集群中将近百分之80的作业是通过Hive来提交的,由于Hive写起来简单便捷,而且我们又提供了Hive Web Client,所以使用范围很广,包括ba,pm,po,sales都在使用hive进行ad-hoc查询,但是hive在降低用户使用门槛的同时,也使得用户经常写不合理开销很大的语句,生成了很多的mapreduce job,占用了大量slot数,其中最典型的例子就是分区表查询,不指定分区条件,导致hive没有做partition pruner优化,进而读入了所有的表数据,占用大量IO和计原创 2013-09-24 18:52:32 · 6031 阅读 · 3 评论 -
hive0.11的hive server实现kerberos认证和impersonation中碰到的问题
最近在做hive0.9升级到0.11的工作,其中一个步骤就是将之前apply到0.9的patch re-apply到0.11中,有一个patch参考了hive metastore service的实现,对hive server增加了sasl kerberos认证,支持impersonate成client ugi的身份来启动作业(默认方式会以起hive service daemon的用户身份来执行,导致所有query共用一个用户启动作业)。原创 2013-10-23 14:12:50 · 4601 阅读 · 0 评论 -
Hive Server 2 调研,安装和部署
我们使用Hive Server 1已经很长时间了,有用户ad-hoc query,hive-web, wormhole,运营工具等都是通过hive server来提交语句。但是hive server极其不稳定,经常会莫名奇妙假死,导致client端所有的connection都被block住了。对此我们不得不配置一个crontab检查脚本,会不断执行"show tables"语句来检测server是否假死,如果假死,只能杀死daemon进程重启。另外Hive Server 1的concurrency支持不好,原创 2013-09-17 16:28:46 · 23957 阅读 · 2 评论 -
hive参数hive.mapred.mode分析
Hive配置中有个参数hive.mapred.mode,分为nonstrict,strict,默认是nonstrict如果设置为strict,会对三种情况的语句在compile环节做过滤:1. 笛卡尔积Join。这种情况由于没有指定reduce join key,所以只会启用一个reducer,数据量大时会造成性能瓶颈原创 2013-09-26 11:43:44 · 18503 阅读 · 1 评论 -
Hive禁止用户设置特定的hiveconf值
我们的Hive中开启了authentication(hive.security.authorization.enabled为true),为了防止用户在hive session中reset这个配置为false,绕过authorization策略,我们在setProcessor中会预先加载hiveConfSetBlackList,如果用户set blacklist中的hiveconf会抛异常,今天发现Hive0.11中已经增加了一个配置选项”hive.conf.restricted.list“,value用逗号原创 2013-10-23 18:49:40 · 3927 阅读 · 0 评论 -
wormhole提升hivereader读取速度方案
背景:最近dw用户反馈wormhole传输速度很慢,有些作业甚至需要3-4个小时才能完成,会影响每天线上报表的及时推送。我看了下,基本都是从Hive到其他数据目的地,也就是使用的是hivereader,日志上也显示hivereader实时传输速度很慢,问题应该在hivereader上先介绍下wormhole,wormhole是我们开发的一个高速数据传导工具,它支持多种异构数据源,架原创 2013-07-25 13:09:21 · 2806 阅读 · 0 评论 -
ORCFile测试
前段时间对ORCFile做了个测试,下面是测试报告PPT原创 2013-12-23 19:17:42 · 3972 阅读 · 1 评论 -
hive0.11升级碰到的坑
上周我们的production环境正式上线了hive 0.11/spark 0.8/shark 0.8,在前期的测试和回归过程中碰到了很多坑,这边记录一下,有其他公司要上的话,可以少走些弯路。1. Hive 0.11对于每一个分区维护了各自的Schema信息,而0.9中的分区是复用Table Schema来做字段的Serde,如果一张表新增字段,再创建分区,新建的分区会继承Table Sche原创 2013-12-23 16:54:59 · 4249 阅读 · 1 评论 -
Hive中查看数据来源文件和具体位置方法
通常用户在HIVE中用SELECT语句出来结果,无法确定结果是来自哪个文件或者具体位置信息,HIVE中考虑到了这点,在Virtual Column虚列中可以指定三个静态列:1. INPUT__FILE__NAME map任务读入File的全路径2. BLOCK__OFFSET__INSIDE__FILE 如果是RCFile或者是SequenceFile原创 2013-09-09 09:51:40 · 9966 阅读 · 2 评论 -
YARN Distributedshell解析
Hadoop 2.0的源代码中实现了两个基于yarn的application,一个是MapReduce,另一个是被当做如何写application的示例程序----Distributedshell,可以认为它就是YARN的workcount示例程序.distributedshell作用和它名字一样,分布式shell执行,将用户提交的一串shell命令或者一个shell脚本,由Applicati原创 2013-08-26 19:10:36 · 7019 阅读 · 0 评论 -
hive推测执行(speculative execution)
前几天在解决同事一个Hive Bug的时候,需要关闭task推测执行(speculative execution),在网上查了资料后有人提到需要set hive.mapred.map.tasks.speculative.execution=falseset hive.mapred.reduce.tasks.speculative.execution=false但是执原创 2013-06-11 22:02:00 · 7362 阅读 · 0 评论 -
Hive Map Side Join解析
通常Hadoop在做join策略的时候会有两种方式map-side join(也叫replication join)和reduce-side join(也叫repartition join或者common join)1. reduce side join利用了mapreduce框架的sort-merge机制来使得相同key的数据聚合在一起,在map阶段会分别读取输入dat原创 2013-06-13 10:40:04 · 7044 阅读 · 3 评论 -
Hive 常见问题(持续更新。。。)
Q: 是否有像类似于phpmyadmin一样的hive查询客户端,能以界面的方式查询hive语句和导出数据A: 有的,客户端的话可以使用squirrel来连接hive,squirrel是一个通用的数据库查询客户端,还有有一个开源项目phphiveadmin也不错,web方式访问hive,我自己也写了一个hive web client(https://github.com/lalag原创 2013-06-13 08:34:18 · 4686 阅读 · 4 评论 -
Hive Metastore Thrift Server Partition压力测试
测试环境:虚拟机10.1.77.84四核Intel(R) Xeon(R) CPU E5649 @ 2.53GHz,8G内存起单台metastore serverJVM args : -Xmx7000m -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC测试表Schema:table name: metastore_s原创 2013-06-10 11:22:25 · 5448 阅读 · 0 评论 -
hive left outer join的问题
最近BA用户反馈有两句看似很像的语句返回的结果数不一样,比较奇怪,怀疑是不是Hive的BugQuery 1 返回结果数6071select count(distinct reviewid) as dis_reviewcntfrom(select a.reviewidfrom bi.dpods_dp_reviewreport aleft outer join bi.dpods_dp原创 2013-07-26 18:13:53 · 7671 阅读 · 1 评论 -
Hive Compile解析(ppt版)
最近整理了下Hive Compile阶段的执行逻辑,先放上ppt版本原创 2013-07-16 10:20:24 · 6170 阅读 · 4 评论 -
MapReduce TotalOrderPartitioner 全局排序
我们知道Mapreduce框架在feed数据给reducer之前会对map output key排序,这种排序机制保证了每一个reducer局部有序,hadoop 默认的partitioner是HashPartitioner,它依赖于output key的hashcode,使得相同key会去相同reducer,但是不保证全局有序,如果想要获得全局排序结果(比如获取top N, bottom N),原创 2013-07-01 11:50:42 · 8916 阅读 · 1 评论 -
Hive Web查询语句插入mysql数据库报错
最近用户一直抱怨Hive Web Client在提交某些查询后,不会返回结果到前端,比如join五张表的语句就不行,只有去掉一个join先查询写入一张临时表,再和最后一张表join才行。我后来debug了下,发现语句确实是成功执行了的,而且结果文件已经dump到hive web的本地系统文件中,这就有点奇怪了,难道是输出格式不对或者结果中有脏字符,在逐一排除掉其他可能的问题原创 2013-06-12 11:37:08 · 1627 阅读 · 0 评论 -
hive datanucleus cache 不一致问题
现象:最近有用户反应hive里面对某张表修改了几个字段名后,在另外的窗口中还是看到原字段名,比较奇怪。我一开始想到可能是cache的问题,由于我们启用了两个metastore server,而用户客户端是随机选择一个建立链接的,所以有可能是修改表结构在第一个server中,而查询在第二个server,各自都有datanucleus cache所以导致不一致,我简单模拟了场景模拟原创 2013-06-27 10:24:02 · 3745 阅读 · 0 评论 -
Hive Metastore ObjectStore PersistenceManager自动关闭bug解析
最近在测试HCatalog,由于Hcatalog本身就是一个独立JAR包,虽然它也可以运行service,但是其实这个service就是metastore thrift server,我们在写基于Hcatalog的mapreduce job时候只要把hcatalog JAR包和对应的hive-site.xml文件加入libjars和HADOOP_CLASSPATH中就可以了。不过在测试的时候还是遇原创 2013-06-25 16:15:00 · 4472 阅读 · 0 评论 -
Hive RCFile合并作业产生重复数据问题
前几天有DW用户反馈,在往一张表(RCFile表)中用“insert overwrite table partition(xx) select ...” 插入数据的时候,会产生重复文件。看了下这个作业log,发现map task 000005起了两个task attempt ,第二个attempt是推测执行,并且这两个attemp都在task close函数里面重命名temp文件成正式文件,而原创 2013-06-14 18:28:38 · 3107 阅读 · 0 评论 -
通用查询引擎Restful service设计(目前支持hive,shark)
最近在设计开发一个通用查询Restful Service (https://github.com/lalaguozhe/polestar-1) ,名字叫polestar (中文名叫北极星,野营灯,指导者,希望把大家的查询语句都吸引汇聚过来,你懂的) ,之前查询Hive语句基本都是走Hive Server,但是Hive Server 1不太完善,比如1. Compiler memory leak原创 2013-07-29 13:20:53 · 4059 阅读 · 0 评论