编写hadoop任务经常需要用到partition和排序.这里记录一下几个参数. 1. 概念 Partition:分桶过程,用户输出的key经过partition分发到不同的reduce里,因而partitioner就是分桶器,一般用平台默认的hash分桶也可以自己指定.Key:是需要排序的字段,相同分桶&&相同key的行排序到一起. 2. 参数设置 在streaming模式默认中, hadoop会把map输出的一行中遇到的第一个设定的字段分隔符前面的部分作为key,后面的作为value,…
参考http://blog.csdn.net/baidu_zhongce/article/details/49210787 hadoop用于对key的排序和分桶的设置选项比较多,在公司中主要以KeyFieldBasePartitioner和KeyFieldBaseComparator被hadoop用户广泛使用. 基本概念: partition:分桶过程,用户输出的key经过partition分发到不同的reduce里,因而partitioner就是分桶器,一般使用平台默认的hash分桶,也可以用…
1.1.1         Stream 作业 (1)hadoop streaming Hadoop streaming是hadoop的一个工具,用于运行费java的maper或reducer作业,例如maper和reducer是C++编写的可执行程序或者脚本文件.同时也可以是java类. HADOOP_HOME/bin/hadoop  jar $HADOOP_HOME/hadoop-streaming.jar \ -input myInputDirs \ -output myOutputDir…
1. 像map_input_file这种环境变量是在hadoop-streaming.jar程序中设置的,所以无需-cmdenv map_input_file参数就可以在php中直接引用,如$var=getenv('mapred_input_dir'); 2. 所有jobconf参数都可以通过环境变量的方式获取,只需将" . "变为" _ "即可.例如,想在php中获取mapred.linerecordreader.maxlength的值,只需getenv('map…
二.Hive分桶 1.创建分桶表 create table t_buck (id string ,name string) clustered by (id) //根据id分桶 sorted by (id) //根据id排序 buckets //分为4个桶 row format delimited fields terminated by ','; 向创建的分桶表中插入数据需要是已分桶且排序的.通常是将其他表查询的结果插入桶中才会执行分桶操作.分桶的原理和分区原理差不多,类似HashPartit…
充分利用hadoop的map输出自动排序功能,能够有效提高计算效率.Hadoop streaming框架默认情况下会以'/t’作为分隔符,将每行第一个'/t’之前的部分作为key,其余内容作为value,如果没有'/t’分隔符,则整行作为key:这个key/tvalue对又作为该map对应的reduce的输入.实际上,通过设置参数,可以根据需要将约定满足要求的数据分布到同一个reducer,又可以通过设置map执行参数将数据内容进行一定的排序,从而提高在reducer中的计算效率. hadoop…
我们在使用hadoop streaming的时候默认streaming的map和reduce的separator不指定的话,map和reduce会根据它们默认的分隔符来进行排序 map.reduce:默认的分隔符是\t(读入数据) 得到的结果都是按第一个分隔符排序去重后的结果 假设我们的有这么一列数据:USER IP DIR 我们想得到某一个用户的某一个ip的一系列dir,那我们应该怎么办呢? 这里我们就会用到streaming map和reduce的separator来指定key来进行排序和去…
1 -D mapred.output.key.comparator.class=org.apache.hadoop.mapred.lib.KeyFieldBasedComparator \ 2 -D stream.map.output.field.separator=, / # 指定mapper每条输出key,value分隔符 3 -D stream.num.map.output.key.fields=4 / #指定前四列为key,之后为value(所以在partition过程中,以前4个字段为…
环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk8 hadoop-3.1.1 apache-hive-3.1.1 一.Hive 参数 1.Hive 参数类型hive当中的参数.变量,都是以命名空间开头: 通过${}方式进行引用,其中system.env下的变量必须以前缀开头: 在Hive CLI查看参数 #显示所有参数 hive>set; #查看单个参数 hive> set hive.cli.print.h…
1. 分桶表以及分桶抽样查询 1.1 分桶表 对Hive(Inceptor)表分桶可以将表中记录按分桶键(某个字段对应的的值)的哈希值分散进多个文件中,这些小文件称为桶. 如要按照name属性分为3个桶,就是对name属性值的hash值对3取摸,按照取模结果对数据分桶.如取模结果为0的数据记录存放到一个文件,取模为1的数据存放到一个文件,取模为2的数据存放到一个文件. 分区提供一个隔离数据和优化查询的便利方式.不过,并非所有的数据集都可形成合理的分区,特别是之前所提到过的要确定合适的划分大小这个…
问题总结: 程序栈太小,64位机器的栈大小默认比32位的大,将程序从64放到32中执行则报错,需要修改初始堆栈大小 (.so库中提供两个函数接口,一个里面使用的是尺寸较大的图像,另一个处理的图像很小,只有调用前一个函数的时候会溢出) 最后的问题转化为:如何设置JVM的native lib stack size hadoop中节点的JVM配置在mapred.child.java.opts参数中! 之前在hadoop程序中利用jni调用了C语言写的(libxxx.so)本地库,在开始的机器上(64位…
概况 Hadoop Streaming 是一个工具, 代替编写Java的实现类,而利用可执行程序来完成map-reduce过程.一个最简单的程序 $HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar -input myInputDirs -output myOutputDir -mapper /bin/cat -reducer /bin/wc 各个shell变量,请自行配置 一般MAPPER_FILE和REDUCER_FILE…
一: Hadoop Streaming详解 1.Streaming的作用 Hadoop Streaming框架,最大的好处是,让任何语言编写的map, reduce程序能够在hadoop集群上运行:map/reduce程序只要遵循从标准输入stdin读,写出到标准输出stdout即可 其次,容易进行单机调试,通过管道前后相接的方式就可以模拟streaming, 在本地完成map/reduce程序的调试 # cat inputfile | mapper | sort | reducer > out…
版权声明:本文为博主原创文章,未经博主允许不得转载   首先,先引出两点来展开下面的话题. (1)map阶段的排序是在hash之后,写入磁盘之前进行.排序的两个关键字是partition(分区编号)和key. (2)map结束后,并不是马上写到磁盘的,而是有个环形缓冲区,数据写到缓冲区中,默认溢出率是80%(这个值可以通过属性设置 io.sort.mb),每达到溢出条件就溢出生成一个小文件,直到全部数据写完,最后把所有的小文件合并成一个大文件,并写到磁盘中.这样做的目的是减少磁盘寻道时间,让每个…
又是期末又是实训TA的事耽搁了好久……先把写好的放上博客吧 相关随笔: Hadoop-1.0.4集群搭建笔记 用python + hadoop streaming 编写分布式程序(一) -- 原理介绍,样例程序与本地调试 用python + hadoop streaming 编写分布式程序(二) -- 在集群上运行与监控 使用额外的文件 假如你跑的job除了输入以外还需要一些额外的文件(side data),有两种选择: 大文件 所谓的大文件就是大小大于设置的local.cache.size的文…
原文地址:http://hadoop.apache.org/docs/r1.0.4/cn/streaming.html Hadoop Streaming Streaming工作原理 将文件打包到提交的作业中 Streaming选项与用法 只使用Mapper的作业 为作业指定其他插件 Hadoop Streaming中的大文件和档案 为作业指定附加配置参数 其他选项 其他例子 使用自定义的方法切分行来形成Key/Value对 一个实用的Partitioner类 (二次排序,-partitioner…
配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效.浏览更多的配置,有两个方法: 1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就是默认配置,可以参考这些配置的…
 hadoop三个配置文件的参数含义说明     1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效.浏览更多的配置,有两个方法: 1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.x…
大数据团队搞数据质量评测.自动化质检和监控平台是用django,MR也是通过python实现的.(后来发现有orc压缩问题,python不知道怎么解决,正在改成java版本) 这里展示一个python编写MR的例子吧. 抄一句话:Hadoop Streaming是Hadoop提供的一个编程工具,它允许用户使用任何可执行文件或者脚本文件作为Mapper和Reducer. 1.首先,先介绍一下背景,我们的数据是存放在hive里的.hive建表语句如下: 我们将会解析元数据,和HDFS上的数据进行me…
1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效.浏览更多的配置,有两个方法: 1.选择相应版本的hadoop,下载解压后,搜索*.xml,找到core-default.xml,hdfs-default.xml,mapred-default.xml,这些就…
排序在很多业务场景都要用到,今天本文介绍如何借助于自定义Partition类实现hadoop部分排序.本文还是使用java和python实现排序代码. 1.部分排序. 部分排序就是在每个文件中都是有序的,和其他文件没有关系,其实很多业务场景就需要到部分排序,而不需要全局排序.例如,有个水果电商网站,要对每个月的水果的销量进行排序,我们可以把reduce进程之后的文件分成12份,对应1到12月份.每个文件按照水果的销量从高到底排序,1月份的排序和其他月份的排序没有任何关系. 原始数据如下,有三个字…
桶表也是一种用于优化查询而设计的表类型.创建通表时,指定桶的个数.分桶的依据字段,hive就可以自动将数据分桶存储.查询时只需要遍历一个桶里的数据,或者遍历部分桶,这样就提高了查询效率 ------创建订单表create table user_leads(leads_id string,user_id string,user_id string,user_phone string,user_name string,create_time string)clustered by (user_id)…
来自:http://blog.csdn.net/yangjl38/article/details/7583374 1       获取默认配置 配置hadoop,主要是配置core-site.xml,hdfs-site.xml,mapred-site.xml三个配置文件,默认下来,这些配置文件都是空的,所以很难知道这些配置文件有哪些配置可以生效,上网找的配置可能因为各个hadoop版本不同,导致无法生效.浏览更多的配置,有两个方法: 1.选择相应版本的hadoop,下载解压后,搜索*.xml,找…
上一篇文章介绍了Streaming的各种参数,本文具体介绍使用方法. 提交hadoop任务示例: $HADOOP_HOME/bin/hadoop streaming \ -input /user/test/input -output /user/test/output \ -mapper “mymapper.sh” -reducer “myreducer.sh” \ -file/home/work/mymapper.sh \ -file /home/work/myreducer.sh \ -jo…
创建分桶的表 create table t_buck(id int ,name string) clustered by (id ) sorted by (id) into 4 buckets  ; 分桶表的数据不是直接导入(load)的,是从其他表里面查出来插入的 ,插入时会在语句中加入约束的语句. hive的存储格式介绍 hive表的存储格式; ORC格式的使用 hive 的DML操作 https://cwiki.apache.org/confluence/display/Hive/Lang…
一.分区表 1.1 概念 Hive中的表对应为HDFS上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为HDFS上表目录的子目录,数据按照分区存储在子目录中.如果查询的where字句的中包含分区条件,则直接从该分区去查找,而不是扫描整个表目录,合理的分区设计可以极大提高查询速度和性能. 这里说明一下分区表并Hive独有的概念,实际上这个概念非常常见.比如在我们常用的Oracle数据库中,当表中的数据量不断增大,查询数据的速度就会下降,这时也可以对表进行分区…
一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子目录中.如果查询的 where 字句的中包含分区条件,则直接从该分区去查找,而不是扫描整个表目录,合理的分区设计可以极大提高查询速度和性能. 这里说明一下分区表并 Hive 独有的概念,实际上这个概念非常常见.比如在我们常用的 Oracle 数据库中,当表中的数据量不断增大,查询数据的速度就会下降,…
vlc 详细使用方法:libvlc_media_add_option 函数中的参数设置 [转载自]tinyle的专栏 [原文链接地址]http://blog.csdn.net/myaccella/article/details/7027962 [手记] 下面列出的参数可以在命令行中执行,也可以在VLC界面中填写.当然,更重要的是能在 程序中调用. 程序中调用的时候要注意,什么是全局参数,什么是会话参数.例如: RTP over TCP的选项,必须用冒号.用双减号则没有效果. 正确写法:libvl…
Hive sql是Hive 用户使用Hive的主要工具.Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同.Hive SQL和Mysql的SQL方言最为接近,但是两者之间也存在着显著的差异,比如Hive不支持行级数据的插入.更新和删除,也不支持事务操作. 注: HIVE 2.*版本之后开始支持事务功能,以及对单条数据的插入更新等操作 Hive的相关概念 Hive数据库 Hive中的数据库从本质上来说仅仅就是一个目录或者命名空间,但是对于具有很多用户和组的集群来说,这个…
一.分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为 HDFS 上表目录的子目录,数据按照分区存储在子目录中.如果查询的 where 字句的中包含分区条件,则直接从该分区去查找,而不是扫描整个表目录,合理的分区设计可以极大提高查询速度和性能. 这里说明一下分区表并 Hive 独有的概念,实际上这个概念非常常见.比如在我们常用的 Oracle 数据库中,当表中的数据量不断增大,查询数据的速度就会下降,…