简单,可复制

点点滴滴,尽在文中

  :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  hadoop

上一页 1 2 3 4 5 6 下一页

记一下hadoop那点事儿
摘要:一MapReduce概述Map/Reduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的,Google已经将它完整的MapReduce论文公开发布了。其中对它的定义是,Map/Reduce是一个编程模型(programmingmodel),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务 阅读全文
posted @ 2013-02-20 14:30 ggjucheng 阅读(5775) 评论(1) 推荐(0) 编辑

摘要:HDFS写入文件的重要概念HDFS一个文件由多个block构成。HDFS在进行block读写的时候是以packet(默认每个packet为64K)为单位进行的。每一个packet由若干个chunk(默认512Byte)组成。Chunk是进行数据校验的基本单位,对每一个chunk生成一个校验和(默认4Byte)并将校验和进行存储。在写入一个block的时候,数据传输的基本单位是packet,每个packet由若干个chunk组成。HDFS客户端写文件示例代码FileSystem hdfs = FileSystem.get(new Configuration());Path path = new 阅读全文
posted @ 2013-02-19 21:45 ggjucheng 阅读(8971) 评论(0) 推荐(2) 编辑

摘要:HDFS读取文件的重要概念HDFS一个文件由多个block构成。HDFS在进行block读写的时候是以packet(默认每个packet为64K)为单位进行的。每一个packet由若干个chunk(默认512Byte)组成。Chunk是进行数据校验的基本单位,对每一个chunk生成一个校验和(默认4Byte)并将校验和进行存储。在读取一个block的时候,数据传输的基本单位是packet,每个packet由若干个chunk组成。HDFS客户端读文件示例代码FileSystem hdfs = FileSystem.get(new Configuration());Path path = new 阅读全文
posted @ 2013-02-19 13:22 ggjucheng 阅读(7292) 评论(1) 推荐(0) 编辑

摘要:datanode的介绍一个典型的HDFS系统包括一个NameNode和多个DataNode。DataNode是hdfs文件系统中真正存储数据的节点。每个DataNode周期性和唯一的NameNode通信,还时不时和hdfs客户端代码以及其他datanode通信。datanode维护一个重要的表: 块=>字节流这些存储在本地磁盘,DataNode在启动时,还有启动后周期性报告给NameNode,这个表的内容。DataNodes周期性请求NameNode询问命令操作,NameNode不能直接连接DataNode,NameNode在DataNode调用时,简单返回值。DataNodes还维护一 阅读全文
posted @ 2013-02-16 21:48 ggjucheng 阅读(6107) 评论(1) 推荐(2) 编辑

摘要:Namenode的介绍一个典型的HDFS系统包括一个NameNode和多个DataNode。NameNode作为HDFS中文件目录和文件分配的管理者,它保存的最重要信息,就是下面两个映射:文件名=>数据块数据块=>DataNode列表其中,文件名=>数据块保存在磁盘上(持久化);但NameNode上不保存数据块=>DataNode列表,该列表是通过DataNode上报建立起来的。NameNode启动流程在命令行启动namenode的方法是:bin/hadoop namenode查看bin/hadoop脚本,可以看到最后执行的java类是:org.apache.hadoo 阅读全文
posted @ 2013-02-04 13:34 ggjucheng 阅读(7226) 评论(0) 推荐(1) 编辑

摘要:HDFS的基本概念1、数据块(block)HDFS(Hadoop Distributed File System)默认的最基本的存储单位是64M的数据块。和普通文件系统相同的是,HDFS中的文件是被分成64M一块的数据块存储的。不同于普通文件系统的是,HDFS中,如果一个文件小于一个数据块的大小,并不占用整个数据块存储空间。2、元数据节点(Namenode)和数据节点(datanode)namenode用来管理文件系统的命名空间其将所有的文件和文件夹的元数据保存在一个文件系统树中。这些信息也会在硬盘上保存成以下文件:命名空间镜像(namespace image)及修改日志(edit log)其 阅读全文
posted @ 2013-02-01 16:05 ggjucheng 阅读(4191) 评论(0) 推荐(1) 编辑

摘要:1. UDTF介绍UDTF(User-Defined Table-Generating Functions) 用来解决 输入一行输出多行(On-to-many maping) 的需求。2. 编写自己需要的UDTF继承org.apache.hadoop.hive.ql.udf.generic.GenericUDTF,实现initialize, process, close三个方法。UDTF首先会调用initialize方法,此方法返回UDTF的返回行的信息(返回个数,类型)。初始化完成后,会调用process方法,真正的处理过程在process函数中,在process中,每一次forward() 阅读全文
posted @ 2013-02-01 12:29 ggjucheng 阅读(30899) 评论(1) 推荐(3) 编辑

