hadoop
文章平均质量分 76
lalaguozhe
陈昱康,对分布式计算和存储、调度、查询引擎、在线离线混部、数据安全,工具平台,高并发等方面有丰富研发和实践经验
展开
-
客户端MapReduce提交到YARN过程(二)
客户端通过RPC协议ClientRMProtocol提交Application,其实是提交了一个SubmitApplicationRequest,在Hadoop 1.0时代,是使用Writable作为序列化和反序列化框架的,而在2.0中hadoop已经废弃掉了,改用了ProtocolBuffer,它除了支持多种语言外最大的好处是向后兼容性,这样不同版本的AM,Client,RM和NM之间能相互通信原创 2013-08-21 13:19:10 · 2360 阅读 · 1 评论 -
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 · 27727 阅读 · 9 评论 -
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 · 3828 阅读 · 0 评论 -
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 · 6774 阅读 · 5 评论 -
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 · 9802 阅读 · 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 · 10588 阅读 · 1 评论 -
YARN & HDFS2 安装和配置Kerberos
今天尝试在开发集群上配置Kerberos,遇到一些问题,记录一下设置hadoop securitycore-site.xml hadoop.security.authentication kerberos hadoop.security.authorizatio原创 2013-09-11 16:28:49 · 13234 阅读 · 10 评论 -
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 · 4239 阅读 · 2 评论 -
Hive小文件合并调研
背景Hive query将运算好的数据写回hdfs(比如insert into语句),有时候会产生大量的小文件,如果不采用CombineHiveInputFormat就对这些小文件进行操作的话会产生大量的map task,耗费大量集群资源,而且小文件过多会对namenode造成很大压力。所以Hive在正常job执行完之后,会起一个conditional task,来判断是否需要合并小文件,原创 2013-06-08 10:10:58 · 15580 阅读 · 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 · 5899 阅读 · 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 · 4540 阅读 · 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 · 23834 阅读 · 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 · 18151 阅读 · 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 · 3781 阅读 · 0 评论 -
wormhole提升hivereader读取速度方案
背景:最近dw用户反馈wormhole传输速度很慢,有些作业甚至需要3-4个小时才能完成,会影响每天线上报表的及时推送。我看了下,基本都是从Hive到其他数据目的地,也就是使用的是hivereader,日志上也显示hivereader实时传输速度很慢,问题应该在hivereader上先介绍下wormhole,wormhole是我们开发的一个高速数据传导工具,它支持多种异构数据源,架原创 2013-07-25 13:09:21 · 2652 阅读 · 0 评论 -
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 · 9241 阅读 · 2 评论 -
ORCFile测试
前段时间对ORCFile做了个测试,下面是测试报告PPT原创 2013-12-23 19:17:42 · 3921 阅读 · 1 评论 -
YARN Distributedshell解析
Hadoop 2.0的源代码中实现了两个基于yarn的application,一个是MapReduce,另一个是被当做如何写application的示例程序----Distributedshell,可以认为它就是YARN的workcount示例程序.distributedshell作用和它名字一样,分布式shell执行,将用户提交的一串shell命令或者一个shell脚本,由Applicati原创 2013-08-26 19:10:36 · 6878 阅读 · 0 评论 -
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 · 14999 阅读 · 2 评论 -
LZOP解压查看文件小trick
我们的HDFS中有一部分落地数据是用LZO格式来压缩的(另一部分采用gz压缩的RCFile,MapReduce中间结果采用snappy压缩)。第一是因为它的压缩比和压缩/解压速度综合下来比较令人满意,第二是它只需要少量effort就能支持可切分(生成LZO文件后跑单机或分布式建索引程序),这样能充分利用MapReduce分而治之的编程思想和数据本地性。 之前要查看已经put到HD原创 2013-08-23 11:53:41 · 10157 阅读 · 0 评论 -
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 · 11464 阅读 · 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 · 3997 阅读 · 0 评论 -
Hive Compile解析(ppt版)
最近整理了下Hive Compile阶段的执行逻辑,先放上ppt版本原创 2013-07-16 10:20:24 · 6111 阅读 · 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 · 8795 阅读 · 1 评论 -
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 · 7198 阅读 · 0 评论 -
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 · 5300 阅读 · 0 评论 -
客户端MapReduce提交到YARN过程(一)
在Mapreduce v1中是使用JobClient来和JobTracker交互完成Job的提交,用户先创建一个Job,通过JobConf设置好参数,通过JobClient提交并监控Job的进展,在JobClient中有一个内部成员变量JobSubmissionProtocol,JobTracker实现了该接口,通过该协议客户端和JobTracker通信完成作业的提交 public vo原创 2013-08-20 14:42:50 · 6852 阅读 · 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 · 7599 阅读 · 1 评论 -
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 · 2975 阅读 · 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 · 6943 阅读 · 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 · 4611 阅读 · 4 评论 -
ResourceManager架构解析
RM作为master管理着所有的集群资源,它会和NM和特定application的AM共同工作1. NodeManagersNM从RM中获得指令,并管理着单节点上可用资源2. ApplicationMasters负责和RM协调,然后通知NM来启动资源容器RM有如下部件:1. RM和客户端交互的部件ClientRMService原创 2013-08-22 17:15:37 · 3191 阅读 · 0 评论 -
hive datanucleus cache 不一致问题
现象:最近有用户反应hive里面对某张表修改了几个字段名后,在另外的窗口中还是看到原字段名,比较奇怪。我一开始想到可能是cache的问题,由于我们启用了两个metastore server,而用户客户端是随机选择一个建立链接的,所以有可能是修改表结构在第一个server中,而查询在第二个server,各自都有datanucleus cache所以导致不一致,我简单模拟了场景模拟原创 2013-06-27 10:24:02 · 3636 阅读 · 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 · 4325 阅读 · 0 评论 -
第二代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 · 4856 阅读 · 0 评论 -
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 · 4169 阅读 · 1 评论