20161025:今日大数据知识总结(zookeeper回顾+序列化反序列化回顾+avro+zebro项目框架的搭建)

来源:互联网 发布:儿童涂鸦软件 编辑:程序博客网 时间:2024/03/29 09:43

20161025:今日大数据知识总结(zookeeper回顾+序列化反序列化回顾+avro+zebro项目框架的搭建)

1、昨天zookeeper的知识回顾

 

主要包括ZK的安装,ZK的指令,ZKAPI以及ZK的集群

 

 

2、序列化与反序列化

 

序列化的目的:

1.持久化,将数据写入磁盘上。过程:0-1转化成高低电平---电转为磁---磁信息附在磁盘上。达到持久化的目的。

2.进行网络数据的通信。过程跟持久化的过程类似,也是通过将0-1转为高低电平信号。

 

反序列化跟序列化的过程是相反的。

3、AVRO

 

Avro是一Hadoop的子项目,是一个基于二进制的序列化框架。

 

Avro的特点:

1.支持丰富的数据类型,8中基本数据类型,以及六种复杂类型。

2.有一套快速可压缩的二进制模式(可以提高传输速率)

3.支持RPC,远程过程调用协议

4.依赖模式(Schema),avro想实现对象的序列化,rpc。必须按照模式的定义来做

 

利用avro实现序列化

实现步骤:

1.创建maven工程

2.导入pom.xml。这里有avro相关的依赖jar包以及相关的生成插件。

3.建立src/main/avro源目录

4.利用maven,根据avro的模式生成对应的序列化类

5.利用AvroAPI,进行序列化。

 

 

定义avro的模式文件

熟悉avro支持的数据类型。

 

 

利用avro实现rpc(远程过程调用)

远程过程调用(rpc

Rpc就是:客户端调用服务端的某一个方法。即客户端负责传输数据,服务端收到数据并结合具体的算法方法对数据进行处理,然后再将处理的结果返回给客户端。

 

RPC的英文为:remote prodedure call protocol远程过程调用协议

 

 

实现步骤:

1.创建两个maven工程,一个是客户端,一个是服务端

2.利用avrorpc,需要在src/main/avro建立协议文件,这个要根据schema的定义来写

3.利用,生成协议文件对应的java类(是一个接口),一式两份,客户端和服务端分别需要一份。

4.接口有了一份之后,服务端需要额外做的一件事情就是,根据接口新建一个实现类。即算法是在实现类里面写的。

5.调用avroAPI实现rpc

 

Rpc的应用场景:

主要是应用在集群内部,节点之间的网络数据通信。Rpc主内,http主外。

Rpc除了能够做运算的处理之外,还可以起到传递数据的作用(这是rpc的主要作用,做数据的传递);

 

 

示例:利用rpc传递一个对象。

      利用rpc传递一个用map封装的对象。

 

4、zebro项目的框架搭建



 

 

一:从配置文件中读取数据

Properties Pro=new  Properties();

InputStream in=this.class.getResourceAsStream(“env.properties”);

Pro.load(in);

In.close();

If(pro.containsKey(“zebra.dir”)){

Dir=pro.getProperty(“zebra.dir”);

}

 

 

二:获取RZ文件夹中的文件,并截取不带后缀的文件名

File dir=new File(“E://RZ”);

File[] files=dir.listFiles();

For(File file: files){

If(file.getName().endWith(“.ctr”)){

String csvfileName=file.getName().split(“.ctr”)[0]+”.csv”;

File csvFile=new File(dir,csvfileName);

GlobalEnv.getQueue.put(csvFile);

}

}

 

 

0 0
原创粉丝点击