摘要:介绍hive的用户自定义聚合函数(UDAF)是一个很好的功能,集成了先进的数据处理。hive有两种UDAF:简单和通用。顾名思义,简单的UDAF,写的相当简单的,但因为使用Java反射导致性能损失,而且有些特性不能使用,如可变长度参数列表。通用UDAF可以使用​​所有功能,但是UDAF就写的比较复杂,不直观。本文只介绍通用UDAF。UDAF是需要在hive的sql语句和group by联合使用,hive的group by对于每个分组,只能返回一条记录,这点和mysql不一样,切记。UDAF开发概览开发通用UDAF有两个步骤,第一个是编写resolver类,第二个是编写evaluator类。re 阅读全文
posted @ 2013-02-01 11:31 ggjucheng 阅读(36448) 评论(6) 推荐(9) 编辑

摘要:原生类型原生类型包括TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,BINARY (Hive 0.8.0以上才可用),TIMESTAMP (Hive 0.8.0以上才可用),这些数据加载很容易,只要设置好列分隔符,按照列分隔符输出到文件就可以了。假设有这么一张用户登陆表CREATE TABLE login ( uid BIGINT, ip STRING)ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','STORED AS TEXTFILE;这表示登陆表ip字段和uid字段以分隔 阅读全文
posted @ 2013-01-31 17:20 ggjucheng 阅读(6669) 评论(2) 推荐(1) 编辑

摘要:如下图,hadoop访问控制分为两级,其中ServiceLevel Authorization为系统级,用于控制是否可以访问指定的服务,例如用户/组是否可以向集群提交Job,它是最基础的访问控制,优先于文件权限和mapred队列权限验证。Access Control on Job Queues在job调度策略层之上,控制mapred队列的权限。DFSPermmision用户控制文件权限。目前版本中,连接到hadoop集群的用户/组信息取决于客户端环境,即客户端主机中`whoami`和`bash –c groups`取到的用户名和组名,没有uid和gid,用户属组列表中只要有一个与集群配置的用户 阅读全文
posted @ 2013-01-31 14:29 ggjucheng 阅读(10631) 评论(0) 推荐(2) 编辑

摘要:背景假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩。这个就是典型在分组取Top N的需求。解决思路对于取出每科成绩前100名的学生成绩,针对学生成绩表,根据学科,成绩做order by排序,然后对排序后的成绩,执行自定义函数row_number(),必须带一个或者多个... 阅读全文
posted @ 2013-01-30 17:10 ggjucheng 阅读(20511) 评论(3) 推荐(2) 编辑

摘要:本文分为4个分部:1. 介绍 2.基本架构 3.与Hive对比 4.使用一、介绍Google的工程师为了方便自己对MapReduce的实现搞了一个叫做Sawzall的工具,Google就放了几篇论文放在网上,但这玩意在代码上不开源在设计思想是开源的,在前面一篇文章中我也提到过Hadoop也推出了类似Sawzall的Pig语言,就是根据Google放出来的论文山寨的。Pig是对处理超大型数据集的抽象层,在MapReduce中的框架中有map和reduce两个函数,如果你亲手弄一个MapReduce实现从编写代码,编译,部署,放在Hadoop上执行这个MapReduce程序还是耗费你一定的时间的, 阅读全文
posted @ 2013-01-20 21:52 ggjucheng 阅读(6002) 评论(0) 推荐(0) 编辑

摘要:前言接触Hadoop有两年的时间了,期间遇到很多的问题,既有经典的NameNode和JobTracker内存溢出故障,也有HDFS存储小文件问题,既有任务调度问题,也有MapReduce性能问题.遇到的这些问题有些是Hadoop自身的缺陷(短板),有些则是使用的不当。本文基于 Cloudera CDH 3u4(同Apache Hadoop 1.0)编写。相关推荐配置为官方推荐值或者笔者经验数值,它不是绝对的,可能会因为不同的应用场景和硬件环境有所出入。1. 选择Cloudera CDH部署你的Cluster动机大多数管理员都是从Apache Hadoop开始学习。笔者最开始也使用Apache版 阅读全文
posted @ 2013-01-20 21:36 ggjucheng 阅读(2646) 评论(0) 推荐(1) 编辑

摘要:硬件技术的发展给存储和数据库软件技术提供了新的机会。近年来SSD开始流行,那么SSD能否给Hadoop/HBase带来性能的提升呢?来自Facebook数据团队的工程师们做了相关的研究和实验工作。本文是http://hadoopblog.blogspot.com/2012/05/hadoop-and-solid-state-drives.html(需自备梯子)的翻译并加上了一些自己的思考,版权归原博客作者所有。先说下SSD吧,SSD没有传统机械硬盘的机械寻道时间而带来的延迟,所以IOPS性能可以达到100-200K(而15K的SAS一般在100左右),所以能提供相对于机械硬盘100+倍的的小文 阅读全文
posted @ 2013-01-20 20:16 ggjucheng 阅读(6420) 评论(1) 推荐(0) 编辑

