hadoop之yarn Protocol Buffers
来源:互联网 发布:javascript和php哪个好 编辑:程序博客网 时间:2024/04/26 03:11
我学习使用的hadoop源码是2.2版本,里面有一个相关Protocol Buffers的Jar包叫protobuf-java-2.5.0.jar。
使用protobuf生成的java类会import protobuf-java-2.5.0.jar中的类。所以Jar包的版本和protoc.exe版本必须一致。
可以去https://github.com/google/protobuf/releases?after=v2.6.0 找到protoc-2.5.0-win32.zip下载。
注:有一点要说明,你当然可以下载任意的版本,自己利用maven编译出来这个jar也是可以的。
1.下载后配置环境变量。
略
2.我们新建一个包proto,里面编写一个proto文件
option java_package="com.eg3";option java_outer_classname="PersonProto";message Person{required string name = 1;required int32 id = 2;optional string email =3;message PhoneNumber{required string number = 1;optional int32 type = 2;}repeated PhoneNumber phone = 4;}
3.cmd命令中敲入如下代码,生成我们需要的java类
D:\>protoc -I=D:\workspaces\study\hadooptest\src\proto\ --java_out=D:\workspaces\study\hadooptest\src\ D:\workspaces\study\hadooptest\src\proto\person.proto
4.可以测试了,我定义一个Server和一个Client。这样Server生成一个person实例,而Client去获取这个person实例
package com.eg3;import java.io.IOException;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.ProtocolSignature;import org.apache.hadoop.ipc.RPC;import com.eg3.PersonProto.Person;public class Server { interface ClientProtocol extends org.apache.hadoop.ipc.VersionedProtocol{ public static final long versionID = 1L;//不写出错 Person print(); }public static class ClientProtocolImpl implements ClientProtocol{@Overridepublic ProtocolSignature getProtocolSignature(String arg0, long arg1,int arg2) throws IOException {// TODO Auto-generated method stubreturn null;}@Overridepublic long getProtocolVersion(String arg0, long arg1)throws IOException {// TODO Auto-generated method stubreturn ClientProtocol.versionID;}@Overridepublic Person print() {Person p = Person.newBuilder().setName("a").setEmail("b").setId(1).addPhone(Person.PhoneNumber.newBuilder().setNumber("11").setType(0)).addPhone(Person.PhoneNumber.newBuilder().setNumber("22").setType(1)).build();return p;}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();org.apache.hadoop.ipc.RPC.Server server = new RPC.Builder(conf).setProtocol(ClientProtocol.class).setInstance(new ClientProtocolImpl()).setBindAddress("127.0.0.1").setPort(12701).setNumHandlers(2).build();server.start();}}
package com.eg3;import java.net.InetSocketAddress;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import com.eg3.PersonProto.Person;import com.eg3.Server.ClientProtocol;public class Client {public static void main(String[] args) throws Exception {Configuration conf = new Configuration();InetSocketAddress addr = new InetSocketAddress("127.0.0.1",12701);ClientProtocol proxy =(ClientProtocol)RPC.getProxy(ClientProtocol.class,ClientProtocol.versionID,addr,conf);System.out.println(((Person)proxy.print()).getEmail());}}
0 0
- hadoop之yarn Protocol Buffers
- Protocol Buffers之学习
- caffe之Protocol Buffers学习
- [Hadoop]Google 的Protocol Buffers 入门
- protocol buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol Buffers
- Protocol buffers
- protocol buffers
- Protocol Buffers
- Google Protocol Buffers 之.Net应用
- Google Protocol Buffers 之.Net应用
- Google Protocol Buffers 之.Net应用
- TCP/Protobuf之Protocol Buffers配置指南
- html基础加强
- /*自守数 如果某个数的平方的末尾几位数等于这个数,那么就称这个数为自守数。*/
- 第六周--项目三--括号的匹配
- android wifi连接与断开
- acmPOJ--1502
- hadoop之yarn Protocol Buffers
- C++实现KMP算法(修正版,C++风格)
- Mac下搭建SVN服务器
- myeclipse 使用JDBC方法直接访问sql2005
- 第2章 linux学习方法
- Oracle 左连接、右连接、全外连接、(+)号作用
- 51nod 1051 最大子矩阵和 (dp_good)
- POJ 题目3417 Network(LCA转RMQ+树形DP)
- 选择器