自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yukangkk的技术博客

关注Hadoop, Hive, HBase, YARN, Shark, Spark, 大规模数据处理相关的开源项目,数据挖掘,个性化推荐,反作弊诚信

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 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 4129

原创 Hive Compile解析(ppt版)

最近整理了下Hive Compile阶段的执行逻辑,先放上ppt版本

2013-07-16 10:20:24 5572 4

原创 携程Hadoop跨机房架构实践

陈昱康,携程架构师,对分布式计算和存储、调度、查询引擎、在线离线混部、高并发等方面有浓厚兴趣。本文将分享携程Hadoop跨机房架构实践,包含Hadoop在携程的发展情况,整个跨机房项目的背景,我们跨机房的架构选型思路和落地实践,相关的改造和对未来的展望,希望给大家一些启迪。一、Hadoop在携程的落地及发展情况携程Hadoop是从2014年引进的,基本上每年较前一年以两倍的速度在...

2020-02-29 11:49:08 199

原创 ORCFile测试

前段时间对ORCFile做了个测试,下面是测试报告PPT

2013-12-23 19:17:42 3740 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 3842 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 3295

原创 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 12328

原创 利用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 4960 3

原创 Spark安装部署

Spark是UC Berkeley AMPLab开发的类MapRed计算框架。MapRed框架适用于batch job,但是由于它自身的框架限制,第一,pull-based heartbeat作业调度。第二,shuffle中间结果全部落地disk,导致了高延迟,启动开销很大。而Spark是为迭代式,交互式计算所生的。第一,它采用了actor model的akka作为通讯框架。第二,它使用了RDD分

2013-09-23 10:44:32 11137 1

原创 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 23106 2

原创 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 3985 2

原创 YARN & HDFS2 安装和配置Kerberos

今天尝试在开发集群上配置Kerberos,遇到一些问题,记录一下设置hadoop securitycore-site.xml hadoop.security.authentication kerberos hadoop.security.authorizatio

2013-09-11 16:28:49 12301 10

原创 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 8208 2

原创 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 7708 1

原创 Hadoop 2.x(YARN)安装配置LZO

今天尝试在Hadoop 2.x(YARN)上安装和配置LZO,遇到了很多坑,在这边记录整个安装配置过程1. 安装LZO下载lzo 2.06版本,编译64位版本,同步到集群中wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.06.tar.gzexport CFLAGS=-m64./configure -en

2013-09-02 15:17:27 6486 5

原创 HDFS 2中Namenode启动时WebUI的变化

在HDFS1中NameNode启动顺序是这样的:1. 读取Fsimage文件2. 读取edit logs文件,逐行执行里面的操作3. 写checkpoint,生成新的Fsimage(老的Fsimage + editlogs)4. 进入safe mode,等待datanodes的block reports,直到达到最小的replication数的block百分比才退出

2013-08-30 11:41:18 3466

原创 YARN加载本地库抛出Unable to load native-hadoop library解决办法

用官方的Hadoop 2.1.0-beta安装后,每次hadoop命令进去都会抛出这样一个WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable设置logger级别,看下

2013-08-30 10:30:44 27215 9

原创 YARN Distributedshell解析

Hadoop 2.0的源代码中实现了两个基于yarn的application,一个是MapReduce,另一个是被当做如何写application的示例程序----Distributedshell,可以认为它就是YARN的workcount示例程序.distributedshell作用和它名字一样,分布式shell执行,将用户提交的一串shell命令或者一个shell脚本,由Applicati

2013-08-26 19:10:36 6230

原创 LZOP解压查看文件小trick

我们的HDFS中有一部分落地数据是用LZO格式来压缩的(另一部分采用gz压缩的RCFile,MapReduce中间结果采用snappy压缩)。第一是因为它的压缩比和压缩/解压速度综合下来比较令人满意,第二是它只需要少量effort就能支持可切分(生成LZO文件后跑单机或分布式建索引程序),这样能充分利用MapReduce分而治之的编程思想和数据本地性。      之前要查看已经put到HD

2013-08-23 11:53:41 9920

原创 ResourceManager架构解析

RM作为master管理着所有的集群资源,它会和NM和特定application的AM共同工作1. NodeManagersNM从RM中获得指令,并管理着单节点上可用资源2. ApplicationMasters负责和RM协调,然后通知NM来启动资源容器RM有如下部件:1. RM和客户端交互的部件ClientRMService

2013-08-22 17:15:37 2867

原创 客户端MapReduce提交到YARN过程(二)

客户端通过RPC协议ClientRMProtocol提交Application,其实是提交了一个SubmitApplicationRequest,在Hadoop 1.0时代,是使用Writable作为序列化和反序列化框架的,而在2.0中hadoop已经废弃掉了,改用了ProtocolBuffer,它除了支持多种语言外最大的好处是向后兼容性,这样不同版本的AM,Client,RM和NM之间能相互通信