摘要:测试环境,系统信息$uname-aLinux10.**.**.152.6.32-220.17.1.tb619.el6.x86_64#1SMPFriJun813:48:13CST2012x86_64x86_64x86_64GNU/Linuxhadoop和hbase版本信息:hadoop-0.20.2-cdh3u4hbase-0.90-adh1u7.110.**.**.12NFSServer端,提供NFS服务10.**.**.15作为HDFSNameNode挂载10.**.**.12NFS共享目录以ganglia-5.rpm作为文件操作对象,大小在3m左右。hadoop/conf/hdfs-sit 阅读全文
posted @ 2013-01-20 20:10 ggjucheng 阅读(5426) 评论(0) 推荐(0) 编辑

摘要:Hive 并发模型使用案例并发支持 (http://issues.apache.org/jira/browse/HIVE-1293) 是数据库的必须,而且他们的使用案例很好懂。至少,我们要尽可能支持并发读和写。添加几个发现当前已经锁定的锁,是有用的。这里没有一个直接的需求添加一个API显式获取锁,所以,所有锁都是隐式获取的。hive定义一下模式的锁(注意不需要意向锁)共享 (S)排他 (X)见名知意,多个共享锁可以同时获取,而排他锁会阻塞其他锁。兼容性列表如下:*Existing LockSXRequested Lock***S*TrueFalseX*FalseFalse对于一些操作,锁的性质 阅读全文
posted @ 2013-01-16 16:06 ggjucheng 阅读(7164) 评论(0) 推荐(0) 编辑

摘要:虚拟列Hive 0.8.0支持两个虚拟列:INPUT__FILE__NAME, mapper任务的输出文件名。BLOCK__OFFSET__INSIDE__FILE, 当前全局文件的偏移量。对于块压缩文件,就是当前块的文件偏移量,即当前块的第一个字节在文件中的偏移量。简单例子select INPUT__FILE__NAME, key, BLOCK__OFFSET__INSIDE__FILE from src;select key, count(INPUT__FILE__NAME) from src group by key order by key;select * from src wher 阅读全文
posted @ 2013-01-16 11:02 ggjucheng 阅读(2176) 评论(0) 推荐(0) 编辑

摘要:EXPLAIN语法Hive提供EXPLAIN命令,显示查询的执行计划。语法如下:EXPLAIN [EXTENDED] queryEXPLAIN语句使用EXTENDED,提供执行计划关于操作的额外的信息。这是典型的物理信息,如文件名。Hive查询被转换成序列(这是一个有向无环图)阶段。这些阶段可能是mapper/reducer阶段,或者做metastore或文件系统的操作,如移动和重命名的阶段。 EXPLAIN的输出包括三个部分:查询的抽象语法树执行计划计划的不同阶段之间的依赖关系每个场景的描述场景的描述,显示了与元数据相关操作的操作序列。元数据会包括FilterOperator的过滤器表达式, 阅读全文
posted @ 2013-01-16 10:29 ggjucheng 阅读(10014) 评论(0) 推荐(1) 编辑

摘要:子查询语法SELECT ... FROM (subquery) name ...Hive只在FROM字句支持子查询。子查询必须给一个名字,因为每个表在FROM字句必须有一个名字。子查询的查询列表的列,必须有唯一的名字。子查询的查询列表,在外面的查询是可用的,就像表的列。子查询也可以一个UNION查询表达式.Hive支持任意层次的子查询。简单子查询的例子:SELECT col FROM ( SELECT a+b AS col FROM t1) t2包含UNION ALL的子查询例子:SELECT t3.col FROM ( SELECT a+b AS col FROM t1 UNIO... 阅读全文
posted @ 2013-01-15 17:47 ggjucheng 阅读(8453) 评论(1) 推荐(0) 编辑

摘要:Union 语法select_statement UNION ALL select_statement UNION ALL select_statement ...UNION用于联合多个SELECT语句的结果集,合并为一个独立的结果集。当前只能支持UNION ALL(bag union)。不消除重复行。每个select语句返回的列的数量和名字必须一样,否则,一个语法错误会被抛出。如果必须对UNION的结果做一些额外的处理,整个语句可以被嵌入在FROM子句中,象下面这样SELECT *FROM ( select_statement UNION ALL select_statement) un.. 阅读全文
posted @ 2013-01-15 17:18 ggjucheng 阅读(7580) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 下一页