`
文章列表
  daemonize: 默认情况下,redis不是在后台运行的,如果需要在后台运行,把该项的值更改为yes   pidfile 当 Redis 在后台运行的时候,Redis 默认会把 pid 文件放在/var/run/redis.pid,你可以配置到其他地址。当运行多个 redis服务时 ...
个人学习中觉得还是不错的,挺多地方见到了转帖,贴出来给大家看看,就是无论如何无法判断原作者是谁了,所以无法注明了,囧…… 日语五十音快速记忆方法(转) 日语的五十音对于大多数初学者来说都是比较困难的,虽说熟能生巧,但是死记硬背要用去很多时间和精力,效果也不见得好。我觉得比较好的方法就是联想记忆法,这篇文章参考了网上流传的《日语五十音图快速记忆法》,更多的是结合自己的经验,总结出一些记忆方法,给初学的朋友一些参考。 あ   ア a ‘あ’看上去像是一个武术高手施展了一个扫堂腿,敌人肯定被扫得冷落花流水,啊的一声倒下去啦,所以读a。‘ア’片假名指示出了你发音的样子,嘴巴张开,舌头放到下面,a。 ...
SecondaryNameNode有两个作用,一是镜像备份,二是日志与镜像的定期合并。两个过程同时进行,称为checkpoint 总共分五步: 1.SecondaryNameNode通知NameNode准备提交edits文件,此时主节点产生edits.new 2.SecondaryNameNode通过http get方式获取NameNode的fsimage与edits文件(在SecondaryNameNode的current同级目录下可见到temp.check-point或者previous-checkpoint目录,这些目录中存储着从namenode拷贝来的镜像文件) 3.SecondaryN ...
读取文件大小:1.45G 第一种,OldIO: public static void oldIOReadFile() throws IOException{ BufferedReader br = new BufferedReader(new FileReader("G://lily_947.txt")); PrintWriter pw = new PrintWriter("G://oldIO.tmp"); char[] c = new char[100*1024*1024]; for(;;){ if(br.read( ...
适配器就是起适配的作用:一个方法只接受A接口,如何让他接受B接口呢,很简单,写个适配器: package test; public class AdapterTest { interface A{} interface B{} class C{ void accept(A a){} } class Aadapter implements A{ B b; public Aadapter(B b){ this.b = b; } } public static void main(String[ ...
淘宝数据平台团队给出的分析过程 http://www.tbdata.org/archives/1470 比较全面。 这里还要注意的是关于combiner,设置combiner函数后整个mapreducer过程中其实有三处地方会调用到。 第一处是map端数据从内存spill到文件的时候,这个时候会在环形缓冲区中进行分区及key的排序,然后调用combiner函数来压缩写入文件的数据量,调用过后再溢写到spill文件中。 第二处地方是多个spill文件合并为最终的map输出文件,这个时候首先会去校验spill次数,默认为3(个人觉得此处默认为2可能更合适),如果spill次数大于三次就发生combi ...
今天在做hadoop测试时想保留map过后的中间文件,试了几次,发现通过以下设置可解决。 <property>   <name>keep.failed.task.files</name>   <value>true</value> </property>   <property>   <name>keep.task.files.pattern</name>   <value>*</value>   </property> 这样所有中间临时文件都会被保存, ...
hadoop0.20.2中的API进行了大幅度的重构,导致很多API变成了@Deprecated,而新的API又不全,所以新手学起来感觉很变扭,社区开发者还是建议用hadoop0.20.2的可以沿用老版的API,本着学习的态度,用新的API添加了KeyValueTextInputFormat这个在老版API中存在的类,实际上是对TextInputFormat进行了小幅的修改。 package cn.fnst.cspf.output; import java.io.IOException; import org.apache.commons.logging.Log; import ...
hadoop的map/reduce中支持对key进行分区,从而让map出来的数据均匀分布在reduce上,当然,有时候由于机器间配置问题,可能不需要数据均匀,这时候也能派上用场。 框架自带了一个默认的分区类,HashPartitioner,先看看这个类,就知道怎么自定义key分区了。 public class HashPartitioner<K, V> extends Partitioner<K, V> {   /** Use {@link Object#hashCode()} to partition. */   public int getPartition(K k ...
默认情况下,map后会对key进行默认排序,但是有时候需要对key排序的同时再对value进行排序,这时候就要用到二次排序,一步到位。 原理很简单,就是改变key,map完成后进入reduce之前排序已完成,mapreduce,只能对key来排序,如何做到对key排序的同时又对reduce排序呢? 就是改变key,将value跟key结合起来作为新key,这个新key可以是自定义数据结构,也可以利用MapWritable等hadoop自带的数据结构: map之前: k2 2 k2 1 k1 4 k1 3 k3 8 k3 6 改变后的结构就是: (k2 2 ) 2 (k2 1 ) 1 (k1 4 ...
public class ContentWritable implements Writable{ private Text before; private IntWritable num; //默认的构造函数必须写,不然会出NullPointException异常,而且必须默认初始化成员变量,不知道为何,看底层是反射实例化的,估计跟这个有关。 public ContentWritable(){ this.before = new Text(); this.num = new IntWritable(); } public Cont ...
hadoop0.20.X版本中对counter进行了改进,具体写法如下,mark一下 public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{ private final static IntWritable one = new IntWritable(1); private Text word = new Text(); private final static Logger log = Logger.get ...
hbase支持多节点hmaster的集群,热备效果有待试验。 构建多Hmaster时首先确保你的单Hmaster集群构建正确并且完美启动。 剩下的工作很简单。 在另一台HMaster的机器上配置hbase.master为这台机子的hostname并且启动hmaster即可,这样这台hmaster会自动去连接已启动的zookeeper与HRegionServer。 启动脚本:在bin目录下,输入./hbase-daemon.sh start master即可。 要停Hmaster时,直接kill -9 id ,我用./hbase-daemon.sh stop master貌似不起作用,不知为啥。
namenode与JobTrack分开部署后,在namenode端启动hadoop时报错: Caused by: java.net.BindException: Cannot assign requested address 找了很久也没找到原因,最后发现是自己理解上的错误 分开部署后其实是两台电脑负责控制整个hadoop集群,一台负责dfs,一台负责mapreduce,所以不能简单从一台namenode上start-all,应该在namenode启动start-dfs.sh,在mapreduce上启动start-mapred.sh
hadoop提供了三种环境,单机运行,单机模拟伪分布运行,以及真分布运行。 今天看到一个简单的在这三种运行环境之间切换的方法。 在HADOOP_HOME底下建三个conf目录,分别为conf_a,conf_b,conf_c,分别对应三种环境的运行配置,接下来切换就简单了:想切换到a,只需要停服务,ln -s conf_a conf,然后启服务。b和c也是同理。
Global site tag (gtag.js) - Google Analytics