ubuntu中编译安装protobuf记录

1.下载protobuf
下载地址:https://github.com/google/protobuf/releases

2.编译protobuf
解压下载的tar.gz包,cd到protobuf的目录下,执行以下指令:
./configure
make
make check
make install

3.检查安装是否成功
protoc –version
如果成功,则会输出版本号信息,例如:libprotoc 2.6.1
如果有问题,则会输出错误内容。

4.错误及解决方法
protoc: error while loading shared libra[……]

Read more

Java通过swig调用C++接口

记录一下过程
c++代码: swigshape.h
#ifndef TEST_CODE_SWIG_TEST_SHAPE_H
#define TEST_CODE_SWIG_TEST_SHAPE_H
#pragma once

class Shape {
public:
Shape() {
nshapes++;
}
virtual ~Shape() {
nshapes–;
};
double x, y;
void move(double dx, double dy);
virtual double area() = 0;
virtual double perim[……]

Read more

spark1.3.1单机安装测试备忘

1.下载,安装spark和scala:
下载1.3.1的hadoop2.6版本. spark-1.3.1-bin-hadoop2.6.tgz
下载到本地之后直接解压即可:
helight@helight-xu:/data/spark$ tar zxf spark-1.3.1-bin-hadoop2.6.tgz
下载scala,2.11.6,也是直接解压即可:
helight@helight-xu:/data/spark$ tar zxf scala-2.11.6.tgz

[……]

Read more

thrift maven编译运行

dependencies编译,pom.xml中加入build配置:
   <build >
               < sourceDirectory> src/main/java </ sourceDirectory>
               < plugins>
                      <!– Bind the maven-assembly-plugin to the package phase this will create
                           a j[……]

Read more

zookeeper原理2(转)

ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 Zookeeper是hadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协调机制不适合在 某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。本文简单分析 zookeeper的工作原理,对于如何使用zookeeper不是本文讨论的重点。本文主要是对Zookeeper的是想原理进行分析说明。只有在熟悉实现原理之后才[……]

Read more

zookeeper原理

ZooKeeper是Hadoop Ecosystem中非常重要的组件,它的主要功能是为分布式系统提供一致性协调(Coordination)服务,与之对应的Google的类似服务叫Chubby。
分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service、分布式lock等,这些分布式的基础服务有以下要求:
高可用性
高一致性
高性能
对于这种有些挑战CAP原则 的服务该如何设计,是一个挑战,也是一个不错的研究课题,Apache的ZooKeeper也许给了我们一个不错的答案。Z[……]

Read more

docker初体验和使用笔记

在ubuntu13.10上体验docker
首先要检测以下你的内核版本
sudo uname -a
Linux helight-Xu 3.11.0-26-generic #45-Ubuntu SMP Tue Jul 15 04:02:06 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

第一次添加Docker的repository到你的本地秘钥库

将Docker添加到你的apt软件安装源中,然后update和install lxc-docker,期间会遇到一个警告,[……]

Read more

用户画像数据建模方法(zz)

  原文:http://blog.baifendian.com/?p=8015

从1991年Tim Berners-Lee发明了万维网(World Wide Web)开始,到20年后2011年,互联网真正走向了一个新的里程碑,进入了“大数据时代”。经历了12、13两年热炒之后,人们逐渐冷静下来,更加聚 焦于如何利用大数据挖掘潜在的商业价值,如何在企业中实实在在的应用大数据技术。伴随着大数据应用的讨论、创新,个性化技术成为了一个重要落地点。相比传 统的线下会员管理、问卷调查、购物篮分析,大数据第一次使得企业能够通过互联网便利地获取用户更为广泛的反馈信息,为进一步精准、快速地分析[……]

Read more

一种简单的分布式存储系统

三层架构(MetaNodeMonitor+MetaNode+DataNode),核心是下面两层(MetaNode+DataNode),下面两层是可以脱离Monitor独立运行。

Monitor的存在主要是作为一个MetaNode的监控和MetaNode出错时进行切换角色,并且通知DataNode进行切换。

DataNode在获取主MetaNode的Ip后进行本地缓存,不需要主动询问Monitor,而且DataNode还可以主动从任意MetaNode获取主MetaNode的IP信息。

MetaNode作为整个系统的大脑,存储所有的文件元信息,这一点和HDFS的NameNode是[……]

Read more

两阶段提交算法

两阶段提交协议是在事务处理、数据库,以及计算机网络中使用的一种原子提交协议(atomic commitment)。它是一个分布式算法,协调在整个分布式原子事务中的参与者的行为(commit或者roll back)。这个协议在一些系统错误发生时仍然能够成功,((两阶段提交协议))但并不能保证对所有错误都能进行容错。为了能做错误恢复,协议的所有参与 者都需要使用日志对协议状态进行记录。

两阶段提交协议中,其中一个节点被设置为coordinator,其他节点设置为cohorts。每个Mutation都会经历两个状态:prepare和commit。Master把mutation持久地写入log的[……]

Read more

netty用pb来实现多接口rpc

在netty中使用pb, nettty的pb编解码必须指定要解码和编码的pb结构体,这然做多接口的应用就很不方便,这里采用了一种简单的方式来解决。

pb定义如下:

package org.zhwen.netty.hello;

enum ReqestType {
LOGIN = 0;
SERVICE = 1;
}

message Request {
required ReqestType type = 1;
optional Login login = 100;
optional Service service = 101;
}

message Log[……]

Read more

zz MySQL的InnoDB索引原理详解

原文地址:http://www.admin10000.com/document/5372.html

摘要:

本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。

InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。

这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出。