2013-08-21 13:19:10 2261 1

原创 客户端MapReduce提交到YARN过程(一)

在Mapreduce v1中是使用JobClient来和JobTracker交互完成Job的提交,用户先创建一个Job,通过JobConf设置好参数,通过JobClient提交并监控Job的进展,在JobClient中有一个内部成员变量JobSubmissionProtocol,JobTracker实现了该接口,通过该协议客户端和JobTracker通信完成作业的提交 public vo

2013-08-20 14:42:50 6543

原创 第二代map-reduce架构YARN解析

需求我们在考虑hadoop map-reduce框架的时候,最重要需求包括:1. reliability 可靠性,主要是resource manager可靠性2. availability 可用性 3. scalability 可扩展性,能支撑10000到20000节点的cluster4. backward compatibility 向后兼容性,支持之前写mapreduce a

2013-08-19 17:56:54 4574

原创 YARN安装配置初体验

本安装在开发实验环境中部署,只涉及到全局资源管理调度系统YARN的安装,HDFS还是第一代,没有部署HDFS Federation和HDFS HA,后续会加上。OS: CentOS Linux release 6.0 (Final) x86_64部署机器:dev80.hadoop 192.168.7.80dev81.hadoop 192.168.7.81dev82.hado

2013-08-19 12:10:54 11059

原创 通用查询引擎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 3635

原创 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 6860 1

原创 wormhole提升hivereader读取速度方案

背景:最近dw用户反馈wormhole传输速度很慢,有些作业甚至需要3-4个小时才能完成,会影响每天线上报表的及时推送。我看了下,基本都是从Hive到其他数据目的地,也就是使用的是hivereader,日志上也显示hivereader实时传输速度很慢,问题应该在hivereader上先介绍下wormhole,wormhole是我们开发的一个高速数据传导工具,它支持多种异构数据源,架

2013-07-25 13:09:21 2266

原创 HBase多线程建立HTable问题

最近在写wormhole的HBase plugin,需要分别实现hbase reader和hbase writer,在测试的时候会报错如下:2013-07-08 09:30:02,568 [pool-2-thread-1] org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBat

2013-07-08 11:56:18 8335 1

原创 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 8094

原创 hive datanucleus cache 不一致问题

现象:最近有用户反应hive里面对某张表修改了几个字段名后,在另外的窗口中还是看到原字段名,比较奇怪。我一开始想到可能是cache的问题,由于我们启用了两个metastore server,而用户客户端是随机选择一个建立链接的,所以有可能是修改表结构在第一个server中,而查询在第二个server,各自都有datanucleus cache所以导致不一致,我简单模拟了场景模拟

2013-06-27 10:24:02 2716

原创 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 3567

原创 “INSERT ON DUPLICATE KEY UPDATE”更新部分字段

之前的wormhole(我们开发的大规模批量数据传导工具,类似apache的sqoop,淘宝的datax)的mysql writer支持insert into 和 replace into两种方式入mysql表。现在有需求要支持update部分字段操作,比如计算完的一堆商户ID(ShopID)和对应PageView总数(ViewTotal),需要更新到一张多字段的Shop表对应字段中(Shop

2013-06-22 12:20:04 8841

原创 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 2531

原创 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 5821 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 4339 4

原创 Hive Web查询语句插入mysql数据库报错

最近用户一直抱怨Hive Web Client在提交某些查询后,不会返回结果到前端,比如join五张表的语句就不行,只有去掉一个join先查询写入一张临时表,再和最后一张表join才行。我后来debug了下,发现语句确实是成功执行了的,而且结果文件已经dump到hive web的本地系统文件中,这就有点奇怪了,难道是输出格式不对或者结果中有脏字符,在逐一排除掉其他可能的问题

2013-06-12 11:37:08 1463

原创 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 5882

原创 Map/Reduce Task JVM 堆大小设置优化

前一阵子发现用户提交的hive query和hadoop job会导致集群的load非常高,经查看配置,发现很多用户擅自将mapred.child.java.opts设置的非常大,比如-Xmx4096m(我们默认设置是-Xmx1024m),  导致了tasktracker上内存资源耗尽,进而开始不断swap磁盘上数据,load飙升TaskTracker在spawn一个map/redu

2013-06-11 20:34:44 14519 2

原创 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 4576

原创 Hive小文件合并调研

背景Hive query将运算好的数据写回hdfs(比如insert into语句),有时候会产生大量的小文件,如果不采用CombineHiveInputFormat就对这些小文件进行操作的话会产生大量的map task,耗费大量集群资源,而且小文件过多会对namenode造成很大压力。所以Hive在正常job执行完之后,会起一个conditional task,来判断是否需要合并小文件,

2013-06-08 10:10:58 11623 1

《操作系统原理及应用(Linux)》-王红ppt

《操作系统原理及应用(Linux)》-王红ppt

2009-03-07

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除