- 博客(86)
- 资源 (29)
- 收藏
- 关注
原创 SequcenFileInputFormat SequenceFileOutputFormat例子
SequcenFileInputFormat SequenceFileOutputFormat例子
2013-11-30 21:00:10 8186
转载 【hadoop】hadoop参数优化
Hadoop实战-中高级部分 之 Hadoop作业调优参数调整及原理 浏览(2826)|评论(1) 交流分类:Java|笔记分类: Hadoop实战-中…… Hadoop RestFulHadoop HDFS原理1Hadoop HDFS原理2Hadoop作业调优参数调整及原理Hadoop HAHadoop MapReduce高级编程Had
2013-11-30 18:42:13 4755 1
转载 hadoop lzo并行map
Hadoop集群中启用了lzo后,还需要一些配置,才能使集群能够对单个的lzo文件进行并行的map操作,以提升job的执行速度。首先,要为lzo文件创建index。下面的命令对某个目录里的lzo文件创建index:$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/lib/hadoop-lzo-0.4.10.jar com.hadoop.compres
2013-11-30 18:31:18 1760
转载 hadoop面试题
Q1. Name the most common InputFormats defined in Hadoop? Which one is default ? Following 2 are most common InputFormats defined in Hadoop - TextInputFormat- KeyValueInputFormat- Seque
2013-11-30 18:29:30 1815
转载 【hadoop】task内存设置
关于task内存配置有如下3个选项:mapred.child.java.optsmapred.map.child.java.optsmapred.reduce.child.java.opts通常我们会配置“mapred.child.java.opts”,但其实这个配置已经deprecated,却而代之的是:mapred.map.child.java.opts和mapred.redu
2013-11-30 18:27:55 1048
转载 HDFS------hadoop fs -ls命令的执行过程
当我们在命令行打如下命令:hadoop fs -ls .我们知道将显示出文件系统中的根目录下的文件,那究竟在代码里如何执行的呢,今天就一看究竟。当我们按下这条命令,首先找到bin目录下的hadoop脚本,其中有一行脚本:elif [ "$COMMAND" = "fs" ] ; then CLASS=org.apache.hadoop.fs.FsShell H
2013-11-30 10:45:41 2172
转载 Shell for用法
1、 for((i=1;i2、在shell中常用的是 for i in $(seq 10)3、for i in `ls`4、for i in ${arr[@]} 5、for i in $* ; do6、for File in /proc/sys/net/ipv4/conf/*/accept_redirects; do7、for i in f1 f2 f3 ;do8、
2013-11-29 11:27:05 1829
转载 试用hadoop jvm复用配置
Hadoop默认为每个task(map task 或者 reduce task) 启动一个jvm。鉴于目前小文件过多的问题,设置了jvm复用,即一个job内,多个task共享jvm,避免多次启动jvm,浪费资源和时间。 测试Job信息:map:4715个reduce:20个input: 34Goutput: 25G 优化前:1464 s优化后:13
2013-11-28 21:15:44 937
转载 搞清楚LzoCodec和LzopCodec
使用LZO过程会发现它有两种压缩编码可以使用,即LzoCodec和LzopCodec,下面说说它们区别: LzoCodec比LzopCodec更快, LzopCodec为了兼容LZOP程序添加了如 bytes signature, header等信息如果使用 LzoCodec作为Reduce输出,则输出文件扩展名为".lzo_deflate",它无法被lzop读取;如果使用Lzop
2013-11-28 15:30:18 2892
转载 Hadoop HDFS之SequenceFile和MapFile
Hadoop的HDFS和MapReduce子框架主要是针对大数据文件来设计的,在小文件的处理上不但效率低下,而且十分消耗磁盘空间(每一个小文件占用一个Block,HDFS默认block大小为64M)。解决办法通常是选择一个容器,将这些小文件组织起来统一存储。HDFS提供了两种类型的容器,分别是SequenceFile和MapFile。一、SequenceFileSequenceFi
2013-11-27 21:15:21 997
转载 18个非常好用的vim指令
在Linux下最有名的程序编辑器非vim莫属了。在一般模式下,1、dd——删除光标所在行2、/word ——全文搜索指定单词3、G ——将光标移动到文件的最后一行,移动到第99行,就是99G4、小写x向后删除一个字符,大写X向前删除一个字符6、:1,$s/word1/word2/gc——从第一行到最后一行寻找word1,将之替换为word2,并在替换之前询问是否替换7、
2013-11-25 16:23:17 653
原创 mapreduce 比较接口
Comparator和Comparable是Jdk中用来实现比较操作的两个常用接口。Comparator,用来比较两个对象是否相等,属于双目运算的,比较方法为compare(T o1, T o2),例如 Comparator.compare(a,b)Comparable,用来一个对象与另一个对象比较,属于单目运算的方法,比较方法为compareTo(T o),例如a.compareTo(b
2013-11-25 15:09:38 1924
转载 MapReduce中的自定义多目录/文件名输出HDFS
转载自 http://my.oschina.net/leejun2005/blog/94706最近考虑到这样一个需求: 需要把原始的日志文件用hadoop做清洗后,按业务线输出到不同的目录下去,以供不同的部门业务线使用。 这个需求需要用到MultipleOutputFormat和MultipleOutputs来实现自定义多目录、文件的输出。 需要注意的是,在hadoop
2013-11-25 10:13:20 10501
原创 Java中super、this关键字
1. 子类的构造函数如果要引用super的话,必须把super放在函数的首位.如果想用super继承父类构造的方法,但是没有放在第一行的话,那么在super之前的语句,肯定是为了满足自己想要完成某些行为的语句,但是又用了super继承父类的构造方法。那么以前所做的修改就都回到以前了,就是说又成了父类的构造方法了。class Father{public Father(){Sy
2013-11-24 14:55:56 911
原创 java学习笔记-常见知识点
继承是从类的角度讲的,组合是从对象的角度讲的。 对于继承而言,如果一个子类继承了一个父类,那么父类的细节会在子类中被暴漏,破坏了父类的封装性。在Effective Java中,也提到过继承会破坏封装性是因为继承引起的代码以来会导致诸多问题。继承,是子类和父类之间的一种强耦合,是一种破坏性的关系,是一种"白盒式代码复用"组合,是一种“黑盒式代码复用”,更灵活
2013-11-24 14:01:34 683
转载 java 静态方法可以覆盖吗
覆盖(override)是在继承+多态的前提下的概念。Java中的静态方法不多态,所以不涉及覆盖,无论静态方法是在基类还是派生类上。 从结果看,JVM中有4条invoke-*指令:invokevirtual、invokeinterface、invokestatic、invokespecial,其中前两条指令有多态语义而后两条没有。 静态方法是用invokestatic来调用的,编译的时候就
2013-11-24 13:45:38 4560
转载 Hadoop集群作业调度算法
Hadoop集群中有三种作业调度算法,分别为FIFO,公平调度算法和计算能力调度算法先来先服务(FIFO)FIFO比较简单,hadoop中只有一个作业队列,被提交的作业按照先后顺序在作业队列中排队,新来的作业插入到队尾。一个作业运行完后,总是从队首取下一个作业运行。这种调度策略的优点是简单、易于实现,同时也减轻了jobtracker的负担。但是它的缺点也是显然的,它对所有的作业都一视同
2013-11-23 10:45:22 938
转载 MapReduce数据流
1在上一篇文章中我们讲解了一个基本的MapReduce作业由那些基本组件组成,从高层来看,所有的组件在一起工作时如下图所示:图4.4高层MapReduce工作流水线 MapReduce的输入一般来自HDFS中的文件,这些文件分布存储在集群内的节点上。运行一个MapReduce程序会在集群的许多节点甚至所有节点上运行mapping任务,每一个mapping任务都是平
2013-11-23 10:14:57 2781
转载 Hadoop作业提交分析(五)
经过上一篇的分析,我们知道了Hadoop的作业提交目标是Cluster还是Local,与conf文件夹内的配置文件参数有着密切关系,不仅如此,其它的很多类都跟conf有关,所以提交作业时切记把conf放到你的classpath中。 因为Configuration是利用当前线程上下文的类加载器来加载资源和文件的,所以这里我们采用动态载入的方式,先添加好对应的依赖库和资源,然后再构建一个UR
2013-11-23 10:07:04 885
转载 Hadoop作业提交分析(四)
前面我们所分析的部分其实只是Hadoop作业提交的前奏曲,真正的作业提交代码是在MR程序的main里,RunJar在最后会动态调用这个main,在(二)里有说明。我们下面要做的就是要比RunJar更进一步,让作业提交能在编码时就可实现,就像Hadoop Eclipse Plugin那样可以对包含Mapper和Reducer的MR类直接Run on Hadoop。 一般来说,每个MR程
2013-11-23 10:06:30 1604
转载 Hadoop作业提交分析(三)
通过前面两篇文章的分析,对Hadoop的作业提交流程基本明了了,下面我们就可以开始编写代码模拟这个流程。 第一步要做的是添加Hadoop的依赖库和配置文件到classpath。最常用的方法就是用一个容器先把各个要添加到classpath的文件或文件夹存储起来,后面再作为类加载器的URL搜索路径。/** * Add a directory or file to clas
2013-11-23 10:05:50 1047
转载 Hadoop作业提交分析(二)
上一篇我们分析了bin/hadoop脚本,知道了提交一个Hadoop作业所需要的基本设置以及真正执行任务提交的类。这一篇我们就来分析这个提交任务的类org.apache.hadoop.util.RunJar,看它内部具体又做了些什么。 RunJar是Hadoop中的一个工具类,结构很简单,只有两个方法:main和unJar。我们从main开始一步步分析。 main首
2013-11-23 10:05:05 978
转载 Hadoop作业提交分析(一)
bin/hadoop jar xxx.jar mainclass args…… 这样的命令,各位玩Hadoop的估计已经调用过NN次了,每次写好一个Project或对Project做修改后,都必须打个Jar包,然后再用上面的命令提交到Hadoop Cluster上去运行,在开发阶段那是极其繁琐的。程序员是“最懒”的,既然麻烦肯定是要想些法子减少无谓的键盘敲击,顺带延长键盘寿命。比如有
2013-11-23 10:03:11 1102
转载 MapReduce的工作机制
MapReduce作业的运行过程如图6-1所示。包含4个独立的实体:(1)Client:提交MapReduce作业,(2)JobTracker:协调作业的运行。(3)TaskTracker:运行作业划分后的Map任务或Reduce任务。(4)Shared FileSystem(一般为HDFS),用来在其他实体间共享作业文件。 1.
2013-11-23 09:36:20 1081
转载 Java虚拟机(JVM)参数配置说明
Java虚拟机(JVM)参数配置说明 在Java、J2EE大型应用中,JVM非标准参数的配置直接关系到整个系统的性能。JVM非标准参数指的是JVM底层的一些配置参数,这些参数在一般开发中默认即可,不需要任何配置。但是在生产环境中,为了提高性能,往往需要调整这些参数,以求系统达到最佳新能。另外这些参数的配置也是影响系统稳定性的一个重要因素,相信大多数Java开发人员都
2013-11-22 09:17:33 1098
转载 ConfigurationPrinter
import java.util.Map.Entry;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.conf.Configured;import org.apache.hadoop.util.Tool;import org.apache.hadoop.util.ToolRunner;
2013-11-21 17:15:34 1283
转载 Eclipse 中 program arguments 与 VM arguments 的区别
Eclipse 中 program arguments 与 VM arguments 的区别 附代码: public static void main(String[] args){ System. out .println( "Program arguments" ); for ( String str:args ){
2013-11-21 16:37:12 5499
转载 第1章 Java性能调优概述
第1章 Java性能调优概述本章对性能优化技术进行整体性的介绍,让读者了解性能的概念和性能优化的基本思路与方法。掌握这些内容,有助于读者对性能问题进行系统性的分析。本章涉及的主要知识点有:评价性能的主要指标;木桶原理的概念及其在性能优化中的应用;Amdahl定律的含义;性能调优的层次;系统优化的一般步骤和注意事项。1.1 性能概述
2013-11-20 17:23:24 2265
转载 bash应用技巧
查看系统存在的shell[root@localhost ~]# cat /etc/shells/bin/sh/bin/bash/sbin/nologin/bin/tcsh/bin/csh[root@localhost ~]# bash中常用的快捷键: ctrl+l 清屏、crtl+u 删除命令行光标前面的所有内容1、命令补
2013-11-20 17:12:45 1441
转载 Linux Shell自定义快捷指令
前一阵子更换Linux衍生版的频率有点高 -_-|||,各个衍生版的Linux Shell命令还是又一些差异的,例如有的衍生版会有ll,la等等这些命令,其实这些东西基本都是在Shell的初始化脚本中做的。一般来说,Shell的初始化脚本分为2种:一种是全局默认的,一种是用户自己的。全局默认的路径为/etc/profile在profile中,它默认会再加载/etc/bash.bashr
2013-11-20 16:37:34 2178
转载 touch 命令
linux的touch命令不常用,一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。1.命令格式:touch [选项]... 文件...2.命令参数:-a 或--time=atime或--time=access或--time=use 只更改存取时间。-c 或--no-create 不建立任何文档。-d 使
2013-11-20 13:57:20 916
转载 linux下shell中(())双括号运算符的使用详解
在学习使用shell的逻辑运算符”[]”使用时候,必须保证运算符与算数之间有空格。 四则运算也只能借助:let,expr等命令完成。 今天讲的双括号”(())”结构语句,就是对shell中算数及赋值运算的扩展。 使用方法: 语法: ((表达式1,表达式2…)) 特点: 1、在双括号结构中,所有表达式可以像c语言一样,如:a++,b--等。 2、在双括号结构中,所有变量可以不
2013-11-20 09:26:04 2598
转载 LinuxShell算术运算
Bash shell 的算术运算有四种方式:1:使用 expr 外部程式加法 r=`expr 4 + 5`echo $r注意! '4' '+' '5' 这三者之间要有空白r=`expr 4 * 5` #错误乘法 r=`expr 4 \* 5`2:使用 $(( ))r=$(( 4 + 5 ))echo $r3:使用 $[ ]r=$[ 4 +
2013-11-19 13:34:35 15519 1
原创 MapReduce里面的两种排序算法
未完待续public final class HeapSort implements IndexedSorter public final class QuickSort implements IndexedSorterpublic interface IndexedSorter { /** * Sort the i
2013-11-19 09:35:40 3451
转载 Java基础恶补——内存泄露、内存溢出
Java基础恶补——内存泄露、内存溢出(2010-09-15 15:56:26) 转载标签: 杂谈 要点内存泄露是指程序中间动态分配了内存,但在程序结束时没有释放这部分内存,从而造成那部分内存不可用的情况,重启计算机可以解决,但也有可能再次发生内存泄露,内存泄露和硬件没有关系,它是由软件设计缺陷引起的。 内存泄漏可以分为4
2013-11-19 09:29:28 33623 4
转载 java常量池技术
java中的常量池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复创建相等变量时节省了很多时间。常量池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。 String类也是java中用得多的类,同样为了创建String对象的方便,也实现了常量池的技术。 测试代码如下: publ
2013-11-18 10:26:26 1189
转载 深入了解synchronized及对象锁
深入了解synchronized及对象锁1 , Synchronized锁定的是对象而非函数或代码。2 , 每个Object只有一把锁(Lock)与之关联,当进行到Synchronized语句或函数的时候,这把锁就会被当前的线程(thread)拿走,其他的(thread)再去访问的时候拿不到锁就被暂停了3, 只有当Synchronized的是同一个对象的才是线程安全的(thread-s
2013-11-17 21:56:55 1543
转载 类锁和对象锁
对象锁当一个对象中有synchronized method或synchronized block的时候调用此对象的同步方法或进入其同步区域时,就必须先获得对象锁。如果此对象的对象锁已被其他调用者占用,则需要等待此锁被释放同步静态方法/静态变量互斥体由于一个class不论被实例化多少次,其中的静态方法和静态变量在内存中都只由一份。所以,一旦一个静态的方法被申明为synchronized。此类所
2013-11-17 21:53:56 1417
rpmbuild-demo工程
2015-01-21
Weka源代码详细分析系列
2012-05-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人