- 浏览: 24926 次
- 性别:
- 来自: 上海
最新评论
文章列表
引言:
最近基本完成了一个网络传输的framework,其中socket channel对于ByteBuffer的操作中遇到了HeapByteBuffer与DirectByteBuffer的选择问题,在这里做一下总结。
语法:
分配HeapByteBuffer
ByteBuffer buffer = ByteBuffer.allocate(int capacity);
分配DirectByteBuffer
ByteBuffer buffer = ByteBuffer.allocateDirect(int capacity);
JDK的说明:
引用A byte buffer is either ...
AVRO IPC HelloWorld
- 博客分类:
- avro
avro-ipc的HelloWorld例子
pom.xml
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro</artifactId>
</dependency>
<dependency>
<groupId>org.apache.avro</groupId>
<artifactId>avro-ipc</artifactId>
</dependency> ...
avro非常适合用于hadoop。在开发的时候可能有这样的场景,输入的文件是non-avro的,输出的文件是avro的。这样就需要一个是非avro的mapper和一个avro的reducer。下面通过改写wordcount例子演示这个过程。
Mapper
public class WordCountMapper extends MapReduceBase implements
Mapper<LongWritable, Text, AvroKey<CharSequence>, AvroValue<Integer>> {
private Text w ...
之前的“trackinfo数据清洗”例子中为使用combiner,这个列子通过改写mapper和reducer以支持combiner,同时使用1.75因子计算的reducer task数量。http://gqm.iteye.com/blog/1935541
Mapper
public class TrackInfoCleansingMapper extends
Mapper<Object, Text, Text, TrackInfoArrayWritable> {
private Text user = new Text();
private TrackInfo ...
引用Reducer reduces a set of intermediate values which share a key to a smaller set of values.
Reducer的数量
可通过以下方法设置
JobConf.setNumReduceTasks(int);
可以修改mapred.reduce.tasks参数,默认值为1。
官网推荐计算方法
0.95 * NUMBER_OF_NODES * mapred.tasktracker.reduce.tasks.maximum
1.75 * NUMBER_OF_NODES * mapred.tasktracker.re ...
业务场景:
假设用户在某处(例如某个网页或者某个地点)的活动会有一个日志,通过日志清洗出用户的一个点击流或者路径流,从而为后续分析做准备。
例子中使用了自定义的Hadoop的Writable类
位置类Location.java
定义了主位置信息mainLoc和细分位置信息subLoc
public class Location implements Writable {
private final Text mainLoc;
private final Text subLoc;
public Location() {
...
贴一下整理的maven管理配置(待补充)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion> ...
Apache Avro是一个独立于编程语言的数据序列化系统。旨在解决Hadoop中Writable类型的不足:缺乏语言的可移植性。其强调数据的自我描述,依赖于它的schema。即支持动态加载schema,动态映射;也支持代码生成的描述性映射。
官网的介绍:
引用Apache Avro™ is a data serialization system. Avro provides:
Rich data structures.
A compact, fast, binary data format.
A container file, to store persistent data.
Remote ...
[实验]hadoop例子 在线用户分析
- 博客分类:
- hadoop
一个简单的业务场景和例子。由wordcount例子改写。
业务场景:
每个用户有在线事件,并带有日志。分析一段时间内的在线的用户以及他们的事件数。
备注:假设事件日志中以逗号分割字段,第5个字段为用户识别码
public class ActiveUserMapper extends Mapper<Object, Text, Text, IntWritable> {
private final static IntWritable one = new IntWritable(1);
private Text user = new Text();
protect ...
Hadoop MapReduce的编程接口层主要有5个可编程组件,分别为InputFormat、Mapper、Partitioner、Reducer和OutputFormat。
InputFormat
主要用于描述输入数据的格式,提供两个功能:
数据切分:将输入数据切分为若干个split(分片),每个split会被分发到一个Map任务中。
记录识别:通过创建RecordReader,使用它将某个split(分片)中的记录(key, value形式)识别出来(Mapper使用split前的初始化),每个记录会作为Mapper中map函数的输入。
[/list]
public abstract ...
NameNode在内存中维护整个文件系统的元数据镜像,用于HDFS的管理。
NameNode中元数据的管理主要由类FSNamesystem实现。
引用/***************************************************
* FSNamesystem does the actual bookkeeping work for the
* DataNode.
*
* It tracks several important tables.
*
* 1) valid fsname --> blocklist (kept on disk, logge ...
元数据文件fsimage的分析
fsimage为元数据镜像文件,存储的是某一时刻NameNode内存元数据信息,包括所有的INode信息、正在写入的文件信息以及其他的一些状态信息等。
引用 /**
* Save current image and empty journal into {@code current} directory.
*/
protected void saveCurrent(StorageDirectory sd) throws IOException
当StorageDirectory的类型为NameNodeFile.IMAGE时,将FSImage持久 ...
环境
hadoop1.2.0
CentOS release 6.4
jdk1.7.0_25
node04vm01192.168.15.146masterNameNode,SecondaryNameNode,JobTrackernode04vm02192.168.15.147slaveDataNode,TaskTrackernode04vm03192.168.15.148slaveDataNode,TaskTrackernode04vm04192.168.15.149slaveDataNode,TaskTrackernode04vm05192.168.15.150slaveDataNode,T ...
环境:
hadoop1.2.0
配置
修改conf/core-site.xml
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
修改conf/hdfs-site.xml
<config ...
环境:
hadoop 1.2.0
问题:
eclipse报错"Error:failure to login"
原因:
检查eclipse日志,缺少依赖包,报NoClassDefFoundError
解决方法:
src/contrib/eclipse-plugin目录
修改build.xml
<target name="jar" depends="compile" unless="skip.contrib">
<mkdir dir="${build.dir}/lib" ...