  1 各种树形结构

本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到[……]

Read more

ngingx访问限制和iptables简单使用

为了方便安装了一个phpmyadmin,结果公司扫描了之后说要做一些安全限制,主要还是用到nginx的访问限制和iptables,这里稍微做一下记录

nginx的限制较为简单,在server中添加对phpmyadmin的限制即可

location ~* /phpmyadmin/ {

allow 192.168.3.0/24;

deny all;

}
主要还是记录一下iptables的简单使用:
1、查看
iptables -vL –line-number
-v 输出详细信息,包含通过该规则的数据包数量,总字节数及相应的网络接口
-L 查看当前[……]

Read more

hdfs的C++接口编译测试

 项目中要做一个数据包管理服务,我们主要项目开发都是C++的,所以这个数据包管理也是c++开发的,但是数据包的存储是个问题,最后选择了本地存储和hdfs存储结合。
    昨天调试了以下hdfs的C++接口,简单这里记录一下:
代码程序是网上随处可以搜到的测试代码:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include “hdfs.h” 

int main(int argc, char **argv) { 

hdfsFS fs = hdfsConnect(“127[……]

Read more

zz分布式文件系统FastDFS架构剖析

   【本文系外部转贴,原文地址:http://www.programmer.com.cn/4380/

FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。 它只 能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、 mogileFS、HDFS、TFS等类Google FS都不是系统级的分布式文件系统,而是应用级的分布式文件存储服务。

FastDFS的设计理念

FastDFS是为互联网应用量身定做的分布式文件系统[……]

Read more

扩展sawzall代码实现自定义接口

使用sawzall开发mr程序虽然很快,不过也有不少限制,尤其对于新手来说,比如不能直接像c++一样调用线程的库,不过它提供了一种扩展开发的方式,我们可以自己修改sawzall代码实现新的功能接口,在下载平台的sawzall代码中,我们就扩展了一种聚合器,两个和我们web相关的功能接口:连接我们的domain service进行聚合域名的识别,根据url进行域名提取。这里以使用我们comm库中的url类进行域名提取为例来说明一下sawzall的功能函数扩展。

首先来看一下sawzall代码的目录结构和其用途说明

Szl的src目录下有如下一些文件夹:
app:包含szl本地化工具[……]

Read more

海量数据分析:Sawzall并行处理(中文版论文)

海量数据分析:Sawzall并行处理(中文版论文)
Google的工程师为了方便内部人员使用MapReduce,研发了一种名为 Sawzall的DSL,同时Hadoop也推出了类似Sawzall的Pig语言,但在语法上面有一定的区别。今天就给大家贴一下Sawall的论文, 值得注意的是其第一作者是UNIX大师之一(Rob Pike)。原文地址,并在这里谢谢译者崮山路上走9遍。

海量数据分析:Sawzall并行处理(中文版论文)

Google的工程师为了方便内部人员使用MapReduce,研发了一种名为SawzallDSL,同时Hadoop也推出了类似Sawzall的[……]

Read more

使用gdb和ps定位程序cpu占用问题

先使用ps获取子进程cpu占用时间,可以看出那个线程cpu占用严重
ps -m -o tid,cpu,time -p 6321
TID CPU     TIME
–   – 00:30:50
6321   – 00:00:00
6322   – 00:30:50
6323   – 00:00:00
6324   – 00:00:00
6325   – 00:00:00
6326   – 00:00:00
6327   – 00:00:00
6328   – 00:00:00

 在用gdb attach到进程上去看这个具体的线程信息
gdb -p  6321
 i[……]

Read more