- 浏览: 146867 次
- 性别:
- 来自: 南京
最新评论
-
什么都不懂的孩子:
mappedBuffer少了一行代码
Java IO读写大文件的几种方式及测试 -
sunshine_love:
good
Java IO读写大文件的几种方式及测试 -
ln987604356:
...
在javaweb项目中使用flex -
yuyu83818578:
学习了!
java动态代理原理及简单模拟 -
ahack:
难道是传说中的对日外包?
(转)五十音图记忆法
文章列表
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 ...
自定义Writable实现类
- 博客分类:
- hadoop
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也是同理。