摘要:目前hive不支持 in或not in 中包含查询子句的语法,所以只能通过leftjoin实现。假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含一个字段,uid。in查询如果要查询当天登陆的注册用户,需要用in查询,hive sql如下:select login.uid from login left outer join regusers on login.uid=regusers.uid where regusers.uid is not null如果login表和regusers表按天分区,字
阅读全文
随笔分类 - hadoop
记一下hadoop那点事儿
摘要:表或者字段有中文的时候需要修改hive的元数据库的设置。以mysql为例子,当mysql的字符集设置成utf8的时候使用hive会有问题,详细见hive的wiki。所以当hive使用mysql作为元数据库的时候mysql的字符集要设置成latin1。为了保存那些utf8的中文,要将mysql中存储注释的那几个字段的字符集单独修改为utf8。修改字段注释字符集alter table COLUMNS modify column COMMENT varchar(256) character set utf8;修改表注释字符集alter table TABL_PARAMS modify column
阅读全文
摘要:CommonJoin最为普通的join策略,不受数据量的大小影响,也可以叫做reduce side join ,最没效率的一种join方式. 它由一个mapreduce job 完成.首先将大表和小表分别进行map 操作, 在map shuffle 的阶段每一个mapoutput key 变成了table_name_tag_prefix + join_column_value , 但是在进行partition 的时候它仍然只使用join_column_value 进行hash.每一个reduce 接受所有的map 传过来的split , 在reducce 的shuffle 阶段,它将mapou
阅读全文
摘要:由于手上负责的hadoop集群需要对公司外部提供服务,所有会有多个部门访问我们的hadoop集群,这个就涉及到了hadoop的安全性。而hadoop的安全性是很弱的,只提供类似linux文件系统的帐户权限验证,而且可以通过简单的手段冒充用户名,如果有恶意用户,直接冒充为hadoop的super用户,那整个集群是很危险的。hadoop支持kerberos,希望可以通过kerberos,限制恶意用户伪造用户。预研过程中,发现kerberos生成证书和配置的步骤相当繁琐,首次配置也可以接受,但是对于用户权限的修改,机器的减容扩容,感觉会造成证书要重新生成,再分发证书,重启hadoop。而且还要考虑k
阅读全文
摘要:背景在日常生活中,包括在设计计算机软件时,我们经常要判断一个元素是否在一个集合中。比如在字处理软件中,需要检查一个英语单词是否拼写正确(也就是要判断它是否在已知的字典中);在 FBI,一个嫌疑人的名字是否已经在嫌疑名单上;在网络爬虫里,一个网址是否被访问过等等。最直接的方法就是将集合中全部的元素存在计算机中,遇到一个新元素时,将它和集合中的元素直接比较即可。一般来讲,计算机中的集合是用哈希表(hash table)来存储的。它的好处是快速准确,缺点是费存储空间。当集合比较小时,这个问题不显著,但是当集合巨大时,哈希表存储效率低的问题就显现出来了。比如说,一个象 Yahoo,Hotmail 和
阅读全文
摘要:在分布式算法领域,有个非常重要的算法叫Paxos, 它的重要性有多高呢,Google的Chubby [1]中提到all working protocols for asynchronous consensus we have so far encountered have Paxos at their core.关于Paxos算法的详述在维基百科中有更多介绍,中文版介绍的是choose value的规则[2],英文版介绍的是Paxos 3 phase commit的流程[3],中文版不是从英文版翻译而是独立写的,所以非常具有互补性。Paxos算法是由Leslie Lamport提出的,他在Pa
阅读全文
摘要:大部分是小作业,大多数运行几分钟或十几分钟.绝大多数在半小时之内。占用的slot数一般为几十到几百。集群同时在运行的作业数比较多。繁忙的时候同时运行的作业有六百多个, 每天完成的作业数万个。有些作业被分析多个要求顺序执行的小作业。各作业的依赖性比较大, 后面一组作业的开始时间受限前一组作业的结束时间Map slots与Reduce slots使用率不高,特别是Reduce Slots。作业周期性比较明显,每个晚上1点到5点左右,集群处于相对忙的状态,白天很空闲。作业时效性要求较强。大部分作业要求在上午8点前执行结束,特别是涉及前端产品,如量子统计、数据魔方等业务的作业。如果上班前作业没有执行完
阅读全文
摘要:国内外使用Hadoop的公司比较多,全球最大的Hadoop集群在雅虎,有大约25,000个节点,主要用于支持广告系统与网页搜索。国内用Hadoop的主要有百度、淘宝、网易、华为、中国移动等,其中淘宝的Hadoop集群属于较大的(如果不是最大)。淘宝Hadoop集群现在超过1700个节点,服务于用于整个阿里巴巴集团各部门,数据来源于各部门产品的线上数据库(Oracle, MySQL)备份,系统日志以及爬虫数据,截止2011年9月,数量总量已经超过17个PB,每天净增长20T左右。每天在Hadoop集群运行的MapReduce任务有超过4万(有时会超过6万),其中大部分任务是每天定期执行的统计任务
阅读全文
摘要:你能想象一个企业的数据仓库究竟有多大吗?虽然下面的数据来自于两年前,但是还是挺震撼的。相信目前,这些巨型的数据仓库“怪物”的体积又增大了几倍。行业分析师Curt Monash曾经见过许多非常大型的数据仓库,并进行了总结,其中用到的数据管理软件工具更是多种多样,有传统的Teradata数据仓库,也有Greenplum这样的MPP数据库,还有许多开源的技术,比如Hadoop/Hive等。 1、ebay:公司有超过6.5 PB的数据库运行在Greenplum上,另外2.5 PB的企业数据仓库运行在Teradata上。 2、Facebook:脸书公司刚刚完成IPO,它们是著名的互联网数据巨鳄,也...
阅读全文
摘要:大数据量的问题是很多面试笔试中经常出现的问题,比如baidu google 腾讯 这样的一些涉及到海量数据的公司经常会问到。下面的方法是我对海量数据的处理方法进行了一个一般性的总结,当然这些方法可能并不能完全覆盖所有的问题,但是这样的一些方法也基本可以处理绝大多数遇到的问题。下面的一些问题基本直接来源于公司的面试笔试题目,方法不一定最优,如果你有更好的处理方法,欢迎与我讨论。1.Bloom filter适用范围:可以用来实现数据字典,进行数据的判重,或者集合求交集基本原理及要点:对于原理来说很简单,位数组+k个独立hash函数。将hash函数对应的值的位数组置1,查找时如果发现所有hash函数
阅读全文
摘要:前言hadoop比较适合做离线处理,这个是众所周知的,而且hdfs为了保证数据的一致性,每次写文件时,针对数据的io.bytes.per.checksum字节,都会创建一个单独的校验和。默认值为512字节,因为crc-32校验是4字节,存储开销小于1%。而客户端读取数据时,默认会验证数据的crc校验和。除此之外,每个数据节点还会在后台线程运行一个数据块检测程序,定期检查存储在数据节点上的所有块。当块和对应的crc校验匹配不上,由于hdfs存储着块的副本,它可以复制正确的副本替换出错的副本。crc校验的性能损耗可以想到,hdfs都是存储大文件的,每512字节就做一个crc校验,客户端在读写文件都
阅读全文
摘要:需求公司里有两个部门,一个叫hive,一个叫pig,这两个部门都需要使用公司里的hadoop集群。于是问题来了,因为hadoop默认是FIFO调度的,谁先提交任务,谁先被处理,于是hive部门很担心pig这个部门提交一个耗时的任务,影响了hive的业务,hive希望可以和pig在高峰期时,平均使用整个集群的计算容量,互不影响。思路hadoop的默认调度器是FIFO,但是也有计算容量调度器,这个调度器可以解决上述问题。可以在hadoop里配置三个队列,一个是default,一个是hive,一个是pig。他们的计算容量分别是30%,40%,30%.这样hive和pig这两个部门,分为使用hive和
阅读全文
摘要:1. 编写目的本文描述了hadoop中的计算能力调度器(Capacity Scheduler)的实现算法,计算能力调度器是由Yahoo贡献的,主要是解决HADOOP-3421中提出的,在调度器上完成HOD(Hadoop On Demand)功能,克服已有HOD的性能低效的缺点。它适合于多用户共享集群的环境的调度器。本文解析的计算能力调度器属于Hadoop 0.20.2。本文组织结构如 下:1)编写目的 2)计算能力调度器介绍 3)计算能力调度器算法分析 4)计算能力调度器源代码分析 5)计算能力调度器与公平调度器比较 6)参考资料。2. 计算能力调度器介绍Capacity Scheduler支
阅读全文
摘要:随着MapReduce的流行,其开源实现Hadoop也变得越来越受推崇。在Hadoop系统中,有一个组件非常重要,那就是调度器,它的作用是将系统中空闲的资源按一定策略分配给作业。在Hadoop中,调度器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。Hadoop中常见的调度器有三种,分别为:(1)默认的调度器FIFOHadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行的作业。(2) 计算能力调度器Capacity Scheduler支持多个队列,每个队列可配置一定的资源量,每个队列采用FIFO调度策略,为了防止同一个用户的作业独占队列中的资源,该调
阅读全文
摘要:淘宝总容量9.3PB, 利用率77.09%• 总共1100台机器• Master:8CPU(HT),48G内存,SAS Raid• Slave节点异构– 8CPU/8CPU(HT)– 16G/24G内存– 1T x 12 / 2T x 6 / 1T x 6 SATA JBOD– 12/20 slots• 约18000道作业/天, 扫描数据:约500TB/天• 用户数474人, 用户组38个基于0.19.1• 大量Patch– 主要来自官方社区0.19.2, 0.20, 0.21等, 少部分自己开发• Hadoop客户端和服务端代码开发分离, 云梯管理员只负责服务端升级, 并保持版本向下兼容以上
阅读全文
摘要:需求场景:统计每日用户登陆总数每分钟的原始日志内容如下:http://www.blue.com/uid=xxxxxx&ip=xxxxxx假设只有两个字段,uid和ip,其中uid是用户的uid,是用户的唯一标识,ip是用户的登陆ip,每日的记录行数是10亿,要统计出一天用户登陆的总数。处理流程建表那么我们首先要在hive里建表,建表语句如下:CREATE TABLE login ( uid STRING, ip STRING)PARTITIONED BY (dt STRING)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','STO
阅读全文
摘要:namenode磁盘: sas带RAID,多磁盘存储文件系统元信息.datanode配置: 不带RAID, 双网卡: 一个用于内部数据传输,一个用于外部数据传输.hadoop各节点的分布:namenode和jobtracker部署:namenode与jobtracker分离.tasktracker与datanode配对.Trash: hadoop回收站功能默认是禁止的,删除文件,就是直接删除了,所以要记得配置好trash。trash功能还是不错的,当rm后,它会move到当前文件夹下的.Trash目录下,误删文件后,可以到对应的.Trash目录下恢复文件,参考配置属性fs.trash.inte
阅读全文
摘要:Hadoop作为大数据存储及计算领域的一颗明星,目前已经得到越来越广泛的应用。下面PPT主要分析了Hadoop的一些典型应用场景,并对其进行了深入分析,主要包括下面几个方面:日志处理: Hadoop擅长这个抓住本拉登: 并行计算ETL: 每个人几乎都在做ETL(Extract-Transform-Load)工作 Netezza关于使用Hadoop做ETL任务的看法)使用HBase做数据分析: 用扩展性应对大量的写操作—Facebook构建了基于HBase的实时数据分析系统机器学习: 比如Apache Mahout项目更多参考ppt http://t.cn/SZT2fu
阅读全文
摘要:前言使用hive,我们很多情况下会并发调用hive程序,将sql任务转换成mapreuce提交到hadoop集群中,而在本人使用hive的过程中,发现并发调用hive有几个问题,在这个和大家分享下.正文默认安装hive,hive是使用derby内存数据库保存hive的元数据,这样是不可以并发调用hive的,需要配置为使用mysql保存hive的元数据。运行hive,可以有以下访问方式:1.hiveserver:hive以thrift服务的服务器形式运行,允许不同的语言编写客户端进行访问,通过thrift,jdbc,odbc连接器和hive服务器与hive通信,这种方式很适合java编程人员通过
阅读全文
摘要:捣鼓hadoop有一段时间了,由于工作的内容就是hadoop平台,但是由于开始对hadoop一无所知,必须在网上寻找各种信息学习hadoop,学习的过程中,发现hadoop管理运维的文章,网上还是挺丰富的,但是对于hadoop实现细节这块,很多是源码分析,这对于初学者来讲很是痛苦,包括本人,要了解hadoop实现细节,也必须看源码,实际上,我最开始不是为了读源码,我只是感兴趣hadoop的实现细节,详细运作流程,代码因为是我对某个细节感兴趣,再去仔细阅读了。例如我负责hadoop平台,里面就有重要数据,HDFS与传统的存储不同,一旦namenode丢失数据,会造成不会恢复的灾难,保护这个数据,
阅读全文